Fix recursive scan when scanChangesOnly is false in FileProviderEnumerator
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Sat, 18 Mar 2023 14:49:20 +0000 (15:49 +0100)
committerClaudio Cambra <claudio.cambra@nextcloud.com>
Fri, 12 May 2023 05:29:56 +0000 (13:29 +0800)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderEnumerator+RemoteSync.swift

index fd5cc0cdc8017dd1d1e08f2cd4ffb5e5d563fb71..8dd98ac0f9f8e724ec5f1ebc9ed3b18f49c91834 100644 (file)
@@ -137,18 +137,26 @@ extension FileProviderEnumerator {
             return ([], [], [], [], error: criticalError)
         }
 
-        var updatedDirectories: [NextcloudItemMetadataTable] = []
-        for updatedMetadata in allUpdatedMetadatas {
-            if updatedMetadata.directory {
-                updatedDirectories.append(updatedMetadata)
+        var childDirectoriesToScan: [NextcloudItemMetadataTable] = []
+        var candidateMetadatas: [NextcloudItemMetadataTable]
+
+        if scanChangesOnly {
+            candidateMetadatas = allUpdatedMetadatas
+        } else {
+            candidateMetadatas = allMetadatas
+        }
+
+        for candidateMetadata in candidateMetadatas {
+            if candidateMetadata.directory {
+                childDirectoriesToScan.append(candidateMetadata)
             }
         }
 
-        if updatedDirectories.isEmpty {
+        if childDirectoriesToScan.isEmpty {
             return (metadatas: allMetadatas, newMetadatas: allNewMetadatas, updatedMetadatas: allUpdatedMetadatas, deletedMetadatas: allDeletedMetadatas, nil)
         }
 
-        for childDirectory in updatedDirectories {
+        for childDirectory in childDirectoriesToScan {
             let childScanResult = scanRecursively(childDirectory, ncAccount: ncAccount, ncKit: ncKit, scanChangesOnly: scanChangesOnly)
 
             allMetadatas += childScanResult.metadatas