From 762aee8e4192bb8a16dc068289a1ae13de50114a Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Wed, 15 Mar 2023 12:59:02 +0100 Subject: [PATCH] Simplify temp local file creation while fetching contents, use File Provider volume Signed-off-by: Claudio Cambra --- .../FileProviderExtension.swift | 2 +- .../FileProviderExt/LocalFilesUtils.swift | 28 +++++++------------ 2 files changed, 11 insertions(+), 19 deletions(-) diff --git a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension.swift b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension.swift index 892d1619d..d6b699c3c 100644 --- a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension.swift +++ b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension.swift @@ -145,7 +145,7 @@ class FileProviderExtension: NSObject, NSFileProviderReplicatedExtension, NKComm // TODO: Handle folders nicely do { - let fileNameLocalPath = try localPathForNCFile(ocId: metadata.ocId, fileNameView: metadata.fileNameView) + let fileNameLocalPath = try localPathForNCFile(ocId: metadata.ocId, fileNameView: metadata.fileNameView, domain: self.domain) dbManager.setStatusForItemMetadata(metadata, status: NextcloudItemMetadataTable.Status.downloading) { updatedMetadata in diff --git a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/LocalFilesUtils.swift b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/LocalFilesUtils.swift index 0a9d1eaa4..bb3a2bdbc 100644 --- a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/LocalFilesUtils.swift +++ b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/LocalFilesUtils.swift @@ -30,29 +30,21 @@ func pathForFileProviderExtData() -> URL? { return containerUrl?.appendingPathComponent("FileProviderExt/") } -func pathForFileProviderExtFiles() -> URL? { - let fileProviderDataUrl = pathForFileProviderExtData() - return fileProviderDataUrl?.appendingPathComponent("Files/") -} - -@discardableResult func localPathForNCDirectory(ocId: String) throws -> URL { - guard let fileProviderFilesPathUrl = pathForFileProviderExtFiles() else { - throw URLError(.badURL) +func pathForFileProviderTempFilesForDomain(_ domain: NSFileProviderDomain) throws -> URL? { + guard let fpManager = NSFileProviderManager(for: domain) else { + throw NSFileProviderError(.providerNotFound) } - let folderPathUrl = fileProviderFilesPathUrl.appendingPathComponent(ocId) - let folderPath = folderPathUrl.path + let fileProviderDataUrl = try fpManager.temporaryDirectoryURL() + return fileProviderDataUrl.appendingPathComponent("TemporaryNextcloudFiles/") +} - if !FileManager.default.fileExists(atPath: folderPath) { - try FileManager.default.createDirectory(at: folderPathUrl, withIntermediateDirectories: true) +func localPathForNCFile(ocId: String, fileNameView: String, domain: NSFileProviderDomain) throws -> URL { + guard let fileProviderFilesPathUrl = try pathForFileProviderTempFilesForDomain(domain) else { + throw URLError(.badURL) } - return folderPathUrl -} - -@discardableResult func localPathForNCFile(ocId: String, fileNameView: String) throws -> URL { - let fileFolderPathUrl = try localPathForNCDirectory(ocId: ocId) - let filePathUrl = fileFolderPathUrl.appendingPathComponent(fileNameView) + let filePathUrl = fileProviderFilesPathUrl.appendingPathComponent(fileNameView) let filePath = filePathUrl.path if !FileManager.default.fileExists(atPath: filePath) { -- 2.30.2