]> dgit.raspbian.org Git - nextcloud-desktop.git/commitdiff
Move parentItemIdentifierMetadata helper method to the database manager
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Mon, 13 Mar 2023 11:34:05 +0000 (12:34 +0100)
committerClaudio Cambra <claudio.cambra@nextcloud.com>
Fri, 12 May 2023 05:21:29 +0000 (13:21 +0800)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/Database/NextcloudFilesDatabaseManager.swift
shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderEnumerator.swift
shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension.swift
shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/NextcloudFileProviderFilesUtils.swift

index dac9ec41c86a452fdc9b17c9560f313b64f0b09c..15c1747d68f9fa4dcfbd1a03ed0005cda6e0d2ad 100644 (file)
@@ -297,6 +297,26 @@ class NextcloudFilesDatabaseManager : NSObject {
         }
     }
 
+    func parentItemIdentifierFromMetadata(_ metadata: NextcloudItemMetadataTable) -> NSFileProviderItemIdentifier? {
+        let homeServerFilesUrl = metadata.urlBase + "/remote.php/dav/files/" + metadata.userId
+
+        if metadata.serverUrl == homeServerFilesUrl {
+            return .rootContainer
+        }
+
+        guard let itemParentDirectory = parentDirectoryMetadataForItem(metadata) else {
+            NSLog("Could not get item parent directory metadata for metadata with ocId: %@ and fileName: %@, returning nil", metadata.ocId, metadata.fileName)
+            return nil
+        }
+
+        if let parentDirectoryMetadata = itemMetadataFromOcId(itemParentDirectory.ocId) {
+            return NSFileProviderItemIdentifier(parentDirectoryMetadata.ocId)
+        }
+
+        NSLog("Could not get item parent directory item metadata for metadata with ocId: %@ and fileName: %@, returning nil", metadata.ocId, metadata.fileName)
+        return nil
+    }
+
     func directoryMetadata(account: String, serverUrl: String) -> NextcloudDirectoryMetadataTable? {
         if let metadata = ncDatabase().objects(NextcloudDirectoryMetadataTable.self).filter("account == %@ AND serverUrl == %@", account, serverUrl).first {
             return NextcloudDirectoryMetadataTable(value: metadata)
index 54d663960a7c75f12eae0b7bc5ef1a31e1d1b7fa..9535af1325c2d624ba72896ad6081ef0f42ed024 100644 (file)
@@ -284,7 +284,7 @@ class FileProviderEnumerator: NSObject, NSFileProviderEnumerator {
                 createFileOrDirectoryLocally(metadata: itemMetadata)
             }
 
-            if let parentItemIdentifier = parentItemIdentifierFromMetadata(itemMetadata) {
+            if let parentItemIdentifier = NextcloudFilesDatabaseManager.shared.parentItemIdentifierFromMetadata(itemMetadata) {
                 let item = FileProviderItem(metadata: itemMetadata, parentItemIdentifier: parentItemIdentifier, ncKit: ncKit)
                 NSLog("Will enumerate item with ocId: %@ and name: %@", itemMetadata.ocId, itemMetadata.fileName)
                 items.append(item)
@@ -337,7 +337,7 @@ class FileProviderEnumerator: NSObject, NSFileProviderEnumerator {
         var allFpItemDeletionsIdentifiers = Array(allDeletedMetadatas.map { NSFileProviderItemIdentifier($0.ocId) })
 
         for updMetadata in allUpdatedMetadatas {
-            guard let parentItemIdentifier = parentItemIdentifierFromMetadata(updMetadata) else {
+            guard let parentItemIdentifier = NextcloudFilesDatabaseManager.shared.parentItemIdentifierFromMetadata(updMetadata) else {
                 NSLog("Not enumerating change for metadata: %@ %@ as could not get parent item metadata.", updMetadata.ocId, updMetadata.fileName)
                 continue
             }
index c6e12ec61364fa10b77006941dcd96d9c4c56125..18953d6331b2ac71b0c70446dd08869aa968eb7b 100644 (file)
@@ -99,7 +99,7 @@ class FileProviderExtension: NSObject, NSFileProviderReplicatedExtension, NKComm
         let dbManager = NextcloudFilesDatabaseManager.shared
         
         guard let metadata = dbManager.itemMetadataFromFileProviderItemIdentifier(identifier),
-              let parentItemIdentifier = parentItemIdentifierFromMetadata(metadata) else {
+              let parentItemIdentifier = dbManager.parentItemIdentifierFromMetadata(metadata) else {
             completionHandler(nil, NSFileProviderError(.noSuchItem))
             return Progress()
         }
@@ -176,7 +176,7 @@ class FileProviderExtension: NSObject, NSFileProviderReplicatedExtension, NKComm
                     dbManager.addLocalFileMetadataFromItemMetadata(updatedMetadata)
                     dbManager.addItemMetadata(updatedMetadata)
 
-                    guard let parentItemIdentifier = parentItemIdentifierFromMetadata(updatedMetadata) else {
+                    guard let parentItemIdentifier = dbManager.parentItemIdentifierFromMetadata(updatedMetadata) else {
                         completionHandler(nil, nil, NSFileProviderError(.noSuchItem))
                         return
                     }
index 0ffa48029d5b791f13aeff91a7eb9b254eaf3d65..dc70f779b202ccd93f31a8ebd9fd8f99b9acf1db 100644 (file)
@@ -89,27 +89,6 @@ func createFileOrDirectoryLocally(metadata: NextcloudItemMetadataTable) {
     }
 }
 
-func parentItemIdentifierFromMetadata(_ metadata: NextcloudItemMetadataTable) -> NSFileProviderItemIdentifier? {
-    let homeServerFilesUrl = metadata.urlBase + "/remote.php/dav/files/" + metadata.userId
-
-    if metadata.serverUrl == homeServerFilesUrl {
-        return .rootContainer
-    }
-
-    let ncDatabase = NextcloudFilesDatabaseManager.shared
-    guard let itemParentDirectory = ncDatabase.parentDirectoryMetadataForItem(metadata) else {
-        NSLog("Could not get item parent directory metadata for metadata with ocId: %@ and fileName: %@, returning nil", metadata.ocId, metadata.fileName)
-        return nil
-    }
-
-    if let parentDirectoryMetadata = ncDatabase.itemMetadataFromOcId(itemParentDirectory.ocId) {
-        return NSFileProviderItemIdentifier(parentDirectoryMetadata.ocId)
-    }
-
-    NSLog("Could not get item parent directory item metadata for metadata with ocId: %@ and fileName: %@, returning nil", metadata.ocId, metadata.fileName)
-    return nil
-}
-
 func isFileSynced(metadata: NextcloudItemMetadataTable) -> Bool {
     guard metadata.directory else { return false }
     do {