]> dgit.raspbian.org Git - nextcloud-desktop.git/commitdiff
Simplify FileProviderExtension's deleteItem method by leveraging Item's delete method
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Mon, 15 Apr 2024 14:42:53 +0000 (22:42 +0800)
committerbackportbot[bot] <backportbot[bot]@users.noreply.github.com>
Wed, 17 Apr 2024 08:44:12 +0000 (08:44 +0000)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension.swift

index cddbdf8a0c90a710259f08b20491e789d9b5270d..b6f2fba3c47a7039d57ab409d9638ff445e9248c 100644 (file)
@@ -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(