From 190d0a9bab45d4015d5a2f8a3fa6652ed6000333 Mon Sep 17 00:00:00 2001 From: alperozturk Date: Mon, 11 Nov 2024 11:50:20 +0100 Subject: [PATCH 1/9] add mCancellationRequested call Signed-off-by: alperozturk --- .../nextcloud/client/jobs/InternalTwoWaySyncWork.kt | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/nextcloud/client/jobs/InternalTwoWaySyncWork.kt b/app/src/main/java/com/nextcloud/client/jobs/InternalTwoWaySyncWork.kt index fda84ce36159..4de97810bac3 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/InternalTwoWaySyncWork.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/InternalTwoWaySyncWork.kt @@ -32,6 +32,7 @@ class InternalTwoWaySyncWork( private val appPreferences: AppPreferences ) : Worker(context, params) { private var shouldRun = true + private var operation: SynchronizeFolderOperation? = null override fun doWork(): Result { Log_OC.d(TAG, "Worker started!") @@ -66,10 +67,10 @@ class InternalTwoWaySyncWork( } Log_OC.d(TAG, "Folder ${folder.remotePath}: started!") - val operation = SynchronizeFolderOperation(context, folder.remotePath, user, fileDataStorageManager) - .execute(context) + operation = SynchronizeFolderOperation(context, folder.remotePath, user, fileDataStorageManager) + val operationResult = operation?.execute(context) - if (operation.isSuccess) { + if (operationResult?.isSuccess == true) { Log_OC.d(TAG, "Folder ${folder.remotePath}: finished!") } else { Log_OC.d(TAG, "Folder ${folder.remotePath} failed!") @@ -77,7 +78,10 @@ class InternalTwoWaySyncWork( } folder.apply { - internalFolderSyncResult = operation.code.toString() + operationResult?.let { + internalFolderSyncResult = it.code.toString() + } + internalFolderSyncTimestamp = System.currentTimeMillis() } @@ -96,6 +100,7 @@ class InternalTwoWaySyncWork( override fun onStopped() { Log_OC.d(TAG, "OnStopped of worker called!") + operation?.cancel() shouldRun = false super.onStopped() } From f15c017174f8a24bdb542171328345986d00d441 Mon Sep 17 00:00:00 2001 From: alperozturk Date: Mon, 11 Nov 2024 11:58:05 +0100 Subject: [PATCH 2/9] dont use FileDownloadWorker in SynchronizeFolderOperation Signed-off-by: alperozturk --- .../SynchronizeFolderOperation.java | 26 ++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/owncloud/android/operations/SynchronizeFolderOperation.java b/app/src/main/java/com/owncloud/android/operations/SynchronizeFolderOperation.java index c4e4bf05c06a..1f9d99975e55 100644 --- a/app/src/main/java/com/owncloud/android/operations/SynchronizeFolderOperation.java +++ b/app/src/main/java/com/owncloud/android/operations/SynchronizeFolderOperation.java @@ -15,7 +15,6 @@ import android.text.TextUtils; import com.nextcloud.client.account.User; -import com.nextcloud.client.jobs.download.FileDownloadHelper; import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.datamodel.e2e.v1.decrypted.DecryptedFolderMetadataFileV1; @@ -40,7 +39,6 @@ import java.util.Map; import java.util.Vector; import java.util.concurrent.atomic.AtomicBoolean; -import java.util.function.Consumer; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; @@ -441,8 +439,28 @@ private void syncContents() throws OperationCancelledException { } private void startDirectDownloads() { - final var fileDownloadHelper = FileDownloadHelper.Companion.instance(); - mFilesForDirectDownload.forEach(file -> fileDownloadHelper.downloadFile(user, file)); + try { + for (OCFile file: mFilesForDirectDownload) { + if (file != null) { + // delay 1 second before each download + Thread.sleep(1000); + + final var operation = new DownloadFileOperation(user, file, mContext); + var result = operation.execute(getClient()); + + String filename = file.getFileName(); + if (filename != null) { + if (result.isSuccess()) { + Log_OC.d(TAG, "startDirectDownloads completed for: " + file.getFileName()); + } else { + Log_OC.d(TAG, "startDirectDownloads failed for: " + file.getFileName()); + } + } + } + } + } catch (Exception e) { + Log_OC.d(TAG, "Exception caught at startDirectDownloads" + e); + } } /** From e48cb5aee41f82f65cce833e1580674a6725de63 Mon Sep 17 00:00:00 2001 From: alperozturk Date: Mon, 11 Nov 2024 11:59:29 +0100 Subject: [PATCH 3/9] dont use FileDownloadWorker in SynchronizeFileOperation Signed-off-by: alperozturk --- .../operations/SynchronizeFileOperation.java | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/owncloud/android/operations/SynchronizeFileOperation.java b/app/src/main/java/com/owncloud/android/operations/SynchronizeFileOperation.java index 6caf81f4714b..47a6df9530f1 100644 --- a/app/src/main/java/com/owncloud/android/operations/SynchronizeFileOperation.java +++ b/app/src/main/java/com/owncloud/android/operations/SynchronizeFileOperation.java @@ -17,7 +17,6 @@ import android.text.TextUtils; import com.nextcloud.client.account.User; -import com.nextcloud.client.jobs.download.FileDownloadHelper; import com.nextcloud.client.jobs.upload.FileUploadHelper; import com.nextcloud.client.jobs.upload.FileUploadWorker; import com.owncloud.android.datamodel.FileDataStorageManager; @@ -296,10 +295,22 @@ private void requestForUpload(OCFile file) { private void requestForDownload(OCFile file) { Log_OC.d("InternalTwoWaySyncWork", "download file: " + file.getFileName()); - - FileDownloadHelper.Companion.instance().downloadFile( - mUser, - file); + + try { + final var operation = new DownloadFileOperation(mUser, file, mContext); + var result = operation.execute(getClient()); + + String filename = file.getFileName(); + if (filename != null) { + if (result.isSuccess()) { + Log_OC.d(TAG, "requestForDownload completed for: " + file.getFileName()); + } else { + Log_OC.d(TAG, "requestForDownload failed for: " + file.getFileName()); + } + } + } catch (Exception e) { + Log_OC.d(TAG, "Exception caught at requestForDownload" + e); + } mTransferWasRequested = true; } From db547427f4a3861ebad8dcc0fc138ef6677d50d6 Mon Sep 17 00:00:00 2001 From: alperozturk Date: Mon, 11 Nov 2024 12:04:02 +0100 Subject: [PATCH 4/9] fix usage of mTransferWasRequested Signed-off-by: alperozturk --- .../owncloud/android/operations/SynchronizeFileOperation.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/owncloud/android/operations/SynchronizeFileOperation.java b/app/src/main/java/com/owncloud/android/operations/SynchronizeFileOperation.java index 47a6df9530f1..4ca4753f35a7 100644 --- a/app/src/main/java/com/owncloud/android/operations/SynchronizeFileOperation.java +++ b/app/src/main/java/com/owncloud/android/operations/SynchronizeFileOperation.java @@ -300,6 +300,8 @@ private void requestForDownload(OCFile file) { final var operation = new DownloadFileOperation(mUser, file, mContext); var result = operation.execute(getClient()); + mTransferWasRequested = true; + String filename = file.getFileName(); if (filename != null) { if (result.isSuccess()) { @@ -312,7 +314,7 @@ private void requestForDownload(OCFile file) { Log_OC.d(TAG, "Exception caught at requestForDownload" + e); } - mTransferWasRequested = true; + } public boolean transferWasRequested() { From dbcfcca2592efa238975cb46d8aab86c8cc72599 Mon Sep 17 00:00:00 2001 From: alperozturk Date: Mon, 11 Nov 2024 12:46:58 +0100 Subject: [PATCH 5/9] only use FileDownloadWorker via manual sync Signed-off-by: alperozturk --- .../client/jobs/InternalTwoWaySyncWork.kt | 2 +- .../nextcloud/client/jobs/OfflineSyncWork.kt | 3 +- .../operations/SynchronizeFileOperation.java | 39 +++++++++++-------- .../SynchronizeFolderOperation.java | 35 ++++++++++------- .../android/services/OperationsService.java | 6 ++- 5 files changed, 51 insertions(+), 34 deletions(-) diff --git a/app/src/main/java/com/nextcloud/client/jobs/InternalTwoWaySyncWork.kt b/app/src/main/java/com/nextcloud/client/jobs/InternalTwoWaySyncWork.kt index 4de97810bac3..1d1c89fd9d3f 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/InternalTwoWaySyncWork.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/InternalTwoWaySyncWork.kt @@ -67,7 +67,7 @@ class InternalTwoWaySyncWork( } Log_OC.d(TAG, "Folder ${folder.remotePath}: started!") - operation = SynchronizeFolderOperation(context, folder.remotePath, user, fileDataStorageManager) + operation = SynchronizeFolderOperation(context, folder.remotePath, user, fileDataStorageManager, true) val operationResult = operation?.execute(context) if (operationResult?.isSuccess == true) { diff --git a/app/src/main/java/com/nextcloud/client/jobs/OfflineSyncWork.kt b/app/src/main/java/com/nextcloud/client/jobs/OfflineSyncWork.kt index 84663a97866b..99f6481cf94b 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/OfflineSyncWork.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/OfflineSyncWork.kt @@ -77,7 +77,8 @@ class OfflineSyncWork constructor( user, true, context, - storageManager + storageManager, + true ) synchronizeFileOperation.execute(context) } diff --git a/app/src/main/java/com/owncloud/android/operations/SynchronizeFileOperation.java b/app/src/main/java/com/owncloud/android/operations/SynchronizeFileOperation.java index 4ca4753f35a7..62fa46b36d28 100644 --- a/app/src/main/java/com/owncloud/android/operations/SynchronizeFileOperation.java +++ b/app/src/main/java/com/owncloud/android/operations/SynchronizeFileOperation.java @@ -17,6 +17,7 @@ import android.text.TextUtils; import com.nextcloud.client.account.User; +import com.nextcloud.client.jobs.download.FileDownloadHelper; import com.nextcloud.client.jobs.upload.FileUploadHelper; import com.nextcloud.client.jobs.upload.FileUploadWorker; import com.owncloud.android.datamodel.FileDataStorageManager; @@ -45,6 +46,8 @@ public class SynchronizeFileOperation extends SyncOperation { private boolean mSyncFileContents; private Context mContext; private boolean mTransferWasRequested; + private boolean syncForInternalTwoWaySyncWorker; + /** * When 'false', uploads to the server are not done; only downloads or conflict detection. This is a temporal @@ -73,7 +76,8 @@ public SynchronizeFileOperation( User user, boolean syncFileContents, Context context, - FileDataStorageManager storageManager) { + FileDataStorageManager storageManager, + boolean syncForInternalTwoWaySyncWorker) { super(storageManager); mRemotePath = remotePath; @@ -83,6 +87,7 @@ public SynchronizeFileOperation( mSyncFileContents = syncFileContents; mContext = context; mAllowUploads = true; + this.syncForInternalTwoWaySyncWorker = syncForInternalTwoWaySyncWorker; } @@ -294,27 +299,29 @@ private void requestForUpload(OCFile file) { } private void requestForDownload(OCFile file) { - Log_OC.d("InternalTwoWaySyncWork", "download file: " + file.getFileName()); + if (syncForInternalTwoWaySyncWorker) { + Log_OC.d("InternalTwoWaySyncWork", "download file: " + file.getFileName()); - try { - final var operation = new DownloadFileOperation(mUser, file, mContext); - var result = operation.execute(getClient()); + try { + final var operation = new DownloadFileOperation(mUser, file, mContext); + var result = operation.execute(getClient()); - mTransferWasRequested = true; + mTransferWasRequested = true; - String filename = file.getFileName(); - if (filename != null) { - if (result.isSuccess()) { - Log_OC.d(TAG, "requestForDownload completed for: " + file.getFileName()); - } else { - Log_OC.d(TAG, "requestForDownload failed for: " + file.getFileName()); + String filename = file.getFileName(); + if (filename != null) { + if (result.isSuccess()) { + Log_OC.d(TAG, "requestForDownload completed for: " + file.getFileName()); + } else { + Log_OC.d(TAG, "requestForDownload failed for: " + file.getFileName()); + } } + } catch (Exception e) { + Log_OC.d(TAG, "Exception caught at requestForDownload" + e); } - } catch (Exception e) { - Log_OC.d(TAG, "Exception caught at requestForDownload" + e); + } else { + FileDownloadHelper.Companion.instance().downloadFile(mUser, file); } - - } public boolean transferWasRequested() { diff --git a/app/src/main/java/com/owncloud/android/operations/SynchronizeFolderOperation.java b/app/src/main/java/com/owncloud/android/operations/SynchronizeFolderOperation.java index 1f9d99975e55..c187bf2852e0 100644 --- a/app/src/main/java/com/owncloud/android/operations/SynchronizeFolderOperation.java +++ b/app/src/main/java/com/owncloud/android/operations/SynchronizeFolderOperation.java @@ -15,6 +15,7 @@ import android.text.TextUtils; import com.nextcloud.client.account.User; +import com.nextcloud.client.jobs.download.FileDownloadHelper; import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.datamodel.e2e.v1.decrypted.DecryptedFolderMetadataFileV1; @@ -85,6 +86,8 @@ public class SynchronizeFolderOperation extends SyncOperation { private final AtomicBoolean mCancellationRequested; + private final boolean syncForInternalTwoWaySyncWorker; + /** * Creates a new instance of {@link SynchronizeFolderOperation}. * @@ -95,7 +98,8 @@ public class SynchronizeFolderOperation extends SyncOperation { public SynchronizeFolderOperation(Context context, String remotePath, User user, - FileDataStorageManager storageManager) { + FileDataStorageManager storageManager, + boolean syncForInternalTwoWaySyncWorker) { super(storageManager); mRemotePath = remotePath; @@ -105,6 +109,7 @@ public SynchronizeFolderOperation(Context context, mFilesForDirectDownload = new Vector<>(); mFilesToSyncContents = new Vector<>(); mCancellationRequested = new AtomicBoolean(false); + this.syncForInternalTwoWaySyncWorker = syncForInternalTwoWaySyncWorker; } @@ -439,27 +444,29 @@ private void syncContents() throws OperationCancelledException { } private void startDirectDownloads() { - try { - for (OCFile file: mFilesForDirectDownload) { - if (file != null) { - // delay 1 second before each download - Thread.sleep(1000); + if (syncForInternalTwoWaySyncWorker) { + try { + for (OCFile file: mFilesForDirectDownload) { + if (file == null) continue; final var operation = new DownloadFileOperation(user, file, mContext); var result = operation.execute(getClient()); String filename = file.getFileName(); - if (filename != null) { - if (result.isSuccess()) { - Log_OC.d(TAG, "startDirectDownloads completed for: " + file.getFileName()); - } else { - Log_OC.d(TAG, "startDirectDownloads failed for: " + file.getFileName()); - } + if (filename == null) continue; + + if (result.isSuccess()) { + Log_OC.d(TAG, "startDirectDownloads completed for: " + file.getFileName()); + } else { + Log_OC.d(TAG, "startDirectDownloads failed for: " + file.getFileName()); } } + } catch (Exception e) { + Log_OC.d(TAG, "Exception caught at startDirectDownloads" + e); } - } catch (Exception e) { - Log_OC.d(TAG, "Exception caught at startDirectDownloads" + e); + } else { + final var fileDownloadHelper = FileDownloadHelper.Companion.instance(); + mFilesForDirectDownload.forEach(file -> fileDownloadHelper.downloadFile(user, file)); } } diff --git a/app/src/main/java/com/owncloud/android/services/OperationsService.java b/app/src/main/java/com/owncloud/android/services/OperationsService.java index 648c7ce1b444..0cd2d5e30a31 100644 --- a/app/src/main/java/com/owncloud/android/services/OperationsService.java +++ b/app/src/main/java/com/owncloud/android/services/OperationsService.java @@ -698,7 +698,8 @@ private Pair newOperation(Intent operationIntent) { user, syncFileContents, getApplicationContext(), - fileDataStorageManager); + fileDataStorageManager, + false); break; case ACTION_SYNC_FOLDER: @@ -707,7 +708,8 @@ private Pair newOperation(Intent operationIntent) { this, // TODO remove this dependency from construction time remotePath, user, - fileDataStorageManager + fileDataStorageManager, + false ); break; From d8e951ecaaacc9c7e8a0e01e24ff4b1a0bbe736c Mon Sep 17 00:00:00 2001 From: alperozturk Date: Mon, 11 Nov 2024 12:53:23 +0100 Subject: [PATCH 6/9] add missing constructor usages Signed-off-by: alperozturk --- .../android/operations/SynchronizeFileOperation.java | 10 ++++++---- .../android/operations/SynchronizeFolderOperation.java | 6 ++++-- .../android/ui/helpers/FileOperationsHelper.java | 6 ++++-- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/owncloud/android/operations/SynchronizeFileOperation.java b/app/src/main/java/com/owncloud/android/operations/SynchronizeFileOperation.java index 62fa46b36d28..cdd5b7953593 100644 --- a/app/src/main/java/com/owncloud/android/operations/SynchronizeFileOperation.java +++ b/app/src/main/java/com/owncloud/android/operations/SynchronizeFileOperation.java @@ -114,7 +114,8 @@ public SynchronizeFileOperation( User user, boolean syncFileContents, Context context, - FileDataStorageManager storageManager) { + FileDataStorageManager storageManager, + boolean syncForInternalTwoWaySyncWorker) { super(storageManager); mLocalFile = localFile; @@ -134,6 +135,7 @@ public SynchronizeFileOperation( mSyncFileContents = syncFileContents; mContext = context; mAllowUploads = true; + this.syncForInternalTwoWaySyncWorker = syncForInternalTwoWaySyncWorker; } @@ -163,9 +165,9 @@ public SynchronizeFileOperation( boolean syncFileContents, boolean allowUploads, Context context, - FileDataStorageManager storageManager) { - - this(localFile, serverFile, user, syncFileContents, context, storageManager); + FileDataStorageManager storageManager, + boolean syncForInternalTwoWaySyncWorker) { + this(localFile, serverFile, user, syncFileContents, context, storageManager, syncForInternalTwoWaySyncWorker); mAllowUploads = allowUploads; } diff --git a/app/src/main/java/com/owncloud/android/operations/SynchronizeFolderOperation.java b/app/src/main/java/com/owncloud/android/operations/SynchronizeFolderOperation.java index c187bf2852e0..383ec7a03402 100644 --- a/app/src/main/java/com/owncloud/android/operations/SynchronizeFolderOperation.java +++ b/app/src/main/java/com/owncloud/android/operations/SynchronizeFolderOperation.java @@ -409,7 +409,8 @@ private void classifyFileForLaterSyncOrDownload(OCFile remoteFile, OCFile localF user, true, mContext, - getStorageManager() + getStorageManager(), + syncForInternalTwoWaySyncWorker ); mFilesToSyncContents.add(operation); } @@ -430,7 +431,8 @@ private void prepareOpsFromLocalKnowledge() throws OperationCancelledException { user, true, mContext, - getStorageManager() + getStorageManager(), + syncForInternalTwoWaySyncWorker ); mFilesToSyncContents.add(operation); } diff --git a/app/src/main/java/com/owncloud/android/ui/helpers/FileOperationsHelper.java b/app/src/main/java/com/owncloud/android/ui/helpers/FileOperationsHelper.java index 25a5e4a739f4..6b765c2afd2d 100755 --- a/app/src/main/java/com/owncloud/android/ui/helpers/FileOperationsHelper.java +++ b/app/src/main/java/com/owncloud/android/ui/helpers/FileOperationsHelper.java @@ -225,7 +225,8 @@ private void syncFile(OCFile file, User user, FileDataStorageManager storageMana user, true, fileActivity, - storageManager); + storageManager, + false); RemoteOperationResult result = sfo.execute(fileActivity); if (result.getCode() == RemoteOperationResult.ResultCode.SYNC_CONFLICT) { @@ -303,7 +304,8 @@ public void run() { user, true, fileActivity, - storageManager); + storageManager, + false); RemoteOperationResult result = sfo.execute(fileActivity); fileActivity.dismissLoadingDialog(); if (result.getCode() == RemoteOperationResult.ResultCode.SYNC_CONFLICT) { From 846b70191638cf9eb5a8ed546bbf08ab73a43f9f Mon Sep 17 00:00:00 2001 From: alperozturk Date: Mon, 11 Nov 2024 14:39:03 +0100 Subject: [PATCH 7/9] rename boolean flag Signed-off-by: alperozturk --- .../operations/SynchronizeFileOperation.java | 16 ++++++++-------- .../operations/SynchronizeFolderOperation.java | 12 ++++++------ 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/com/owncloud/android/operations/SynchronizeFileOperation.java b/app/src/main/java/com/owncloud/android/operations/SynchronizeFileOperation.java index cdd5b7953593..7c66d1128f8e 100644 --- a/app/src/main/java/com/owncloud/android/operations/SynchronizeFileOperation.java +++ b/app/src/main/java/com/owncloud/android/operations/SynchronizeFileOperation.java @@ -46,7 +46,7 @@ public class SynchronizeFileOperation extends SyncOperation { private boolean mSyncFileContents; private Context mContext; private boolean mTransferWasRequested; - private boolean syncForInternalTwoWaySyncWorker; + private final boolean syncInBackgroundWorker; /** @@ -77,7 +77,7 @@ public SynchronizeFileOperation( boolean syncFileContents, Context context, FileDataStorageManager storageManager, - boolean syncForInternalTwoWaySyncWorker) { + boolean syncInBackgroundWorker) { super(storageManager); mRemotePath = remotePath; @@ -87,7 +87,7 @@ public SynchronizeFileOperation( mSyncFileContents = syncFileContents; mContext = context; mAllowUploads = true; - this.syncForInternalTwoWaySyncWorker = syncForInternalTwoWaySyncWorker; + this.syncInBackgroundWorker = syncInBackgroundWorker; } @@ -115,7 +115,7 @@ public SynchronizeFileOperation( boolean syncFileContents, Context context, FileDataStorageManager storageManager, - boolean syncForInternalTwoWaySyncWorker) { + boolean syncInBackgroundWorker) { super(storageManager); mLocalFile = localFile; @@ -135,7 +135,7 @@ public SynchronizeFileOperation( mSyncFileContents = syncFileContents; mContext = context; mAllowUploads = true; - this.syncForInternalTwoWaySyncWorker = syncForInternalTwoWaySyncWorker; + this.syncInBackgroundWorker = syncInBackgroundWorker; } @@ -166,8 +166,8 @@ public SynchronizeFileOperation( boolean allowUploads, Context context, FileDataStorageManager storageManager, - boolean syncForInternalTwoWaySyncWorker) { - this(localFile, serverFile, user, syncFileContents, context, storageManager, syncForInternalTwoWaySyncWorker); + boolean syncInBackgroundWorker) { + this(localFile, serverFile, user, syncFileContents, context, storageManager, syncInBackgroundWorker); mAllowUploads = allowUploads; } @@ -301,7 +301,7 @@ private void requestForUpload(OCFile file) { } private void requestForDownload(OCFile file) { - if (syncForInternalTwoWaySyncWorker) { + if (syncInBackgroundWorker) { Log_OC.d("InternalTwoWaySyncWork", "download file: " + file.getFileName()); try { diff --git a/app/src/main/java/com/owncloud/android/operations/SynchronizeFolderOperation.java b/app/src/main/java/com/owncloud/android/operations/SynchronizeFolderOperation.java index 383ec7a03402..3af3f7e1ac67 100644 --- a/app/src/main/java/com/owncloud/android/operations/SynchronizeFolderOperation.java +++ b/app/src/main/java/com/owncloud/android/operations/SynchronizeFolderOperation.java @@ -86,7 +86,7 @@ public class SynchronizeFolderOperation extends SyncOperation { private final AtomicBoolean mCancellationRequested; - private final boolean syncForInternalTwoWaySyncWorker; + private final boolean syncInBackgroundWorker; /** * Creates a new instance of {@link SynchronizeFolderOperation}. @@ -99,7 +99,7 @@ public SynchronizeFolderOperation(Context context, String remotePath, User user, FileDataStorageManager storageManager, - boolean syncForInternalTwoWaySyncWorker) { + boolean syncInBackgroundWorker) { super(storageManager); mRemotePath = remotePath; @@ -109,7 +109,7 @@ public SynchronizeFolderOperation(Context context, mFilesForDirectDownload = new Vector<>(); mFilesToSyncContents = new Vector<>(); mCancellationRequested = new AtomicBoolean(false); - this.syncForInternalTwoWaySyncWorker = syncForInternalTwoWaySyncWorker; + this.syncInBackgroundWorker = syncInBackgroundWorker; } @@ -410,7 +410,7 @@ private void classifyFileForLaterSyncOrDownload(OCFile remoteFile, OCFile localF true, mContext, getStorageManager(), - syncForInternalTwoWaySyncWorker + syncInBackgroundWorker ); mFilesToSyncContents.add(operation); } @@ -432,7 +432,7 @@ private void prepareOpsFromLocalKnowledge() throws OperationCancelledException { true, mContext, getStorageManager(), - syncForInternalTwoWaySyncWorker + syncInBackgroundWorker ); mFilesToSyncContents.add(operation); } @@ -446,7 +446,7 @@ private void syncContents() throws OperationCancelledException { } private void startDirectDownloads() { - if (syncForInternalTwoWaySyncWorker) { + if (syncInBackgroundWorker) { try { for (OCFile file: mFilesForDirectDownload) { if (file == null) continue; From c45d8394e25d6b960d55c92702132c6858242085 Mon Sep 17 00:00:00 2001 From: alperozturk Date: Mon, 11 Nov 2024 14:42:25 +0100 Subject: [PATCH 8/9] add curly bracket for condition checks Signed-off-by: alperozturk --- .../android/operations/SynchronizeFolderOperation.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/owncloud/android/operations/SynchronizeFolderOperation.java b/app/src/main/java/com/owncloud/android/operations/SynchronizeFolderOperation.java index 3af3f7e1ac67..a4cf8d9358fc 100644 --- a/app/src/main/java/com/owncloud/android/operations/SynchronizeFolderOperation.java +++ b/app/src/main/java/com/owncloud/android/operations/SynchronizeFolderOperation.java @@ -449,13 +449,17 @@ private void startDirectDownloads() { if (syncInBackgroundWorker) { try { for (OCFile file: mFilesForDirectDownload) { - if (file == null) continue; + if (file == null) { + continue; + } final var operation = new DownloadFileOperation(user, file, mContext); var result = operation.execute(getClient()); String filename = file.getFileName(); - if (filename == null) continue; + if (filename == null) { + continue; + } if (result.isSuccess()) { Log_OC.d(TAG, "startDirectDownloads completed for: " + file.getFileName()); From b85affb3f975b087548a2655b55ecfdff01a0dba Mon Sep 17 00:00:00 2001 From: alperozturk Date: Mon, 11 Nov 2024 14:44:07 +0100 Subject: [PATCH 9/9] check mCancellationRequested in for loop Signed-off-by: alperozturk --- .../android/operations/SynchronizeFolderOperation.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/java/com/owncloud/android/operations/SynchronizeFolderOperation.java b/app/src/main/java/com/owncloud/android/operations/SynchronizeFolderOperation.java index a4cf8d9358fc..1879e8b042c7 100644 --- a/app/src/main/java/com/owncloud/android/operations/SynchronizeFolderOperation.java +++ b/app/src/main/java/com/owncloud/android/operations/SynchronizeFolderOperation.java @@ -449,6 +449,12 @@ private void startDirectDownloads() { if (syncInBackgroundWorker) { try { for (OCFile file: mFilesForDirectDownload) { + synchronized (mCancellationRequested) { + if (mCancellationRequested.get()) { + break; + } + } + if (file == null) { continue; }