]> dgit.raspbian.org Git - nextcloud-desktop.git/commitdiff
Complete FileProviderEnumerator init, get correct serverUrl for enumerator item ident...
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Tue, 10 Jan 2023 19:25:26 +0000 (20:25 +0100)
committerClaudio Cambra <claudio.cambra@nextcloud.com>
Fri, 12 May 2023 05:21:10 +0000 (13:21 +0800)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderEnumerator.swift
shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension.swift

index 9cd356396c4078378a49cdf663c9bd653003dce9..1b0fa2cb86e019b1385b7e038405138fc259b550 100644 (file)
@@ -18,9 +18,25 @@ class FileProviderEnumerator: NSObject, NSFileProviderEnumerator {
     
     private let enumeratedItemIdentifier: NSFileProviderItemIdentifier
     private let anchor = NSFileProviderSyncAnchor("an anchor".data(using: .utf8)!)
+    let ncAccount: NextcloudAccount
+    var serverUrl: URL?
     
-    init(enumeratedItemIdentifier: NSFileProviderItemIdentifier) {
+    init(enumeratedItemIdentifier: NSFileProviderItemIdentifier, ncAccount: NextcloudAccount) {
         self.enumeratedItemIdentifier = enumeratedItemIdentifier
+        self.ncAccount = ncAccount
+
+        if enumeratedItemIdentifier == .rootContainer {
+            self.serverUrl = ncAccount.serverUrl
+        } else {
+            let dbManager = NextcloudFilesDatabaseManager.shared
+            if let itemMetadata = dbManager.fileMetadataFromFileProviderItemIdentifier(enumeratedItemIdentifier),
+               let itemDirectoryMetadata = dbManager.directoryMetadataForFile(itemMetadata) {
+
+                self.serverUrl = URL(string: itemDirectoryMetadata.serverUrl + "/" + itemMetadata.fileName)
+            }
+
+        }
+
         super.init()
     }
 
index 5cd2136a829df114a4feddf1dea1479cb586eab8..98116c0bd50039c2c4c7a78c09b7df9fd8b6bd3e 100644 (file)
@@ -101,7 +101,7 @@ class FileProviderExtension: NSObject, NSFileProviderReplicatedExtension {
     }
     
     func enumerator(for containerItemIdentifier: NSFileProviderItemIdentifier, request: NSFileProviderRequest) throws -> NSFileProviderEnumerator {
-        return FileProviderEnumerator(enumeratedItemIdentifier: containerItemIdentifier)
+        return FileProviderEnumerator(enumeratedItemIdentifier: containerItemIdentifier, ncAccount: ncAccount)
     }
 
     // MARK: Nextcloud desktop client communication