marinofaggiana 4 лет назад
Родитель
Сommit
71af995e84
2 измененных файлов с 17 добавлено и 20 удалено
  1. 0 3
      iOSClient/CCGlobal.h
  2. 17 17
      iOSClient/Networking/NCNetworking.swift

+ 0 - 3
iOSClient/CCGlobal.h

@@ -116,9 +116,6 @@
 #define k_serviceShareKeyChain                          @"Crypto Cloud"
 #define k_metadataKeyedUnarchiver                       @"it.twsweb.nextcloud.metadata"
 
-// TaskIdentifier
-#define k_taskIdentifierDone                            0
-
 // TaskStatus
 #define k_taskStatusCancel                              -1
 #define k_taskStatusResume                              -2

+ 17 - 17
iOSClient/Networking/NCNetworking.swift

@@ -413,6 +413,7 @@ import Alamofire
                 
                 metadata.session = ""
                 metadata.sessionError = ""
+                metadata.sessionTaskIdentifier = 0
                 metadata.status = Int(k_metadataStatusNormal)
                         
                 if let result = NCManageDatabase.sharedInstance.addMetadata(metadata) { metadata = result }
@@ -470,6 +471,7 @@ import Alamofire
                 
                 metadata.session = ""
                 metadata.sessionError = errorDescription
+                metadata.sessionTaskIdentifier = 0
                 metadata.status = Int(k_metadataStatusUploadError)
                 
                 NotificationCenter.default.post(name: Notification.Name.init(rawValue: k_notificationCenter_uploadedFile), object: nil, userInfo: ["metadata":metadata, "errorCode":errorCode, "errorDescription":errorDescription])
@@ -543,15 +545,14 @@ import Alamofire
                     
                     if !findTask {
                         DispatchQueue.main.asyncAfter(deadline: .now() + 5) {
-                            if let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "ocId == %@", metadata.ocId)) {
-                                if metadata.sessionTaskIdentifier != Int(k_taskIdentifierDone) {
-                                    metadata.session = NCCommunicationCommon.shared.sessionIdentifierBackground
-                                    metadata.sessionError = ""
-                                    metadata.sessionTaskIdentifier = Int(k_taskIdentifierDone)
-                                    metadata.status = Int(k_metadataStatusWaitUpload)
+                            if let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "ocId == %@ AND status == %d", metadata.ocId, k_metadataStatusUploading)) {
                                     
-                                    NCManageDatabase.sharedInstance.addMetadata(metadata)
-                                }
+                                metadata.session = NCCommunicationCommon.shared.sessionIdentifierBackground
+                                metadata.sessionError = ""
+                                metadata.sessionTaskIdentifier = 0
+                                metadata.status = Int(k_metadataStatusWaitUpload)
+                                    
+                                NCManageDatabase.sharedInstance.addMetadata(metadata)
                             }
                         }
                     }
@@ -560,19 +561,18 @@ import Alamofire
         }
         
         // verify k_metadataStatusInUpload
-        if let metadatas = NCManageDatabase.sharedInstance.getMetadatas(predicate: NSPredicate(format: "(session == %@ OR session == %@) AND status == %d", sessionBackground, sessionBackgroundWWan, k_metadataStatusInUpload), sorted: nil, ascending: true) {
+        if let metadatas = NCManageDatabase.sharedInstance.getMetadatas(predicate: NSPredicate(format: "(session == %@ OR session == %@) AND status == %d AND sessionTaskIdentifier == 0", sessionBackground, sessionBackgroundWWan, k_metadataStatusInUpload), sorted: nil, ascending: true) {
             
             for metadata in metadatas {
                 DispatchQueue.main.asyncAfter(deadline: .now() + 5) {
-                    if let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "ocId == %@", metadata.ocId)) {
-                        if metadata.sessionTaskIdentifier == Int(k_taskIdentifierDone) {
-                            metadata.session = NCCommunicationCommon.shared.sessionIdentifierBackground
-                            metadata.sessionError = ""
-                            metadata.sessionTaskIdentifier = Int(k_taskIdentifierDone)
-                            metadata.status = Int(k_metadataStatusWaitUpload)
+                    if let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "ocId == %@ AND status == %d AND sessionTaskIdentifier == 0", metadata.ocId, k_metadataStatusInUpload)) {
+                       
+                        metadata.session = NCCommunicationCommon.shared.sessionIdentifierBackground
+                        metadata.sessionError = ""
+                        metadata.sessionTaskIdentifier = 0
+                        metadata.status = Int(k_metadataStatusWaitUpload)
                             
-                            NCManageDatabase.sharedInstance.addMetadata(metadata)
-                        }
+                        NCManageDatabase.sharedInstance.addMetadata(metadata)
                     }
                 }
             }