Browse Source

Improvement Upload

Marino Faggiana 7 years ago
parent
commit
e6e665e51c
2 changed files with 19 additions and 15 deletions
  1. 17 15
      PickerFileProvider/FileProvider.swift
  2. 2 0
      PickerFileProvider/FileProviderItem.swift

+ 17 - 15
PickerFileProvider/FileProvider.swift

@@ -44,7 +44,7 @@ var changeDocumentURL: URL?
 var listUpdateItems = [NSFileProviderItem]()
 var listFavoriteIdentifierRank = [String:NSNumber]()
 
-var listUpload = [String:URLSessionTask]()
+var uploadIdentifierTask = [String:URLSessionTask]()
 var timer: Timer?
 
 class FileProvider: NSFileProviderExtension {
@@ -101,17 +101,24 @@ class FileProvider: NSFileProviderExtension {
             // Timer for upload
             if timer == nil {
                 timer = Timer.init(timeInterval: 5, repeats: true, block: { (Timer) in
-                    if let metadataNet = NCManageDatabase.sharedInstance.getQueueUpload() {
-                        if metadataNet.path != nil {
-                            if let directoryID = NCManageDatabase.sharedInstance.getDirectoryID(metadataNet.serverUrl) {
-                                if let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileName = %@ AND directoryID = %@", account, metadataNet.fileName, directoryID)) {
-                                    self.uploadCloud(metadataNet.fileName, serverUrl: metadataNet.serverUrl, path: metadataNet.path, identifier: NSFileProviderItemIdentifier(rawValue: metadata.fileID))
-                                }
+                    
+                    let metadataNet = NCManageDatabase.sharedInstance.getQueueUpload()
+                    
+                    if  metadataNet != nil && metadataNet!.path != nil && uploadIdentifierTask.count == 0 {
+                        if let directoryID = NCManageDatabase.sharedInstance.getDirectoryID(metadataNet!.serverUrl) {
+                            if let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileName = %@ AND directoryID = %@", account, metadataNet!.fileName, directoryID)) {
+                                self.uploadCloud(metadataNet!.fileName, serverUrl: metadataNet!.serverUrl, path: metadataNet!.path, identifier: NSFileProviderItemIdentifier(rawValue: metadata.fileID))
                             }
                         }
                     }
                     
                     //TODO: Very progress task
+                    if uploadIdentifierTask.count > 0 {
+                        let task = uploadIdentifierTask.first
+                        if (task != nil) {
+                            print("x")
+                        }
+                    }
                 })
                 RunLoop.main.add(timer!, forMode: .defaultRunLoopMode)
             }
@@ -976,11 +983,6 @@ class FileProvider: NSFileProviderExtension {
     
     func uploadCloud(_ fileName: String, serverUrl: String, path: String, identifier: NSFileProviderItemIdentifier) {
         
-        // Upload already exists
-        if listUpload[identifier.rawValue] != nil {
-            return
-        }
-        
         let fileNameLocalPath = directoryUser + "/" + fileName
         if self.copyFile(path, toPath: fileNameLocalPath) != nil {
             return
@@ -1007,18 +1009,18 @@ class FileProvider: NSFileProviderExtension {
             NCManageDatabase.sharedInstance.deleteQueueUpload(path: path)
             
             // Remove from dictionary
-            listUpload.removeValue(forKey: identifier.rawValue)
+            uploadIdentifierTask.removeValue(forKey: identifier.rawValue)
             
             // Remove file *changeDocument
             _ = self.deleteFile(fileNameLocalPath)
             
         }, failure: { (errorMessage, errorCode) in            
             // Remove from dictionary
-            listUpload.removeValue(forKey: identifier.rawValue)
+            uploadIdentifierTask.removeValue(forKey: identifier.rawValue)
         })
         
         if task != nil {
-            listUpload[identifier.rawValue] = task
+            uploadIdentifierTask[identifier.rawValue] = task
             if #available(iOSApplicationExtension 11.0, *) {
 //                NSFileProviderManager.default.register(task!, forItemWithIdentifier: identifier) { (error) in }
             }

+ 2 - 0
PickerFileProvider/FileProviderItem.swift

@@ -150,6 +150,7 @@ class FileProviderItem: NSObject, NSFileProviderItem {
             }
             
             // Upload
+            /*
             let queue = NCManageDatabase.sharedInstance.getQueueUpload(predicate: NSPredicate(format: "account = %@ AND (path = %@ || path = %@)", account, changeDocumentPath, importDocumentPath))
             if queue?.count == 0 {
                 self.isUploading = false
@@ -158,6 +159,7 @@ class FileProviderItem: NSObject, NSFileProviderItem {
                 self.isUploading = true
                 self.isUploaded = false
             }
+            */
             
         } else {