From 29b495335bc66cbf15cc09471685b8faf0bc7096 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Sat, 18 Mar 2023 02:35:02 +0100 Subject: [PATCH] Do not update etags for child folders acquired in a depth 1 readServerUrl in FileProviderEnumerator Signed-off-by: Claudio Cambra --- .../Database/NextcloudFilesDatabaseManager.swift | 12 +++++++++--- .../FileProviderExt/FileProviderEnumerator.swift | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/Database/NextcloudFilesDatabaseManager.swift b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/Database/NextcloudFilesDatabaseManager.swift index db94a0d61..438abe002 100644 --- a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/Database/NextcloudFilesDatabaseManager.swift +++ b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/Database/NextcloudFilesDatabaseManager.swift @@ -139,7 +139,8 @@ class NextcloudFilesDatabaseManager : NSObject { private func processItemMetadatasToUpdate(databaseToWriteTo: Realm, existingMetadatas: Results, - updatedMetadatas: [NextcloudItemMetadataTable]) -> (newMetadatas: [NextcloudItemMetadataTable], updatedMetadatas: [NextcloudItemMetadataTable]) { + updatedMetadatas: [NextcloudItemMetadataTable], + updateDirectoryEtags: Bool) -> (newMetadatas: [NextcloudItemMetadataTable], updatedMetadatas: [NextcloudItemMetadataTable]) { assert(databaseToWriteTo.isInWriteTransaction) @@ -152,6 +153,10 @@ class NextcloudFilesDatabaseManager : NSObject { if existingMetadata.status == NextcloudItemMetadataTable.Status.normal.rawValue && !existingMetadata.isInSameDatabaseStoreableRemoteState(updatedMetadata) { + if !updateDirectoryEtags { + updatedMetadata.etag = existingMetadata.etag + } + returningUpdatedMetadatas.append(NextcloudItemMetadataTable(value: updatedMetadata)) databaseToWriteTo.add(updatedMetadata, update: .all) @@ -171,7 +176,7 @@ class NextcloudFilesDatabaseManager : NSObject { return (returningNewMetadatas, returningUpdatedMetadatas) } - func updateItemMetadatas(account: String, serverUrl: String, updatedMetadatas: [NextcloudItemMetadataTable], completionHandler: @escaping(_ newMetadatas: [NextcloudItemMetadataTable]?, _ updatedMetadatas: [NextcloudItemMetadataTable]?, _ deletedMetadatas: [NextcloudItemMetadataTable]?) -> Void) { + func updateItemMetadatas(account: String, serverUrl: String, updatedMetadatas: [NextcloudItemMetadataTable], updateDirectoryEtags: Bool, completionHandler: @escaping(_ newMetadatas: [NextcloudItemMetadataTable]?, _ updatedMetadatas: [NextcloudItemMetadataTable]?, _ deletedMetadatas: [NextcloudItemMetadataTable]?) -> Void) { let database = ncDatabase() do { @@ -184,7 +189,8 @@ class NextcloudFilesDatabaseManager : NSObject { let metadatasFromUpdate = processItemMetadatasToUpdate(databaseToWriteTo: database, existingMetadatas: existingMetadatas, - updatedMetadatas: updatedMetadatas) + updatedMetadatas: updatedMetadatas, + updateDirectoryEtags: updateDirectoryEtags) completionHandler(metadatasFromUpdate.newMetadatas, metadatasFromUpdate.updatedMetadatas, deletedMetadatas) } diff --git a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderEnumerator.swift b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderEnumerator.swift index 051132fe9..952c37307 100644 --- a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderEnumerator.swift +++ b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderEnumerator.swift @@ -610,7 +610,7 @@ class FileProviderEnumerator: NSObject, NSFileProviderEnumerator { dbManager.addItemMetadata(directoryMetadata) } - dbManager.updateItemMetadatas(account: ncKitAccount, serverUrl: serverUrl, updatedMetadatas: metadatas) { newMetadatas, updatedMetadatas, deletedMetadatas in + dbManager.updateItemMetadatas(account: ncKitAccount, serverUrl: serverUrl, updatedMetadatas: metadatas, updateDirectoryEtags: false) { newMetadatas, updatedMetadatas, deletedMetadatas in completionHandler(metadatas, newMetadatas, updatedMetadatas, deletedMetadatas, nil) } } -- 2.30.2