Report new item metadatas and updated item metadatas in processItemMetadatasToUpdate...
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Wed, 8 Mar 2023 16:51:59 +0000 (17:51 +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/NextcloudFilesDatabaseManager.swift

index f4edcbf6b9a21a6997534b4a2cf53a6674d61bf0..8decfa709f63eef06ad0d57548466a8faa2e26e2 100644 (file)
@@ -139,17 +139,22 @@ class NextcloudFilesDatabaseManager : NSObject {
 
     private func processItemMetadatasToUpdate(databaseToWriteTo: Realm,
                                               existingMetadatas: Results<NextcloudItemMetadataTable>,
-                                              updatedMetadatas: [NextcloudItemMetadataTable]) {
+                                              updatedMetadatas: [NextcloudItemMetadataTable]) -> (newMetadatas: [NextcloudItemMetadataTable], updatedMetadatas: [NextcloudItemMetadataTable]) {
 
         assert(databaseToWriteTo.isInWriteTransaction)
 
+        var returningNewMetadatas: [NextcloudItemMetadataTable] = []
+        var returningUpdatedMetadatas: [NextcloudItemMetadataTable] = []
+
         for updatedMetadata in updatedMetadatas {
             if let existingMetadata = existingMetadatas.first(where: { $0.ocId == updatedMetadata.ocId }) {
 
                 if existingMetadata.status == NextcloudItemMetadataTable.Status.normal.rawValue &&
                     !existingMetadata.isInSameRemoteState(updatedMetadata) {
 
-                    databaseToWriteTo.add(NextcloudItemMetadataTable(value: updatedMetadata), update: .all)
+                    returningUpdatedMetadatas.append(updatedMetadata)
+                    databaseToWriteTo.add(updatedMetadata, update: .all)
+                    
                     NSLog("""
                             Updated existing metadata.
                             ocID: %@,
@@ -157,11 +162,20 @@ class NextcloudFilesDatabaseManager : NSObject {
                             etag: %@
                           """
                           , updatedMetadata.ocId, updatedMetadata.fileName, updatedMetadata.etag)
+                } else {
+                    NSLog("""
+                              Skipping metadata update as received metadata status is same as existing:
+                              ocID: %@,
+                              fileName: %@,
+                              etag: %@
+                          """
+                          , updatedMetadata.ocId, updatedMetadata.fileName, updatedMetadata.etag)
                 }
-                // Don't update under other circumstances in which the metadata already exists
 
             } else { // This is a new metadata
-                databaseToWriteTo.add(NextcloudItemMetadataTable(value: updatedMetadata), update: .all)
+                returningNewMetadatas.append(updatedMetadata)
+                databaseToWriteTo.add(updatedMetadata, update: .all)
+
                 NSLog("""
                         Created new metadata.
                         ocID: %@,
@@ -171,6 +185,8 @@ class NextcloudFilesDatabaseManager : NSObject {
                       , updatedMetadata.ocId, updatedMetadata.fileName, updatedMetadata.etag)
             }
         }
+
+        return (returningNewMetadatas, returningUpdatedMetadatas)
     }
 
     func updateItemMetadatas(account: String, serverUrl: String, updatedMetadatas: [NextcloudItemMetadataTable]) {