diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/RemoveFilesDialogFragment.kt b/app/src/main/java/com/owncloud/android/ui/dialog/RemoveFilesDialogFragment.kt index c9cb0d25c10e..1d8c3f62840d 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/RemoveFilesDialogFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/dialog/RemoveFilesDialogFragment.kt @@ -17,12 +17,14 @@ import android.view.ActionMode import androidx.appcompat.app.AlertDialog import com.google.android.material.button.MaterialButton import com.nextcloud.client.di.Injectable +import com.nextcloud.utils.extensions.getTypedActivity import com.owncloud.android.R import com.owncloud.android.datamodel.FileDataStorageManager import com.owncloud.android.datamodel.OCFile -import com.owncloud.android.ui.activity.ComponentsGetter +import com.owncloud.android.ui.activity.FileActivity import com.owncloud.android.ui.activity.FileDisplayActivity import com.owncloud.android.ui.dialog.ConfirmationDialogFragment.ConfirmationDialogFragmentListener +import com.owncloud.android.ui.preview.PreviewImageActivity import javax.inject.Inject /** @@ -90,38 +92,36 @@ class RemoveFilesDialogFragment : ConfirmationDialogFragment(), ConfirmationDial fileDataStorageManager.deleteOfflineOperation(it) } - if (requireActivity() is FileDisplayActivity) { - val activity = requireActivity() as FileDisplayActivity - activity.connectivityService.isNetworkAndServerAvailable { result -> - if (result) { - if (files.isNotEmpty()) { - val cg = activity as ComponentsGetter? - cg?.fileOperationsHelper?.removeFiles(files, onlyLocalCopy, false) - } + val fileActivity = getTypedActivity(FileActivity::class.java) + val fda = getTypedActivity(FileDisplayActivity::class.java) - if (offlineFiles.isNotEmpty()) { - activity.refreshCurrentDirectory() - } - } else { - files.forEach { file -> - fileDataStorageManager.addRemoveFileOfflineOperation( - file.decryptedRemotePath, - file.fileName, - file.parentId - ) - } + fileActivity?.connectivityService?.isNetworkAndServerAvailable { result -> + if (result) { + if (files.isNotEmpty()) { + getTypedActivity(PreviewImageActivity::class.java)?.showDirectoryWhenDeletionCompleted() + fileActivity.fileOperationsHelper?.removeFiles(files, onlyLocalCopy, false) + } - activity.refreshCurrentDirectory() + if (offlineFiles.isNotEmpty()) { + fda?.refreshCurrentDirectory() + } + } else { + files.forEach { file -> + fileDataStorageManager.addRemoveFileOfflineOperation( + file.decryptedRemotePath, + file.fileName, + file.parentId + ) } - finishActionMode() + fda?.refreshCurrentDirectory() } + + finishActionMode() } } - override fun onNeutral(callerTag: String?) { - // nothing to do here - } + override fun onNeutral(callerTag: String?) = Unit private fun setActionMode(actionMode: ActionMode?) { this.actionMode = actionMode diff --git a/app/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.kt b/app/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.kt index 9ed0babe6a2d..6c177e6d4466 100644 --- a/app/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.kt +++ b/app/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.kt @@ -80,6 +80,7 @@ class PreviewImageActivity : FileActivity(), FileFragment.ContainerActivity, OnR lateinit var localBroadcastManager: LocalBroadcastManager private var actionBar: ActionBar? = null + private var showDirectoryWhenDeletionCompleted = false override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -120,6 +121,10 @@ class PreviewImageActivity : FileActivity(), FileFragment.ContainerActivity, OnR observeWorkerState() } + fun showDirectoryWhenDeletionCompleted() { + showDirectoryWhenDeletionCompleted = true + } + fun toggleActionBarVisibility(hide: Boolean) { if (actionBar == null) { return @@ -265,6 +270,10 @@ class PreviewImageActivity : FileActivity(), FileFragment.ContainerActivity, OnR viewPager?.setCurrentItem(nextPosition, true) previewImagePagerAdapter?.delete(deletePosition) + + if (showDirectoryWhenDeletionCompleted) { + backToDisplayActivity() + } } else if (operation is SynchronizeFileOperation) { onSynchronizeFileOperationFinish(result) }