Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -1680,6 +1680,10 @@ class FileDisplayActivity :
it.setEmptyListMessage(EmptyListState.ONLY_ON_DEVICE)
}

it.searchEvent?.searchType == SearchRemoteOperation.SearchType.FAVORITE_SEARCH -> {
it.setEmptyListMessage(SearchType.FAVORITE_SEARCH)
}

else -> it.setEmptyListMessage(SearchType.NO_SEARCH)
}
}
Expand Down Expand Up @@ -2163,41 +2167,34 @@ class FileDisplayActivity :
*/
private fun onRemoveFileOperationFinish(operation: RemoveFileOperation, result: RemoteOperationResult<*>) {
deleteBatchTracker.onSingleDeleteFinished()
if (!result.isSuccess && result.isSslRecoverableException) {
mLastSslUntrustedServerResult = result
showUntrustedCertDialog(mLastSslUntrustedServerResult)
return
}

if (result.isSuccess) {
val removedFile = operation.file
tryStopPlaying(removedFile)
val leftFragment = this.leftFragment
val removedFile = operation.file
tryStopPlaying(removedFile)
val leftFragment = this.leftFragment

// check if file is still available, if so do nothing
val fileAvailable = storageManager.fileExists(removedFile.fileId)
if (leftFragment is FileFragment && !fileAvailable && removedFile == leftFragment.file) {
file = storageManager.getFileById(removedFile.parentId)
resetScrollingAndUpdateActionBar()
}
val parentFile = storageManager.getFileById(removedFile.parentId)
if (parentFile != null && parentFile == getCurrentDir()) {
updateListOfFilesFragment()
} else if (leftFragment is OCFileListFragment &&
SearchRemoteOperation.SearchType.FAVORITE_SEARCH == leftFragment.searchEvent?.searchType
) {
leftFragment.adapter?.run {
val file = files.find { it.fileId == removedFile.fileId }
if (file != null) {
val pos = getItemPosition(file)
files.remove(file)
notifyItemRemoved(pos)
}
}
}
supportInvalidateOptionsMenu()
fetchRecommendedFilesIfNeeded(ignoreETag = true, currentDir)
} else {
if (result.isSslRecoverableException) {
mLastSslUntrustedServerResult = result
showUntrustedCertDialog(mLastSslUntrustedServerResult)
// check if file is still available, if so do nothing
val fileAvailable = storageManager.fileExists(removedFile.fileId)
if (leftFragment is FileFragment && !fileAvailable && removedFile == leftFragment.file) {
file = storageManager.getFileById(removedFile.parentId)
resetScrollingAndUpdateActionBar()
}

if (leftFragment is OCFileListFragment) {
leftFragment.adapter?.removeFile(removedFile)

if (leftFragment.adapter?.isEmpty == true) {
val emptyState = leftFragment.searchEvent?.toSearchType() ?: SearchType.NO_SEARCH
leftFragment.setEmptyListMessage(emptyState)
}
}

supportInvalidateOptionsMenu()
fetchRecommendedFilesIfNeeded(ignoreETag = true, currentDir)
}

override fun onAutoUploadFolderRemoved(
Expand Down Expand Up @@ -2341,38 +2338,7 @@ class FileDisplayActivity :
private fun onRenameFileOperationFinish(operation: RenameFileOperation, result: RemoteOperationResult<*>) {
val optionalUser = user
val renamedFile = operation.file
if (result.isSuccess && optionalUser.isPresent) {
val currentUser = optionalUser.get()
val leftFragment = this.leftFragment
if (leftFragment is FileFragment) {
if (leftFragment is FileDetailFragment && renamedFile == leftFragment.file) {
leftFragment.updateFileDetails(renamedFile, currentUser)
showDetails(renamedFile)
} else if (leftFragment is PreviewMediaFragment && renamedFile == leftFragment.file) {
leftFragment.updateFile(renamedFile)
if (PreviewMediaFragment.canBePreviewed(renamedFile)) {
val position = leftFragment.position
startMediaPreview(renamedFile, position, true, true, true, false)
} else {
fileOperationsHelper.openFile(renamedFile)
}
} else if (leftFragment is PreviewTextFragment && renamedFile == leftFragment.file) {
(leftFragment as PreviewTextFileFragment).updateFile(renamedFile)
if (PreviewTextFileFragment.canBePreviewed(renamedFile)) {
startTextPreview(renamedFile, true)
} else {
fileOperationsHelper.openFile(renamedFile)
}
}
}

val file = storageManager.getFileById(renamedFile.parentId)
if (file != null && file == getCurrentDir()) {
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if (file != null && file == getCurrentDir()) {

Is there any reason to use this condition here @tobiasKaminsky ?

updateListOfFilesFragment()
}
refreshGalleryFragmentIfNeeded()
fetchRecommendedFilesIfNeeded(ignoreETag = true, currentDir)
} else {
if (!result.isSuccess || optionalUser.isEmpty) {
DisplayUtils.showSnackMessage(
this,
ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources())
Expand All @@ -2382,6 +2348,53 @@ class FileDisplayActivity :
mLastSslUntrustedServerResult = result
showUntrustedCertDialog(mLastSslUntrustedServerResult)
}
return
}

val currentUser = optionalUser.get()
val leftFragment = this.leftFragment
if (leftFragment is FileFragment) {
onRenameFileOperationFinishForFileFragment(leftFragment, renamedFile, currentUser)
}

updateListOfFilesFragment()
refreshGalleryFragmentIfNeeded()
fetchRecommendedFilesIfNeeded(ignoreETag = true, currentDir)
}

private fun onRenameFileOperationFinishForFileFragment(fragment: FileFragment, ocFile: OCFile, user: User) {
if (fragment.file != ocFile) return

when (fragment) {
is FileDetailFragment -> {
fragment.updateFileDetails(ocFile, user)
showDetails(ocFile)
}

is PreviewMediaFragment -> {
fragment.updateFile(ocFile)
if (PreviewMediaFragment.canBePreviewed(ocFile)) {
startMediaPreview(
ocFile,
fragment.position,
true,
true,
true,
false
)
} else {
fileOperationsHelper.openFile(ocFile)
}
}

is PreviewTextFileFragment -> {
fragment.updateFile(ocFile)
if (PreviewTextFileFragment.canBePreviewed(ocFile)) {
startTextPreview(ocFile, true)
} else {
fileOperationsHelper.openFile(ocFile)
}
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -875,7 +875,9 @@ public void swapDirectory(
public void updateAdapter(List<OCFile> newFiles, OCFile directory) {
Log_OC.d(TAG, "updating the adapter");

mFiles = new ArrayList<>(newFiles);
mFiles.clear();
mFiles.addAll(newFiles);

mFilesAll.clear();
mFilesAll.addAll(mFiles);

Expand Down Expand Up @@ -982,12 +984,6 @@ public void insertFile(@Nullable OCFile file) {
}
}

public void addVirtualFile(@NonNull OCFile file) {
if (mFiles.isEmpty() || !mFiles.contains(file)) {
mFiles.add(file);
}
}

@Override
public void onViewRecycled(@NonNull RecyclerView.ViewHolder holder) {
super.onViewRecycled(holder);
Expand Down Expand Up @@ -1112,4 +1108,18 @@ public void removeAllFiles() {
mFilesAll.clear();
notifyDataSetChanged();
}

@SuppressLint("NotifyDataSetChanged")
public void removeFile(@NonNull OCFile file) {
int position = getItemPosition(file);

mFiles.remove(file);
mFilesAll.remove(file);

if (position != -1) {
notifyItemRemoved(position);
} else {
notifyDataSetChanged();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,6 @@ import com.owncloud.android.utils.KeyboardUtils
import com.owncloud.android.utils.theme.ViewThemeUtils
import javax.inject.Inject

/**
* Dialog to input a new name for an [OCFile] being renamed.
* Triggers the rename operation.
*/
class RenameFileDialogFragment :
DialogFragment(),
DialogInterface.OnClickListener,
Expand All @@ -58,7 +54,7 @@ class RenameFileDialogFragment :
lateinit var currentAccount: CurrentAccountProvider

private lateinit var binding: EditBoxDialogBinding
private var mTargetFile: OCFile? = null
private var targetFile: OCFile? = null
private var positiveButton: MaterialButton? = null
private var fileNames: MutableSet<String>? = null

Expand All @@ -73,15 +69,15 @@ class RenameFileDialogFragment :
}

override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
mTargetFile = requireArguments().getParcelableArgument(ARG_TARGET_FILE, OCFile::class.java)
targetFile = requireArguments().getParcelableArgument(ARG_TARGET_FILE, OCFile::class.java)

val inflater = requireActivity().layoutInflater
binding = EditBoxDialogBinding.inflate(inflater, null, false)

val currentName = mTargetFile?.fileName
val currentName = targetFile?.fileName
binding.userInput.setText(currentName)
viewThemeUtils.material.colorTextInputLayout(binding.userInputContainer)
val extensionStart = if (mTargetFile?.isFolder == true) -1 else currentName?.lastIndexOf('.')
val extensionStart = if (targetFile?.isFolder == true) -1 else currentName?.lastIndexOf('.')
val selectionEnd = if ((extensionStart ?: -1) >= 0) extensionStart else currentName?.length
if (selectionEnd != null) {
binding.userInput.setSelection(0, selectionEnd)
Expand All @@ -97,7 +93,7 @@ class RenameFileDialogFragment :

binding.userInput.addTextChangedListener(
FileNameTextWatcher(
previousFileName = mTargetFile?.fileName,
previousFileName = targetFile?.fileName,
context = binding.userInputContainer.context,
capabilitiesProvider = { oCCapability },
existingFileNamesProvider = { fileNames ?: setOf() },
Expand Down Expand Up @@ -168,17 +164,24 @@ class RenameFileDialogFragment :
return
}

if (mTargetFile?.isOfflineOperation == true) {
fileDataStorageManager.renameOfflineOperation(mTargetFile, newFileName)
typedActivity<FileDisplayActivity>()?.refreshCurrentDirectory()
} else {
typedActivity<FileDisplayActivity>()?.connectivityService?.isNetworkAndServerAvailable { result ->
if (result) {
typedActivity<ComponentsGetter>()?.fileOperationsHelper?.renameFile(mTargetFile, newFileName)
} else {
fileDataStorageManager.addRenameFileOfflineOperation(mTargetFile, newFileName)
typedActivity<FileDisplayActivity>()?.refreshCurrentDirectory()
}
val fda = typedActivity<FileDisplayActivity>()

if (targetFile?.isOfflineOperation == true) {
fileDataStorageManager.renameOfflineOperation(targetFile, newFileName)
fda?.refreshCurrentDirectory()
return
}

fda?.connectivityService?.isNetworkAndServerAvailable { result ->
if (result) {
/*
* result of it triggered by
* [com.owncloud.android.ui.activity.FileDisplayActivity.onRemoteOperationFinish]
*/
typedActivity<ComponentsGetter>()?.fileOperationsHelper?.renameFile(targetFile, newFileName)
} else {
fileDataStorageManager.addRenameFileOfflineOperation(targetFile, newFileName)
fda.refreshCurrentDirectory()
}
}
}
Expand All @@ -188,22 +191,13 @@ class RenameFileDialogFragment :
private const val ARG_TARGET_FILE = "TARGET_FILE"
private const val ARG_PARENT_FOLDER = "PARENT_FOLDER"

/**
* Public factory method to create new RenameFileDialogFragment instances.
*
* @param file File to rename.
* @return Dialog ready to show.
*/
@JvmStatic
fun newInstance(file: OCFile?, parentFolder: OCFile?): RenameFileDialogFragment {
val bundle = Bundle().apply {
putParcelable(ARG_TARGET_FILE, file)
putParcelable(ARG_PARENT_FOLDER, parentFolder)
}

return RenameFileDialogFragment().apply {
arguments = bundle
fun newInstance(file: OCFile?, parentFolder: OCFile?): RenameFileDialogFragment =
RenameFileDialogFragment().apply {
arguments = Bundle().apply {
putParcelable(ARG_TARGET_FILE, file)
putParcelable(ARG_PARENT_FOLDER, parentFolder)
}
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -1818,7 +1818,9 @@ protected void handleSearchEvent(SearchEvent event) {
}

final var activity = getActivity();
if (activity != null) {

// only show loading state first time if app doesn't have active search task
if (activity != null && searchTask == null) {
activity.runOnUiThread(() -> {
getAdapter().removeAllFiles();
setEmptyListMessage(EmptyListState.LOADING);
Expand Down
Loading
Loading