From 213893b13ff76e6fcff12e7af763c2c2e2a8bff1 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Sat, 18 Mar 2023 15:49:20 +0100 Subject: [PATCH] Fix recursive scan when scanChangesOnly is false in FileProviderEnumerator Signed-off-by: Claudio Cambra --- .../FileProviderEnumerator+RemoteSync.swift | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) 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 -- 2.30.2