Marino Faggiana 6 năm trước cách đây
mục cha
commit
37bf1c60dc

+ 4 - 0
File Provider Extension/FileProviderData.swift

@@ -279,4 +279,8 @@ class FileProviderData: NSObject {
         
         return errorResult
     }
+    
+    func fileExists(atPath: String) -> Bool {
+        return fileManager.fileExists(atPath: atPath)
+    }
 }

+ 14 - 2
File Provider Extension/FileProviderExtension+Network.swift

@@ -263,9 +263,21 @@ extension FileProviderExtension {
         }
     }
     
-    func uploadFileItemChanged(for itemIdentifier: NSFileProviderItemIdentifier, url: URL) {
+    func uploadFileItemChanged(for itemIdentifier: NSFileProviderItemIdentifier, fileName: String, url: URL) {
         
-        guard let metadata = providerData.getTableMetadataFromItemIdentifier(itemIdentifier) else {
+        var itemIdentifierForUpload = itemIdentifier
+        
+        // Is itemIdentifier = directoryID+fileName [Apple Works]
+        if itemIdentifier.rawValue.contains(fileName) && providerData.fileExists(atPath: CCUtility.getDirectoryProviderStorage()+"/"+itemIdentifier.rawValue) {
+            let directoryID = itemIdentifier.rawValue.replacingOccurrences(of: fileName, with: "")
+            guard let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "directoryID == %@ AND fileName == %@", directoryID, fileName)) else {
+                return
+            }
+            itemIdentifierForUpload = providerData.getItemIdentifier(metadata: metadata)
+            _ = providerData.moveFile(CCUtility.getDirectoryProviderStorage()+"/"+itemIdentifier.rawValue, toPath: CCUtility.getDirectoryProviderStorage()+"/"+itemIdentifierForUpload.rawValue)
+        }
+        
+        guard let metadata = providerData.getTableMetadataFromItemIdentifier(itemIdentifierForUpload) else {
             return
         }
         

+ 3 - 2
File Provider Extension/FileProviderExtension.swift

@@ -293,8 +293,9 @@ class FileProviderExtension: NSFileProviderExtension, CCNetworkingDelegate {
         assert(pathComponents.count > 2)
 
         let itemIdentifier = NSFileProviderItemIdentifier(pathComponents[pathComponents.count - 2])
-            
-        uploadFileItemChanged(for: itemIdentifier, url: url)
+        let fileName = pathComponents[pathComponents.count - 1]
+        
+        uploadFileItemChanged(for: itemIdentifier, fileName: fileName, url: url)
     }
     
     override func stopProvidingItem(at url: URL) {