From 316ef61d83562c9f4766224eb8bcc5b82fc2eba0 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Wed, 25 Jan 2023 20:20:46 +0100 Subject: [PATCH] Split off update and creation process of updateItemMetadatas of NextcloudFilesDatabaseManager to private method Signed-off-by: Claudio Cambra --- .../NextcloudFilesDatabaseManager.swift | 70 +++++++++++-------- 1 file changed, 39 insertions(+), 31 deletions(-) diff --git a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/NextcloudFilesDatabaseManager.swift b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/NextcloudFilesDatabaseManager.swift index 939b87813..17b4db700 100644 --- a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/NextcloudFilesDatabaseManager.swift +++ b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/NextcloudFilesDatabaseManager.swift @@ -117,6 +117,42 @@ class NextcloudFilesDatabaseManager : NSObject { } } + private func processItemMetadatasToUpdate(databaseToWriteTo: Realm, + existingMetadatas: [NextcloudItemMetadataTable], + updatedMetadatas: [NextcloudItemMetadataTable]) { + + assert(databaseToWriteTo.isInWriteTransaction) + + 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.init(value: updatedMetadata), update: .all) + print(""" + Updated existing metadata. + 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.init(value: updatedMetadata), update: .all) + print(""" + Created new metadata. + ocID: %@, + fileName: %@, + etag: %@ + """ + , updatedMetadata.ocId, updatedMetadata.fileName, updatedMetadata.etag) + } + } + } + func updateItemMetadatas(existingMetadatas: [NextcloudItemMetadataTable], updatedMetadatas: [NextcloudItemMetadataTable]) { let database = ncDatabase() @@ -127,37 +163,9 @@ class NextcloudFilesDatabaseManager : NSObject { updatedMetadatas: updatedMetadatas) - // Update existing or create new metadatas - for updatedMetadata in updatedMetadatas { - if let existingMetadata = existingMetadatas.first(where: { $0.ocId == updatedMetadata.ocId }) { - - if existingMetadata.status == NextcloudItemMetadataTable.Status.normal.rawValue && - !existingMetadata.isInSameRemoteState(updatedMetadata) { - - database.add(NextcloudItemMetadataTable.init(value: updatedMetadata), update: .all) - print(""" - Updated existing metadata. - 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 - database.add(NextcloudItemMetadataTable.init(value: updatedMetadata), update: .all) - print(""" - Created new metadata. - ocID: %@, - fileName: %@, - etag: %@ - """ - , updatedMetadata.ocId, updatedMetadata.fileName, updatedMetadata.etag) - } - - - } + processItemMetadatasToUpdate(databaseToWriteTo: database, + existingMetadatas: existingMetadatas, + updatedMetadatas: updatedMetadatas) } } catch let error { print("Could not update any metadatas, received error: %@", error) -- 2.30.2