// 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
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) {