Split off deletion process of updateItemMetadatas of NextcloudFilesDatabaseManager...
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Wed, 25 Jan 2023 19:18:51 +0000 (20:18 +0100)
committerClaudio Cambra <claudio.cambra@nextcloud.com>
Fri, 12 May 2023 05:21:13 +0000 (13:21 +0800)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/NextcloudFilesDatabaseManager.swift

index c6d84fffc175952d5b96658de3d49252bdab89b1..939b87813a115397bf5bb366a92fdcdf6feeed85 100644 (file)
@@ -96,25 +96,36 @@ class NextcloudFilesDatabaseManager : NSObject {
         return itemMetadataFromOcId(ocId)
     }
 
+    private func processItemMetadatasToDelete(databaseToWriteTo: Realm,
+                                              existingMetadatas: [NextcloudItemMetadataTable],
+                                              updatedMetadatas: [NextcloudItemMetadataTable]) {
+
+        assert(databaseToWriteTo.isInWriteTransaction)
+
+        for existingMetadata in existingMetadatas {
+            guard !updatedMetadatas.contains(where: { $0.ocId == existingMetadata.ocId }),
+                    let metadataToDelete = itemMetadataFromOcId(existingMetadata.ocId) else { continue }
+
+            print("""
+                    Deleting metadata.
+                    ocID: %@,
+                    fileName: %@,
+                    etag: %@
+                  """
+                  , metadataToDelete.ocId, metadataToDelete.fileName, metadataToDelete.etag)
+            databaseToWriteTo.delete(metadataToDelete)
+        }
+    }
+
     func updateItemMetadatas(existingMetadatas: [NextcloudItemMetadataTable], updatedMetadatas: [NextcloudItemMetadataTable]) {
         let database = ncDatabase()
 
         do {
             try database.write {
-                // Delete metadatas
-                for existingMetadata in existingMetadatas {
-                    guard !updatedMetadatas.contains(where: { $0.ocId == existingMetadata.ocId }),
-                            let metadataToDelete = itemMetadataFromOcId(existingMetadata.ocId) else { continue }
-
-                    print("""
-                            Deleting metadata.
-                            ocID: %@,
-                            fileName: %@,
-                            etag: %@
-                          """
-                          , metadataToDelete.ocId, metadataToDelete.fileName, metadataToDelete.etag)
-                    database.delete(metadataToDelete)
-                }
+                processItemMetadatasToDelete(databaseToWriteTo: database,
+                                             existingMetadatas: existingMetadatas,
+                                             updatedMetadatas: updatedMetadatas)
+
 
                 // Update existing or create new metadatas
                 for updatedMetadata in updatedMetadatas {