瀏覽代碼

try id

Signed-off-by: alperozturk <alper_ozturk@proton.me>
alperozturk 11 月之前
父節點
當前提交
883897eda2

+ 6 - 0
app/src/main/java/com/nextcloud/client/database/dao/OfflineOperationDao.kt

@@ -36,4 +36,10 @@ interface OfflineOperationDao {
 
     @Query("SELECT * FROM offline_operations WHERE offline_operations_path LIKE '%' || :path || '%' OR offline_operations_file_name LIKE '%' || :filename || '%'")
     fun getSubDirs(path: String, filename: String): List<OfflineOperationEntity>
+
+    @Query("SELECT * FROM offline_operations WHERE offline_operations_parent_oc_file_id = :parentOCFileId")
+    fun getSubDirectories(parentOCFileId: Long): List<OfflineOperationEntity>
+
+    @Query("SELECT * FROM offline_operations WHERE _id = :id")
+    fun getById(id: Int): OfflineOperationEntity?
 }

+ 19 - 0
app/src/main/java/com/nextcloud/utils/extensions/OfflineOperationExtensions.kt

@@ -12,6 +12,25 @@ import com.nextcloud.client.database.entity.OfflineOperationEntity
 
 private const val DELIMITER = '/'
 
+fun OfflineOperationDao.getAllSubdirectories(parentId: Long): List<OfflineOperationEntity> {
+    val result = mutableListOf<OfflineOperationEntity>()
+    val queue = ArrayDeque<Long>()
+    queue.add(parentId)
+
+    while (queue.isNotEmpty()) {
+        val currentParentId = queue.removeFirst()
+        val subDirs = getSubDirectories(currentParentId)
+
+        result.addAll(subDirs)
+
+        for (subDir in subDirs) {
+            subDir.id?.let { queue.add(it.toLong()) }
+        }
+    }
+
+    return result
+}
+
 fun OfflineOperationDao.updatePathAndSubPaths(
     oldPath: String,
     newPath: String,

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

@@ -169,6 +169,8 @@ public class FileDataStorageManager {
             return;
         }
 
+        var aaa = OfflineOperationExtensionsKt.getAllSubdirectories(offlineOperationDao, file.getFileId());
+
         String newPath = parentFolder.getDecryptedRemotePath() + newFolderName + OCFile.PATH_SEPARATOR;
         String oldPath = parentFolder.getDecryptedRemotePath() + file.getFileName() + OCFile.PATH_SEPARATOR;
         OfflineOperationExtensionsKt.updatePathAndSubPaths(offlineOperationDao, oldPath, newPath, file.getFileName(), newFolderName);