Fix accidental purge of all metadatas caused by trying to call updateDirectoryMetadat...
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Thu, 9 Mar 2023 00:29:38 +0000 (01:29 +0100)
committerClaudio Cambra <claudio.cambra@nextcloud.com>
Fri, 12 May 2023 05:21:22 +0000 (13:21 +0800)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderEnumerator.swift

index 68dfeae646ccc26443abb634c7c10f649735d16e..e96ee7135b52cbd4aa30dce48bd83484bc564f03 100644 (file)
@@ -245,7 +245,11 @@ class FileProviderEnumerator: NSObject, NSFileProviderEnumerator {
 
                         // STORE DATA FOR CURRENTLY SCANNED DIRECTORY
                         // We have now scanned this directory's contents, so update with etag in order to not check again if not needed
-                        dbManager.updateDirectoryMetadatasFromItemMetadatas(account: ncKitAccount, parentDirectoryServerUrl: serverUrl, updatedDirectoryItemMetadatas: [directoryMetadata], recordEtag: true)
+                        // unless it's the root container -- this method deletes metadata for directories under the path that we do not
+                        // provide as the updatedDirectoryItemMetadatas, don't do this with root folder or we will purge metadatas wrongly
+                        if serverUrl != ncAccount.davFilesUrl {
+                            dbManager.updateDirectoryMetadatasFromItemMetadatas(account: ncKitAccount, parentDirectoryServerUrl: serverUrl, updatedDirectoryItemMetadatas: [directoryMetadata], recordEtag: true)
+                        }
 
                         let receivedMetadataChanges = dbManager.updateItemMetadatas(account: ncKitAccount, serverUrl: serverUrl, updatedMetadatas: metadatas)