diff --git a/app/src/main/java/com/nextcloud/client/database/dao/FileDao.kt b/app/src/main/java/com/nextcloud/client/database/dao/FileDao.kt index a94b0c9c669c..7f15f5ec3252 100644 --- a/app/src/main/java/com/nextcloud/client/database/dao/FileDao.kt +++ b/app/src/main/java/com/nextcloud/client/database/dao/FileDao.kt @@ -91,27 +91,19 @@ interface FileDao { @Query( """ - SELECT - EXISTS ( - SELECT 1 - FROM filelist - WHERE parent = :parentId - AND file_owner = :accountName - AND content_type != '${MimeType.DIRECTORY}' - AND content_type != '${MimeType.WEBDAV_FOLDER}' - ) - AND NOT EXISTS ( - SELECT 1 - FROM filelist - WHERE parent = :parentId - AND file_owner = :accountName - AND content_type != '${MimeType.DIRECTORY}' - AND content_type != '${MimeType.WEBDAV_FOLDER}' - AND media_path IS NULL - ) + SELECT NOT EXISTS ( + SELECT 1 + FROM filelist + WHERE parent = :parentId + AND file_owner = :accountName + AND content_type IS NOT NULL + AND content_type != '${MimeType.DIRECTORY}' + AND content_type != '${MimeType.WEBDAV_FOLDER}' + AND (media_path IS NULL OR TRIM(media_path) = '') + ) """ ) - fun isFolderFullyDownloaded(parentId: Long, accountName: String): Boolean + fun areAllFilesHaveMediaPath(parentId: Long, accountName: String): Boolean @Query( """ diff --git a/app/src/main/java/com/nextcloud/utils/extensions/FileExtensions.kt b/app/src/main/java/com/nextcloud/utils/extensions/FileExtensions.kt index a55345d79e2c..5bae77a44d61 100644 --- a/app/src/main/java/com/nextcloud/utils/extensions/FileExtensions.kt +++ b/app/src/main/java/com/nextcloud/utils/extensions/FileExtensions.kt @@ -38,7 +38,7 @@ fun Path.toLocalPath(): String = toAbsolutePath().toString() @Suppress("ReturnCount") fun String.toFile(): File? { if (isNullOrEmpty()) { - Log_OC.e(TAG, "given path is null or empty") + Log_OC.w(TAG, "given path is null or empty: $this") return null } diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListDelegate.kt b/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListDelegate.kt index e61928757861..35c50edea2bb 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListDelegate.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListDelegate.kt @@ -345,7 +345,11 @@ class OCFileListDelegate( } private fun showLocalFileIndicator(file: OCFile, holder: ListViewHolder) { - val isFullyDownloaded = storageManager.fileDao.isFolderFullyDownloaded(file.fileId, user.accountName) + var isFolderDown = false + if (file.isFolder && !file.isEncrypted && file.fileLength != 0L) { + isFolderDown = storageManager.fileDao.areAllFilesHaveMediaPath(file.fileId, user.accountName) + } + val isSyncing = isSynchronizing(file) val hasConflict = (file.etagInConflict != null) val isDown = file.isDown @@ -353,7 +357,7 @@ class OCFileListDelegate( val icon = when { isSyncing -> R.drawable.ic_synchronizing hasConflict -> R.drawable.ic_synchronizing_error - isDown || isFullyDownloaded -> R.drawable.ic_synced + isDown || isFolderDown -> R.drawable.ic_synced else -> null }