瀏覽代碼

Fix isDownloading for nested folders

Signed-off-by: alperozturk <alper_ozturk@proton.me>
alperozturk 1 年之前
父節點
當前提交
ed24172d12

+ 5 - 1
app/src/main/java/com/nextcloud/client/files/downloader/FileDownloadHelper.kt

@@ -60,8 +60,12 @@ class FileDownloadHelper {
             return false
         }
 
+        val fileStorageManager = FileDataStorageManager(user, MainApp.getAppContext().contentResolver)
+        val topParentId = fileStorageManager.getTopParentId(file)
+
         return if (file.isFolder) {
-            backgroundJobManager.isStartFileDownloadJobScheduled(user, file.fileId)
+            backgroundJobManager.isStartFileDownloadJobScheduled(user, file.fileId) ||
+                backgroundJobManager.isStartFileDownloadJobScheduled(user, topParentId)
         } else {
             FileDownloadWorker.isDownloading(user.accountName, file.fileId)
         }

+ 21 - 0
app/src/main/java/com/owncloud/android/datamodel/FileDataStorageManager.java

@@ -180,6 +180,27 @@ public class FileDataStorageManager {
         return fileDao.getFileByEncryptedRemotePath(path, user.getAccountName()) != null;
     }
 
+    public long getTopParentId(OCFile file) {
+        if (file.getParentId() == 1) {
+            return file.getFileId();
+        }
+
+        return getTopParentIdRecursive(file);
+    }
+
+    private long getTopParentIdRecursive(OCFile file) {
+        if (file.getParentId() == 1) {
+            return file.getFileId();
+        }
+
+        OCFile parentFile = getFileById(file.getParentId());
+        if (parentFile != null) {
+            return getTopParentId(parentFile);
+        }
+
+        return file.getFileId();
+    }
+
     public List<OCFile> getAllFilesRecursivelyInsideFolder(OCFile file) {
         ArrayList<OCFile> result = new ArrayList<>();