From cc8c0f45183003ca9a2c1db6990a91a1467dfa92 Mon Sep 17 00:00:00 2001 From: alperozturk96 Date: Tue, 26 May 2026 13:04:00 +0300 Subject: [PATCH 1/6] no need to update db in fuw, upload file operation already does Signed-off-by: alperozturk96 --- .../com/nextcloud/client/jobs/upload/FileUploadWorker.kt | 9 --------- 1 file changed, 9 deletions(-) diff --git a/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadWorker.kt b/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadWorker.kt index 6524ac85714b..a23d3590eda9 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadWorker.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadWorker.kt @@ -27,7 +27,6 @@ import com.nextcloud.client.preferences.AppPreferences import com.nextcloud.utils.ForegroundServiceHelper import com.nextcloud.utils.extensions.getPercent import com.nextcloud.utils.extensions.toFile -import com.nextcloud.utils.extensions.updateStatus import com.owncloud.android.R import com.owncloud.android.datamodel.ForegroundServiceType import com.owncloud.android.datamodel.SyncedFolder @@ -374,14 +373,6 @@ class FileUploadWorker( fileUploadEventBroadcaster.sendUploadStarted(operation, context) } catch (e: Exception) { Log_OC.e(TAG, "Error uploading", e) - uploadsStorageManager.run { - uploadDao.getUploadById(upload.uploadId, user.accountName)?.let { entity -> - updateStatus( - entity, - UploadsStorageManager.UploadStatus.UPLOAD_FAILED - ) - } - } result = RemoteOperationResult(e) } From 656a89834a28b38d25118477837cd1ffee5a84b0 Mon Sep 17 00:00:00 2001 From: alperozturk96 Date: Tue, 26 May 2026 13:17:26 +0300 Subject: [PATCH 2/6] removeFileIfAlreadyUploaded Signed-off-by: alperozturk96 --- .../upload/FileUploadBroadcastReceiver.kt | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadBroadcastReceiver.kt b/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadBroadcastReceiver.kt index 0e5fcf90e489..830270fa6839 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadBroadcastReceiver.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadBroadcastReceiver.kt @@ -11,8 +11,11 @@ import android.app.NotificationManager import android.content.BroadcastReceiver import android.content.Context import android.content.Intent +import com.nextcloud.client.account.UserAccountManagerImpl import com.owncloud.android.MainApp +import com.owncloud.android.datamodel.FileDataStorageManager import com.owncloud.android.datamodel.UploadsStorageManager +import com.owncloud.android.lib.common.utils.Log_OC import javax.inject.Inject class FileUploadBroadcastReceiver : BroadcastReceiver() { @@ -21,12 +24,12 @@ class FileUploadBroadcastReceiver : BroadcastReceiver() { lateinit var uploadsStorageManager: UploadsStorageManager companion object { - // region cancel or remove actions + private const val TAG = "FileUploadBroadcastReceiver" + const val UPLOAD_ID = "UPLOAD_ID" const val ACCOUNT_NAME = "ACCOUNT_NAME" const val REMOTE_PATH = "REMOTE_PATH" const val REMOVE = "REMOVE" - // endregion } @Suppress("ReturnCount") @@ -57,9 +60,12 @@ class FileUploadBroadcastReceiver : BroadcastReceiver() { val remove = intent.getBooleanExtra(REMOVE, false) + Log_OC.d(TAG, "upload: $remotePath removed: $remove") + FileUploadWorker.cancelUpload(remotePath, accountName) if (remove) { + removeFileIfAlreadyUploaded(context, remotePath) uploadsStorageManager.removeUpload(uploadId) } else { FileUploadHelper.instance().updateUploadStatus( @@ -73,4 +79,13 @@ class FileUploadBroadcastReceiver : BroadcastReceiver() { val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager notificationManager.cancel(uploadId.toInt()) } + + @Suppress("DEPRECATION") + private fun removeFileIfAlreadyUploaded(context: Context, remotePath: String) { + val userAccountManager = UserAccountManagerImpl.fromContext(context) + val user = userAccountManager.user + val storageManager = FileDataStorageManager(user, context.contentResolver) + val ocFile = storageManager.getFileByPath(remotePath) ?: return + storageManager.removeFile(ocFile, true, false) + } } From 22b3efb9edddb79aa79d4ee6b6422a462795b94e Mon Sep 17 00:00:00 2001 From: alperozturk96 Date: Tue, 26 May 2026 13:33:46 +0300 Subject: [PATCH 3/6] wip Signed-off-by: alperozturk96 --- .../nextcloud/client/jobs/upload/UploadBroadcastAction.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/nextcloud/client/jobs/upload/UploadBroadcastAction.kt b/app/src/main/java/com/nextcloud/client/jobs/upload/UploadBroadcastAction.kt index e502484e4144..b1778d23c453 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/upload/UploadBroadcastAction.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/upload/UploadBroadcastAction.kt @@ -12,6 +12,7 @@ import android.content.Context import android.content.Intent import androidx.core.app.NotificationCompat import com.owncloud.android.R +import com.owncloud.android.lib.common.utils.Log_OC import com.owncloud.android.operations.UploadFileOperation sealed class UploadBroadcastAction { @@ -48,7 +49,10 @@ sealed class UploadBroadcastAction { setPackage(context.packageName) } - val requestCode = if (remove) operation.ocUploadId.toInt() + 1000 else operation.ocUploadId.toInt() + val uploadId = operation.ocUploadId.toInt() + val requestCode = if (remove) uploadId + 1000 else uploadId + + Log_OC.i("UploadBroadcastAction", "broadcast action code: $requestCode") return PendingIntent.getBroadcast( context, From 35268c204bc56d26d8580e51f8538373d9491a6e Mon Sep 17 00:00:00 2001 From: alperozturk96 Date: Tue, 26 May 2026 14:22:38 +0300 Subject: [PATCH 4/6] wip Signed-off-by: alperozturk96 --- .../java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt b/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt index b4dea7a2b062..c0575ce591b0 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt @@ -263,6 +263,10 @@ class FileUploadHelper { nameCollisionPolicy: NameCollisionPolicy, showSameFileAlreadyExistsNotification: Boolean = true ) { + // TODO + localPaths.forEach { + Log_OC.e("CHECK", "ORDER: " + it) + } val uploads = localPaths.mapIndexed { index, localPath -> fun createOCUpload(): OCUpload { val result = OCUpload(localPath, remotePaths[index], user.accountName).apply { From f2133d3cda8b04a6d9d2f80d3b75c509b9eb8bae Mon Sep 17 00:00:00 2001 From: alperozturk96 Date: Tue, 26 May 2026 15:25:19 +0300 Subject: [PATCH 5/6] fix user file selection order Signed-off-by: alperozturk96 --- .../com/owncloud/android/ui/adapter/LocalFileListAdapter.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/LocalFileListAdapter.java b/app/src/main/java/com/owncloud/android/ui/adapter/LocalFileListAdapter.java index 676f911e6f49..25952309923e 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/LocalFileListAdapter.java +++ b/app/src/main/java/com/owncloud/android/ui/adapter/LocalFileListAdapter.java @@ -39,7 +39,7 @@ import java.io.File; import java.util.ArrayList; -import java.util.HashSet; +import java.util.LinkedHashSet; import java.util.List; import java.util.Locale; import java.util.Set; @@ -88,7 +88,7 @@ public LocalFileListAdapter(boolean localFolderPickerMode, mContext = context; mLocalFolderPicker = localFolderPickerMode; this.localFileListFragmentInterface = localFileListFragmentInterface; - checkedFiles = new HashSet<>(); + checkedFiles = new LinkedHashSet<>(); this.viewThemeUtils = viewThemeUtils; this.isWithinEncryptedFolder = isWithinEncryptedFolder; setHasStableIds(true); From 26d8dc4c1950b4e82966a76809ff44e8ad588f76 Mon Sep 17 00:00:00 2001 From: alperozturk96 Date: Tue, 26 May 2026 15:25:32 +0300 Subject: [PATCH 6/6] fix user file selection order Signed-off-by: alperozturk96 --- .../java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt b/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt index c0575ce591b0..b4dea7a2b062 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt @@ -263,10 +263,6 @@ class FileUploadHelper { nameCollisionPolicy: NameCollisionPolicy, showSameFileAlreadyExistsNotification: Boolean = true ) { - // TODO - localPaths.forEach { - Log_OC.e("CHECK", "ORDER: " + it) - } val uploads = localPaths.mapIndexed { index, localPath -> fun createOCUpload(): OCUpload { val result = OCUpload(localPath, remotePaths[index], user.accountName).apply {