From 9f6c2df4e367a9bd4bdf5a3c58d7115154c7e487 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 10 Jan 2023 20:25:26 +0100 Subject: [PATCH] Complete FileProviderEnumerator init, get correct serverUrl for enumerator item identifier Signed-off-by: Claudio Cambra --- .../FileProviderEnumerator.swift | 18 +++++++++++++++++- .../FileProviderExtension.swift | 2 +- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderEnumerator.swift b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderEnumerator.swift index 9cd356396..1b0fa2cb8 100644 --- a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderEnumerator.swift +++ b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderEnumerator.swift @@ -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() } diff --git a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension.swift b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension.swift index 5cd2136a8..98116c0bd 100644 --- a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension.swift +++ b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension.swift @@ -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