From de4709c928df2e2bd86f99a024933d0bb6402b03 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 19 Mar 2024 19:38:41 +0800 Subject: [PATCH] Fix scan path to retrieve item metadata in share table view data source Signed-off-by: Claudio Cambra --- .../ShareTableViewDataSource.swift | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/shell_integration/MacOSX/NextcloudIntegration/FileProviderUIExt/ShareTableViewDataSource.swift b/shell_integration/MacOSX/NextcloudIntegration/FileProviderUIExt/ShareTableViewDataSource.swift index db7bf883b..c55306093 100644 --- a/shell_integration/MacOSX/NextcloudIntegration/FileProviderUIExt/ShareTableViewDataSource.swift +++ b/shell_integration/MacOSX/NextcloudIntegration/FileProviderUIExt/ShareTableViewDataSource.swift @@ -173,8 +173,33 @@ class ShareTableViewDataSource: NSObject, NSTableViewDataSource, NSTableViewDele } private func fetchItemMetadata(itemRelativePath: String) async -> NKFile? { + guard let kit = kit else { + let errorString = "Could not fetch item metadata as nckit unavailable" + Logger.sharesDataSource.error("\(errorString, privacy: .public)") + Task { @MainActor in self.uiDelegate?.showError(errorString) } + return nil + } + + func slashlessPath(_ string: String) -> String { + var strCopy = string + if strCopy.hasPrefix("/") { + strCopy.removeFirst() + } + if strCopy.hasSuffix("/") { + strCopy.removeLast() + } + return strCopy + } + + let nkCommon = kit.nkCommonInstance + let urlBase = slashlessPath(nkCommon.urlBase) + let davSuffix = slashlessPath(nkCommon.dav) + let userId = nkCommon.userId + let itemRelPath = slashlessPath(itemRelativePath) + + let itemFullServerPath = "\(urlBase)/\(davSuffix)/files/\(userId)/\(itemRelPath)" return await withCheckedContinuation { continuation in - kit?.readFileOrFolder(serverUrlFileName: itemRelativePath, depth: "0") { + kit.readFileOrFolder(serverUrlFileName: itemFullServerPath, depth: "0") { account, files, data, error in guard error == .success else { let errorString = "Error getting item metadata: \(error.errorDescription)" -- 2.30.2