From b834d9c4a5da15d318c6d19bdc696fafa453b3c8 Mon Sep 17 00:00:00 2001 From: Jonas Mayer Date: Tue, 2 Apr 2024 10:52:14 +0200 Subject: [PATCH 1/3] Fix by Alper Signed-off-by: Jonas Mayer --- .../java/com/nextcloud/client/jobs/OfflineSyncWork.kt | 8 ++++++-- .../nextcloud/client/jobs/download/FileDownloadHelper.kt | 6 +++--- .../main/java/com/owncloud/android/datamodel/OCFile.java | 9 --------- .../android/operations/DownloadFileOperation.java | 8 +++++++- .../owncloud/android/operations/UploadFileOperation.java | 2 +- .../android/ui/dialog/RemoveFilesDialogFragment.java | 4 +--- 6 files changed, 18 insertions(+), 19 deletions(-) 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 1c36492f359c..bee25356829d 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/OfflineSyncWork.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/OfflineSyncWork.kt @@ -115,8 +115,12 @@ class OfflineSyncWork constructor( * @return new etag if changed, `null` otherwise */ private fun checkEtagChanged(folderName: String, storageManager: FileDataStorageManager, user: User): String? { - val ocFolder = storageManager.getFileByPath(folderName) - Log_OC.d(TAG, folderName + ": currentEtag: " + ocFolder.etag) + val ocFolder = storageManager.getFileByPath(folderName) ?: return null + + ocFolder.etag?.let { + Log_OC.d(TAG, "$folderName: currentEtag: $it") + } + // check for etag change, if false, skip val checkEtagOperation = CheckEtagRemoteOperation( ocFolder.remotePath, diff --git a/app/src/main/java/com/nextcloud/client/jobs/download/FileDownloadHelper.kt b/app/src/main/java/com/nextcloud/client/jobs/download/FileDownloadHelper.kt index 424546d68dc3..664afee47524 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/download/FileDownloadHelper.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/download/FileDownloadHelper.kt @@ -49,9 +49,9 @@ class FileDownloadHelper { val fileStorageManager = FileDataStorageManager(user, MainApp.getAppContext().contentResolver) val topParentId = fileStorageManager.getTopParentId(file) - return if (file.isFolder) { - backgroundJobManager.isStartFileDownloadJobScheduled(user, file.fileId) || - backgroundJobManager.isStartFileDownloadJobScheduled(user, topParentId) + val isJobScheduled = backgroundJobManager.isStartFileDownloadJobScheduled(user, file.fileId) + return isJobScheduled || if (file.isFolder) { + backgroundJobManager.isStartFileDownloadJobScheduled(user, topParentId) } else { FileDownloadWorker.isDownloading(user.accountName, file.fileId) } diff --git a/app/src/main/java/com/owncloud/android/datamodel/OCFile.java b/app/src/main/java/com/owncloud/android/datamodel/OCFile.java index 408245678289..c8f1b23ff67c 100644 --- a/app/src/main/java/com/owncloud/android/datamodel/OCFile.java +++ b/app/src/main/java/com/owncloud/android/datamodel/OCFile.java @@ -361,15 +361,6 @@ public boolean existsOnDevice() { return false; } - public String getFileNameWithoutExtension(String fileName) { - int dotIndex = fileName.lastIndexOf('.'); - if (dotIndex > 0) { - return fileName.substring(0, dotIndex); - } else { - return fileName; - } - } - /** * The path, where the file is stored locally * diff --git a/app/src/main/java/com/owncloud/android/operations/DownloadFileOperation.java b/app/src/main/java/com/owncloud/android/operations/DownloadFileOperation.java index 8bda3a62213e..c746c476b7ac 100644 --- a/app/src/main/java/com/owncloud/android/operations/DownloadFileOperation.java +++ b/app/src/main/java/com/owncloud/android/operations/DownloadFileOperation.java @@ -273,7 +273,13 @@ protected RemoteOperationResult run(OwnCloudClient client) { } } - if (downloadType == DownloadType.EXPORT) { + if (downloadType == DownloadType.DOWNLOAD && !file.isEncrypted()) { + moved = tmpFile.renameTo(newFile); + newFile.setLastModified(file.getModificationTimestamp()); + if (!moved) { + result = new RemoteOperationResult(RemoteOperationResult.ResultCode.LOCAL_STORAGE_NOT_MOVED); + } + } else if (downloadType == DownloadType.EXPORT) { new FileExportUtils().exportFile(file.getFileName(), file.getMimeType(), operationContext.getContentResolver(), diff --git a/app/src/main/java/com/owncloud/android/operations/UploadFileOperation.java b/app/src/main/java/com/owncloud/android/operations/UploadFileOperation.java index a127895061ec..0181b4f4f5ae 100644 --- a/app/src/main/java/com/owncloud/android/operations/UploadFileOperation.java +++ b/app/src/main/java/com/owncloud/android/operations/UploadFileOperation.java @@ -726,7 +726,7 @@ private RemoteOperationResult encryptedUpload(OwnCloudClient client, OCFile pare metadata, token, client, - metadataExists, + true, mContext, user, getStorageManager()); diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/RemoveFilesDialogFragment.java b/app/src/main/java/com/owncloud/android/ui/dialog/RemoveFilesDialogFragment.java index 087ff25035f8..47012eb708ab 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/RemoveFilesDialogFragment.java +++ b/app/src/main/java/com/owncloud/android/ui/dialog/RemoveFilesDialogFragment.java @@ -106,11 +106,9 @@ public static RemoveFilesDialogFragment newInstance(ArrayList files) { if (containsFolder || containsDown) { args.putInt(ARG_NEGATIVE_BTN_RES, R.string.confirmation_remove_local); - args.putInt(ARG_NEUTRAL_BTN_RES, R.string.file_keep); - } else { - args.putInt(ARG_NEGATIVE_BTN_RES, R.string.file_keep); } + args.putInt(ARG_NEUTRAL_BTN_RES, R.string.file_keep); args.putParcelableArrayList(ARG_TARGET_FILES, files); frag.setArguments(args); From 5c1e26050cfe745f3750d592b7cd0c531b0df09d Mon Sep 17 00:00:00 2001 From: Jonas Mayer Date: Tue, 2 Apr 2024 14:29:51 +0200 Subject: [PATCH 2/3] Fix spotbugs by Alper Signed-off-by: Jonas Mayer --- .../com/owncloud/android/operations/DownloadFileOperation.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/owncloud/android/operations/DownloadFileOperation.java b/app/src/main/java/com/owncloud/android/operations/DownloadFileOperation.java index c746c476b7ac..81aeb9ec6652 100644 --- a/app/src/main/java/com/owncloud/android/operations/DownloadFileOperation.java +++ b/app/src/main/java/com/owncloud/android/operations/DownloadFileOperation.java @@ -275,7 +275,8 @@ protected RemoteOperationResult run(OwnCloudClient client) { if (downloadType == DownloadType.DOWNLOAD && !file.isEncrypted()) { moved = tmpFile.renameTo(newFile); - newFile.setLastModified(file.getModificationTimestamp()); + boolean isLastModifiedSet = newFile.setLastModified(file.getModificationTimestamp()); + Log_OC.d(TAG, "Last modified set: " + isLastModifiedSet); if (!moved) { result = new RemoteOperationResult(RemoteOperationResult.ResultCode.LOCAL_STORAGE_NOT_MOVED); } From 11c24e684d0dba57688f282b15d6e492b1cd92be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alper=20=C3=96zt=C3=BCrk?= <67455295+alperozturk96@users.noreply.github.com> Date: Thu, 4 Apr 2024 08:57:21 +0200 Subject: [PATCH 3/3] Update app/src/main/java/com/nextcloud/client/jobs/OfflineSyncWork.kt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Tom <70907959+ZetaTom@users.noreply.github.com> Signed-off-by: Alper Öztürk <67455295+alperozturk96@users.noreply.github.com> --- .../main/java/com/nextcloud/client/jobs/OfflineSyncWork.kt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) 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 bee25356829d..9344edd4816c 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/OfflineSyncWork.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/OfflineSyncWork.kt @@ -117,9 +117,7 @@ class OfflineSyncWork constructor( private fun checkEtagChanged(folderName: String, storageManager: FileDataStorageManager, user: User): String? { val ocFolder = storageManager.getFileByPath(folderName) ?: return null - ocFolder.etag?.let { - Log_OC.d(TAG, "$folderName: currentEtag: $it") - } + Log_OC.d(TAG, "$folderName: currentEtag: ${ocFolder.etag}") // check for etag change, if false, skip val checkEtagOperation = CheckEtagRemoteOperation(