From 574f50e684b419da59b538ae44bb70b887ce0a14 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Mon, 16 Dec 2019 11:07:38 -0300 Subject: [PATCH] Only trigger media scans when the file is a media file Fixes #4999 Signed-off-by: Torsten Grote --- .../android/datamodel/FileDataStorageManager.java | 8 +++++--- .../android/files/services/FileDownloader.java | 5 ++++- .../android/operations/RemoveFileOperation.java | 7 +++++-- .../android/operations/RenameFileOperation.java | 7 +++++-- .../android/operations/UploadFileOperation.java | 12 +++++++++--- .../com/owncloud/android/utils/MimeTypeUtil.java | 4 ++++ 6 files changed, 32 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/owncloud/android/datamodel/FileDataStorageManager.java b/src/main/java/com/owncloud/android/datamodel/FileDataStorageManager.java index ad7fbb6e5687..342a1aeda463 100644 --- a/src/main/java/com/owncloud/android/datamodel/FileDataStorageManager.java +++ b/src/main/java/com/owncloud/android/datamodel/FileDataStorageManager.java @@ -381,7 +381,7 @@ public void saveFolder(OCFile folder, Collection updatedFiles, Collectio if (file.isDown()) { String path = file.getStoragePath(); - if (new File(path).delete()) { + if (new File(path).delete() && MimeTypeUtil.isMedia(file.getMimeType())) { triggerMediaScan(path); // notify MediaScanner about removed file } } @@ -702,8 +702,10 @@ public void moveLocalFile(OCFile file, String targetPath, String targetParentPat cv.put(ProviderTableMeta.FILE_STORAGE_PATH, targetLocalPath); - originalPathsToTriggerMediaScan.add(child.getStoragePath()); - newPathsToTriggerMediaScan.add(targetLocalPath); + if (MimeTypeUtil.isMedia(child.getMimeType())) { + originalPathsToTriggerMediaScan.add(child.getStoragePath()); + newPathsToTriggerMediaScan.add(targetLocalPath); + } } if (child.getRemotePath().equals(file.getRemotePath())) { diff --git a/src/main/java/com/owncloud/android/files/services/FileDownloader.java b/src/main/java/com/owncloud/android/files/services/FileDownloader.java index 0b8e66767c31..9b23473e1c93 100644 --- a/src/main/java/com/owncloud/android/files/services/FileDownloader.java +++ b/src/main/java/com/owncloud/android/files/services/FileDownloader.java @@ -60,6 +60,7 @@ import com.owncloud.android.ui.preview.PreviewImageActivity; import com.owncloud.android.ui.preview.PreviewImageFragment; import com.owncloud.android.utils.ErrorMessageAdapter; +import com.owncloud.android.utils.MimeTypeUtil; import com.owncloud.android.utils.ThemeUtils; import java.io.File; @@ -504,7 +505,9 @@ private void saveDownloadedFile() { file.setFileLength(new File(mCurrentDownload.getSavePath()).length()); file.setRemoteId(mCurrentDownload.getFile().getRemoteId()); mStorageManager.saveFile(file); - FileDataStorageManager.triggerMediaScan(file.getStoragePath()); + if (MimeTypeUtil.isMedia(mCurrentDownload.getMimeType())) { + FileDataStorageManager.triggerMediaScan(file.getStoragePath()); + } mStorageManager.saveConflict(file, null); } diff --git a/src/main/java/com/owncloud/android/operations/RemoveFileOperation.java b/src/main/java/com/owncloud/android/operations/RemoveFileOperation.java index cc8bdf0b2223..b71c3a0aa224 100644 --- a/src/main/java/com/owncloud/android/operations/RemoveFileOperation.java +++ b/src/main/java/com/owncloud/android/operations/RemoveFileOperation.java @@ -33,6 +33,7 @@ import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode; import com.owncloud.android.lib.resources.files.RemoveFileRemoteOperation; import com.owncloud.android.operations.common.SyncOperation; +import com.owncloud.android.utils.MimeTypeUtil; /** @@ -91,8 +92,10 @@ protected RemoteOperationResult run(OwnCloudClient client) { fileToRemove = getStorageManager().getFileByPath(remotePath); - // store resized image - ThumbnailsCacheManager.generateResizedImage(fileToRemove); + if (MimeTypeUtil.isImage(fileToRemove.getMimeType())) { + // store resized image + ThumbnailsCacheManager.generateResizedImage(fileToRemove); + } boolean localRemovalFailed = false; if (!onlyLocalCopy) { diff --git a/src/main/java/com/owncloud/android/operations/RenameFileOperation.java b/src/main/java/com/owncloud/android/operations/RenameFileOperation.java index cde479ad3cd7..cddd137057e0 100644 --- a/src/main/java/com/owncloud/android/operations/RenameFileOperation.java +++ b/src/main/java/com/owncloud/android/operations/RenameFileOperation.java @@ -32,6 +32,7 @@ import com.owncloud.android.lib.resources.files.RenameFileRemoteOperation; import com.owncloud.android.operations.common.SyncOperation; import com.owncloud.android.utils.FileStorageUtils; +import com.owncloud.android.utils.MimeTypeUtil; import java.io.File; import java.io.IOException; @@ -130,8 +131,10 @@ private void saveLocalFile() { // notify MediaScanner about removed file getStorageManager().deleteFileInMediaScan(oldPath); - // notify to scan about new file - FileDataStorageManager.triggerMediaScan(newPath); + // notify to scan about new file, if it is a media file + if (MimeTypeUtil.isMedia(file.getMimeType())) { + FileDataStorageManager.triggerMediaScan(newPath); + } } // else - NOTHING: the link to the local file is kept although the local name // can't be updated diff --git a/src/main/java/com/owncloud/android/operations/UploadFileOperation.java b/src/main/java/com/owncloud/android/operations/UploadFileOperation.java index 1ffe1dcecced..cf2d893ebb28 100644 --- a/src/main/java/com/owncloud/android/operations/UploadFileOperation.java +++ b/src/main/java/com/owncloud/android/operations/UploadFileOperation.java @@ -967,7 +967,9 @@ private void handleSuccessfulUpload(File temporalFile, File expectedFile, File o } mFile.setStoragePath(expectedFile.getAbsolutePath()); saveUploadedFile(client); - FileDataStorageManager.triggerMediaScan(expectedFile.getAbsolutePath()); + if (MimeTypeUtil.isMedia(mFile.getMimeType())) { + FileDataStorageManager.triggerMediaScan(expectedFile.getAbsolutePath()); + } break; case FileUploader.LOCAL_BEHAVIOUR_MOVE: @@ -982,7 +984,9 @@ private void handleSuccessfulUpload(File temporalFile, File expectedFile, File o getStorageManager().deleteFileInMediaScan(originalFile.getAbsolutePath()); mFile.setStoragePath(newFile.getAbsolutePath()); saveUploadedFile(client); - FileDataStorageManager.triggerMediaScan(newFile.getAbsolutePath()); + if (MimeTypeUtil.isMedia(mFile.getMimeType())) { + FileDataStorageManager.triggerMediaScan(newFile.getAbsolutePath()); + } break; } } @@ -1324,7 +1328,9 @@ private void saveUploadedFile(OwnCloudClient client) { getStorageManager().saveFile(file); getStorageManager().saveConflict(file, null); - FileDataStorageManager.triggerMediaScan(file.getStoragePath()); + if (MimeTypeUtil.isMedia(file.getMimeType())) { + FileDataStorageManager.triggerMediaScan(file.getStoragePath()); + } // generate new Thumbnail final ThumbnailsCacheManager.ThumbnailGenerationTask task = diff --git a/src/main/java/com/owncloud/android/utils/MimeTypeUtil.java b/src/main/java/com/owncloud/android/utils/MimeTypeUtil.java index 41ee36697945..969ed3058921 100644 --- a/src/main/java/com/owncloud/android/utils/MimeTypeUtil.java +++ b/src/main/java/com/owncloud/android/utils/MimeTypeUtil.java @@ -203,6 +203,10 @@ private static String getMimeTypeFromCandidates(List candidates) { return candidates.get(0); } + public static boolean isMedia(String mimeType) { + return isImage(mimeType) || isVideo(mimeType) || isAudio(mimeType); + } + public static boolean isImageOrVideo(String mimeType) { return isImage(mimeType) || isVideo(mimeType); }