From: Claudio Cambra Date: Sat, 18 Mar 2023 14:49:20 +0000 (+0100) Subject: Fix recursive scan when scanChangesOnly is false in FileProviderEnumerator X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~12^2~10^2~55^2~43 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=213893b13ff76e6fcff12e7af763c2c2e2a8bff1;p=nextcloud-desktop.git Fix recursive scan when scanChangesOnly is false in FileProviderEnumerator Signed-off-by: Claudio Cambra --- diff --git a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderEnumerator+RemoteSync.swift b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderEnumerator+RemoteSync.swift index fd5cc0cdc..8dd98ac0f 100644 --- a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderEnumerator+RemoteSync.swift +++ b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderEnumerator+RemoteSync.swift @@ -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