Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[stable-3.31] BugFix - E2EE Delete File #14527

Merged
merged 1 commit into from
Feb 11, 2025
Merged
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 @@ -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

/**
Expand Down Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -120,6 +121,10 @@ class PreviewImageActivity : FileActivity(), FileFragment.ContainerActivity, OnR
observeWorkerState()
}

fun showDirectoryWhenDeletionCompleted() {
showDirectoryWhenDeletionCompleted = true
}

fun toggleActionBarVisibility(hide: Boolean) {
if (actionBar == null) {
return
Expand Down Expand Up @@ -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)
}
Expand Down
Loading