Эх сурвалжийг харах

SyncedFolderUtils: fix logic when numberOfFiles != actual file number

Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
Álvaro Brey 2 жил өмнө
parent
commit
ce7ef477bb

+ 22 - 12
app/src/main/java/com/owncloud/android/utils/SyncedFolderUtils.kt

@@ -48,9 +48,20 @@ object SyncedFolderUtils {
      * @return `true` if it qualifies as a media folder else `false`
      */
     fun isQualifyingMediaFolder(mediaFolder: MediaFolder?): Boolean {
-        return when (mediaFolder) {
-            null -> false
-            else -> isQualifyingMediaFolder(mediaFolder.absolutePath, mediaFolder.type)
+        return when {
+            mediaFolder == null -> false
+            AUTO_QUALIFYING_FOLDER_TYPE_SET.contains(mediaFolder.type) -> true
+            !isQualifiedFolder(mediaFolder.absolutePath) -> false
+            else -> {
+                when {
+                    mediaFolder.numberOfFiles < SINGLE_FILE -> false
+                    // music album (just one cover-art image)
+                    mediaFolder.type == MediaFolderType.IMAGE -> containsQualifiedImages(
+                        mediaFolder.filePaths.map { File(it) }
+                    )
+                    else -> true
+                }
+            }
         }
     }
 
@@ -61,10 +72,11 @@ object SyncedFolderUtils {
      * @return `true` if it qualifies as a media folder else `false`
      */
     fun isQualifyingMediaFolder(syncedFolder: SyncedFolder?): Boolean {
-        return when (syncedFolder) {
-            null -> false
-            else -> isQualifyingMediaFolder(syncedFolder.localPath, syncedFolder.type)
+        if (syncedFolder == null) {
+            return false
         }
+
+        return isQualifyingMediaFolder(syncedFolder.localPath, syncedFolder.type)
     }
 
     /**
@@ -75,20 +87,18 @@ object SyncedFolderUtils {
      * @param folderType type of the folder
      * @return `true` if it qualifies as a media folder else `false`
      */
-    fun isQualifyingMediaFolder(folderPath: String, folderType: MediaFolderType): Boolean {
+    fun isQualifyingMediaFolder(folderPath: String?, folderType: MediaFolderType): Boolean {
         return when {
-            // custom folders are always fine
             AUTO_QUALIFYING_FOLDER_TYPE_SET.contains(folderType) -> true
-            // thumbnail folder
             !isQualifiedFolder(folderPath) -> false
+            folderPath == null -> false
             else -> {
-                // filter media folders
-                val files = getFileList(File(folderPath))
+                val files: List<File> = getFileList(File(folderPath))
                 when {
                     // no files
                     files.size < SINGLE_FILE -> false
                     // music album (just one cover-art image)
-                    MediaFolderType.IMAGE == folderType -> containsQualifiedImages(files)
+                    folderType == MediaFolderType.IMAGE -> containsQualifiedImages(files)
                     else -> true
                 }
             }