瀏覽代碼

Add deleting

Marino Faggiana 7 年之前
父節點
當前提交
f33c4f975b
共有 2 個文件被更改,包括 40 次插入2 次删除
  1. 38 0
      PickerFileProvider/FileProvider.swift
  2. 2 2
      PickerFileProvider/FileProviderItem.swift

+ 38 - 0
PickerFileProvider/FileProvider.swift

@@ -567,6 +567,44 @@ class FileProvider: NSFileProviderExtension {
         })
     }
     
+    override func deleteItem(withIdentifier itemIdentifier: NSFileProviderItemIdentifier, completionHandler: @escaping (Error?) -> Void) {
+        
+        /* ONLY iOS 11*/
+        guard #available(iOS 11, *) else {
+            return
+        }
+        
+        guard let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, itemIdentifier.rawValue)) else {
+            completionHandler(NSFileProviderError(.noSuchItem))
+            return
+        }
+        
+        guard let serverUrl = NCManageDatabase.sharedInstance.getServerUrl(metadata.directoryID) else {
+            completionHandler(NSFileProviderError(.noSuchItem))
+            return
+        }
+        
+        ocNetworking?.deleteFileOrFolder(metadata.fileName, serverUrl: serverUrl, success: {
+            
+            let fileNamePath = directoryUser + "/" + metadata.fileID
+            try? FileManager.default.removeItem(atPath: fileNamePath)
+            try? FileManager.default.removeItem(atPath: fileNamePath + ".ico")
+            
+            if metadata.directory {
+                let dirForDelete = CCUtility.stringAppendServerUrl(serverUrl, addFileName: metadata.fileName)
+                NCManageDatabase.sharedInstance.deleteDirectoryAndSubDirectory(serverUrl: dirForDelete!)
+            }
+            
+            NCManageDatabase.sharedInstance.deleteLocalFile(predicate: NSPredicate(format: "fileID == %@", metadata.fileID))
+            NCManageDatabase.sharedInstance.deleteMetadata(predicate: NSPredicate(format: "fileID == %@", metadata.fileID), clearDateReadDirectoryID: nil)
+            
+            completionHandler(nil)
+            
+        }, failure: { (error, errorCode) in
+            completionHandler(NSFileProviderError(.serverUnreachable))
+        })
+    }
+    
     override func importDocument(at fileURL: URL, toParentItemIdentifier parentItemIdentifier: NSFileProviderItemIdentifier, completionHandler: @escaping (NSFileProviderItem?, Error?) -> Void) {
         
         /* ONLY iOS 11*/

+ 2 - 2
PickerFileProvider/FileProviderItem.swift

@@ -35,9 +35,9 @@ class FileProviderItem: NSObject, NSFileProviderItem {
     var capabilities: NSFileProviderItemCapabilities {              // The item's capabilities
         
         if (self.isDirectory) {
-            return [ .allowsAddingSubItems, .allowsContentEnumerating, .allowsReading ]
+            return [ .allowsAddingSubItems, .allowsContentEnumerating, .allowsReading, .allowsDeleting ]
         } else {
-            return [ .allowsReading ]
+            return [ .allowsReading, .allowsDeleting ]
         }
     }