From 91a492106cbef850e134c84bf3392a4aef964c13 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Mon, 15 Apr 2024 22:42:53 +0800 Subject: [PATCH] Simplify FileProviderExtension's deleteItem method by leveraging Item's delete method Signed-off-by: Claudio Cambra --- .../FileProviderExtension.swift | 49 +++++-------------- 1 file changed, 12 insertions(+), 37 deletions(-) diff --git a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension.swift b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension.swift index cddbdf8a0..b6f2fba3c 100644 --- a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension.swift +++ b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension.swift @@ -704,61 +704,36 @@ import OSLog } func deleteItem( - identifier: NSFileProviderItemIdentifier, baseVersion _: NSFileProviderItemVersion, - options _: NSFileProviderDeleteItemOptions = [], request _: NSFileProviderRequest, + identifier: NSFileProviderItemIdentifier, + baseVersion _: NSFileProviderItemVersion, + options _: NSFileProviderDeleteItemOptions = [], + request _: NSFileProviderRequest, completionHandler: @escaping (Error?) -> Void ) -> Progress { Logger.fileProviderExtension.debug( - "Received delete item request for item with identifier: \(identifier.rawValue, privacy: .public)" + "Received delete request for item: \(identifier.rawValue, privacy: .public)" ) guard ncAccount != nil else { Logger.fileProviderExtension.error( - "Not deleting item: \(identifier.rawValue, privacy: .public) as account not set up yet" + "Not deleting item \(identifier.rawValue, privacy: .public), account not set up yet" ) completionHandler(NSFileProviderError(.notAuthenticated)) return Progress() } - let dbManager = FilesDatabaseManager.shared - let ocId = identifier.rawValue - guard let itemMetadata = dbManager.itemMetadataFromOcId(ocId) else { - completionHandler(NSFileProviderError(.noSuchItem)) - return Progress() - } - let serverFileNameUrl = itemMetadata.serverUrl + "/" + itemMetadata.fileName - guard serverFileNameUrl != "" else { + guard let item = Item.storedItem(identifier: identifier, usingKit: ncKit) else { completionHandler(NSFileProviderError(.noSuchItem)) return Progress() } - ncKit.deleteFileOrFolder(serverUrlFileName: serverFileNameUrl) { _, error in - guard error == .success else { - Logger.fileTransfer.error( - "Could not delete item with ocId \(identifier.rawValue, privacy: .public) at \(serverFileNameUrl, privacy: .public), received error: \(error.errorDescription, privacy: .public)" - ) - completionHandler(error.fileProviderError) - return - } - - Logger.fileTransfer.info( - "Successfully deleted item with identifier: \(identifier.rawValue, privacy: .public) at: \(serverFileNameUrl, privacy: .public)" - ) - - if itemMetadata.directory { - _ = dbManager.deleteDirectoryAndSubdirectoriesMetadata(ocId: ocId) - } else { - dbManager.deleteItemMetadata(ocId: ocId) - if dbManager.localFileMetadataFromOcId(ocId) != nil { - dbManager.deleteLocalFileMetadata(ocId: ocId) - } - } - - completionHandler(nil) + let progress = Progress(totalUnitCount: 1) + Task { + completionHandler(await item.delete()) + progress.completedUnitCount = 1 } - - return Progress() + return progress } func enumerator( -- 2.30.2