Marino Faggiana 7 年 前
コミット
798d4b2b5d
1 ファイル変更32 行追加34 行削除
  1. 32 34
      PickerFileProvider/FileProvider.swift

+ 32 - 34
PickerFileProvider/FileProvider.swift

@@ -42,10 +42,13 @@ var changeDocumentURL: URL?
 
 // List
 var listUpdateItems = [NSFileProviderItem]()
-var listUpload = [String:URLSessionTask]()
 
 class FileProvider: NSFileProviderExtension {
     
+    var listDownload = [String:URLSessionTask]()
+    var listUpload = [String:URLSessionTask]()
+
+    
     override init() {
         
         super.init()
@@ -260,11 +263,24 @@ class FileProvider: NSFileProviderExtension {
         
         if #available(iOSApplicationExtension 11.0, *) {
 
+            var fileSize : UInt64 = 0
+
+            do {
+                let attr = try FileManager.default.attributesOfItem(atPath: url.path)
+                fileSize = attr[FileAttributeKey.size] as! UInt64
+            } catch let error {
+                print("Error: \(error)")
+            }
+            
+            if fileSize > 0 {
+                completionHandler(nil)
+                return
+            }
+            
             //let fileName = url.lastPathComponent
             let pathComponents = url.pathComponents
             let identifier = NSFileProviderItemIdentifier(pathComponents[pathComponents.count - 2])
             //let changeDocumentPath = changeDocumentURL!.path + "/" + fileName
-            var fileSize : UInt64 = 0
             
             guard let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, identifier.rawValue)) else {
                 completionHandler(NSFileProviderError(.noSuchItem))
@@ -276,43 +292,25 @@ class FileProvider: NSFileProviderExtension {
                 return
             }
             
-            do {
-                let attr = try FileManager.default.attributesOfItem(atPath: url.path)
-                fileSize = attr[FileAttributeKey.size] as! UInt64
-            } catch let error {
-                print("Error: \(error)")
-            }
-            
-            // Do not exists
-            if fileSize == 0 {
-            
-                let task = ocNetworking?.downloadFileNameServerUrl("\(serverUrl)/\(metadata.fileName)", fileNameLocalPath: "\(directoryUser)/\(metadata.fileID)", communication: CCNetworking.shared().sharedOCCommunicationExtensionDownload(metadata.fileName), success: { (lenght) in
+            let task = ocNetworking?.downloadFileNameServerUrl("\(serverUrl)/\(metadata.fileName)", fileNameLocalPath: "\(directoryUser)/\(metadata.fileID)", communication: CCNetworking.shared().sharedOCCommunicationExtensionDownload(metadata.fileName), success: { (lenght) in
                     
-                    NCManageDatabase.sharedInstance.addLocalFile(metadata: metadata)
+                NCManageDatabase.sharedInstance.addLocalFile(metadata: metadata)
                     
-                    // copy download file to url
-                    _ = self.copyFile("\(directoryUser)/\(metadata.fileID)", toPath: url.path)
+                // copy download file to url
+                _ = self.copyFile("\(directoryUser)/\(metadata.fileID)", toPath: url.path)
                     
-                    completionHandler(nil)
+                completionHandler(nil)
                     
-                }, failure: { (message, errorCode) in
-                    completionHandler(NSFileProviderError(.serverUnreachable))
-                })
+            }, failure: { (message, errorCode) in
+                completionHandler(NSFileProviderError(.serverUnreachable))
+            })
                 
-                if task != nil {
-                    NSFileProviderManager.default.register(task!, forItemWithIdentifier: NSFileProviderItemIdentifier(identifier.rawValue)) { (error) in
-                        print("Registe download task")
-                    }
+            if task != nil {
+                NSFileProviderManager.default.register(task!, forItemWithIdentifier: NSFileProviderItemIdentifier(identifier.rawValue)) { (error) in
+                    print("Registe download task")
                 }
-                
-            } else {
-
-                // Exists
-                completionHandler(nil)
-                // Refresh
-                self.refreshEnumerator(identifier: identifier, serverUrl: serverUrl)
             }
-            
+                
         } else {
             
             guard let fileData = try? Data(contentsOf: url) else {
@@ -859,7 +857,7 @@ class FileProvider: NSFileProviderExtension {
             // Remove file on queueUpload
             NCManageDatabase.sharedInstance.deleteQueueUpload(path: fileNameLocalPath)
             // Remove from dictionary
-            listUpload.removeValue(forKey: identifier.rawValue)
+            self.listUpload.removeValue(forKey: identifier.rawValue)
             
             metadata.date = date! as NSDate
             
@@ -880,7 +878,7 @@ class FileProvider: NSFileProviderExtension {
             
         }, failure: { (message, errorCode) in
             // Remove from dictionary
-            listUpload.removeValue(forKey: identifier.rawValue)
+            self.listUpload.removeValue(forKey: identifier.rawValue)
             // Refresh
             self.refreshEnumerator(identifier: identifier, serverUrl: serverUrl)
         })