From 08436a129e7fe1efa0855b8f94b5614b8d23a701 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 12 Jan 2023 17:50:49 +0100 Subject: [PATCH] Added convenience functions to create paths for NC files (and create directories and placeholder files if inexistent) Signed-off-by: Claudio Cambra --- .../NextcloudFileProviderFilesUtils.swift | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/NextcloudFileProviderFilesUtils.swift b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/NextcloudFileProviderFilesUtils.swift index 01fcf1d4f..91b8062ea 100644 --- a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/NextcloudFileProviderFilesUtils.swift +++ b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/NextcloudFileProviderFilesUtils.swift @@ -27,3 +27,51 @@ func pathForFileProviderExtData() -> URL? { let containerUrl = pathForAppGroupContainer() return containerUrl?.appendingPathExtension("FileProviderExt/") } + +func pathForFileProviderExtFiles() -> URL? { + let fileProviderDataUrl = pathForFileProviderExtData() + return fileProviderDataUrl?.appendingPathExtension("Files/") +} + +@discardableResult func localPathForNCDirectory(ocId: String) throws -> URL { + guard let fileProviderFilesPathUrl = pathForFileProviderExtFiles() else { + throw URLError(.badURL) + } + + let folderPathUrl = fileProviderFilesPathUrl.appendingPathExtension(ocId) + let folderPath = folderPathUrl.path + + if !FileManager.default.fileExists(atPath: folderPath) { + try FileManager.default.createDirectory(at: folderPathUrl, withIntermediateDirectories: true) + } + + return folderPathUrl +} + +@discardableResult func localPathForNCDirectory(directoryMetadata: NextcloudDirectoryMetadataTable) throws -> URL { + let ocId = directoryMetadata.ocId + return try localPathForNCDirectory(ocId: ocId) +} + +@discardableResult func localPathForNCDirectory(fileMetadata: NextcloudFileMetadataTable) throws -> URL { + let ocId = fileMetadata.ocId + return try localPathForNCDirectory(ocId: ocId) +} + +@discardableResult func localPathForNCFile(ocId: String, fileNameView: String) throws -> URL { + let fileFolderPathUrl = try localPathForNCDirectory(ocId: ocId) + let filePathUrl = fileFolderPathUrl.appendingPathExtension(fileNameView) + let filePath = filePathUrl.path + + if !FileManager.default.fileExists(atPath: filePath) { + FileManager.default.createFile(atPath: filePath, contents: nil) + } + + return filePathUrl +} + +@discardableResult func localPathForNCFile(fileMetadata: NextcloudFileMetadataTable) throws -> URL { + let ocId = fileMetadata.ocId + let fileNameView = fileMetadata.fileNameView + return try localPathForNCFile(ocId: ocId, fileNameView: fileNameView) +} -- 2.30.2