marinofaggiana 4 лет назад
Родитель
Сommit
c6002d5be3

+ 1 - 1
iOSClient/Main/NCDetailViewController.swift

@@ -819,7 +819,7 @@ extension NCDetailViewController: NCViewerImageViewControllerDelegate, NCViewerI
                     
                     if errorCode == 0 && account == metadata.account {
                         
-                        _ = NCManageDatabase.sharedInstance.addLocalFile(metadata: metadata)
+                        NCManageDatabase.sharedInstance.addLocalFile(metadata: metadata)
                         self.viewMOV(viewerImageViewController: viewerImageViewController, metadata: metadata)
                     }
                 }

+ 46 - 38
iOSClient/Main/NCMainCommon.swift

@@ -141,54 +141,62 @@ class NCMainCommon: NSObject, NCAudioRecorderViewControllerDelegate, UIDocumentI
     
     @objc func cancelTransferMetadata(_ metadata: tableMetadata, reloadDatasource: Bool, uploadStatusForcedStart: Bool) {
         
-        var actionReloadDatasource = k_action_NULL
-        var metadata = metadata
-        
         if metadata.session.count == 0 { return }
-        guard let session = CCNetworking.shared().getSessionfromSessionDescription(metadata.session) else { return }
-        
-        session.getTasksWithCompletionHandler { (dataTasks, uploadTasks, downloadTasks) in
-            
-            var cancel = false
+        let serverUrl = metadata.serverUrl
+
+        if metadata.session == NCCommunicationCommon.shared.sessionIdentifierDownload {
             
-            // DOWNLOAD
-            if metadata.session.count > 0 && metadata.session.contains("download") {
-                for task in downloadTasks {
-                    if task.taskIdentifier == metadata.sessionTaskIdentifier {
-                        task.cancel()
-                        cancel = true
+            NCCommunication.shared.getDownloadTask(taskIdentifier: metadata.sessionTaskIdentifier) { (task) in
+                if task != nil {
+                    task?.cancel()
+                } else {
+                    if let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "ocId == %@", metadata.ocId)) {
+                        
+                        metadata.session = ""
+                        metadata.sessionError = ""
+                        metadata.sessionTaskIdentifier = Int(k_taskIdentifierDone)
+                        metadata.status = Int(k_metadataStatusNormal)
+                        
+                        NCManageDatabase.sharedInstance.addMetadata(metadata)
                     }
                 }
-                if cancel == false {
-                    NCManageDatabase.sharedInstance.setMetadataSession("", sessionError: "", sessionSelector: "", sessionTaskIdentifier: Int(k_taskIdentifierDone), status: Int(k_metadataStatusNormal), predicate: NSPredicate(format: "ocId == %@", metadata.ocId))
-                }
-                actionReloadDatasource = k_action_MOD
+                NotificationCenter.default.post(name: Notification.Name.init(rawValue: k_notificationCenter_clearDateReadDataSource), object: nil, userInfo: ["serverUrl":serverUrl])
             }
             
-            // UPLOAD
-            if metadata.session.count > 0 && metadata.session.contains("upload") {
-                for task in uploadTasks {
-                    if task.taskIdentifier == metadata.sessionTaskIdentifier {
-                        if uploadStatusForcedStart {
-                            metadata.status = Int(k_metadataStatusUploadForcedStart)
-                            metadata = NCManageDatabase.sharedInstance.addMetadata(metadata) ?? metadata
+        } else {
+        
+            var actionReloadDatasource = k_action_NULL
+            guard let session = CCNetworking.shared().getSessionfromSessionDescription(metadata.session) else { return }
+            var metadata = metadata
+
+            session.getTasksWithCompletionHandler { (dataTasks, uploadTasks, downloadTasks) in
+                
+                var cancel = false
+                
+                if metadata.session.count > 0 && metadata.session.contains("upload") {
+                    for task in uploadTasks {
+                        if task.taskIdentifier == metadata.sessionTaskIdentifier {
+                            if uploadStatusForcedStart {
+                                metadata.status = Int(k_metadataStatusUploadForcedStart)
+                                metadata = NCManageDatabase.sharedInstance.addMetadata(metadata) ?? metadata
+                            }
+                            task.cancel()
+                            cancel = true
                         }
-                        task.cancel()
-                        cancel = true
                     }
-                }
-                if cancel == false {
-                    do {
-                        try FileManager.default.removeItem(atPath: CCUtility.getDirectoryProviderStorageOcId(metadata.ocId))
+                    if cancel == false {
+                        do {
+                            try FileManager.default.removeItem(atPath: CCUtility.getDirectoryProviderStorageOcId(metadata.ocId))
+                        }
+                        catch { }
+                        NCManageDatabase.sharedInstance.deleteMetadata(predicate: NSPredicate(format: "ocId == %@", metadata.ocId))
                     }
-                    catch { }
-                    NCManageDatabase.sharedInstance.deleteMetadata(predicate: NSPredicate(format: "ocId == %@", metadata.ocId))
+                    actionReloadDatasource = k_action_DEL
+                }
+                
+                DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
+                    self.reloadDatasource(ServerUrl: metadata.serverUrl, ocId: metadata.ocId, action: actionReloadDatasource)
                 }
-                actionReloadDatasource = k_action_DEL
-            }
-            
-            DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
-                self.reloadDatasource(ServerUrl: metadata.serverUrl, ocId: metadata.ocId, action: actionReloadDatasource)
             }
         }
     }

+ 1 - 1
iOSClient/Networking/NCNetworking.swift

@@ -246,7 +246,7 @@ import NCCommunication
             }
             
             if let result = NCManageDatabase.sharedInstance.addMetadata(metadata) { metadata = result }
-
+            
             NotificationCenter.default.post(name: Notification.Name.init(rawValue: k_notificationCenter_downloadedFile), object: nil, userInfo: ["metadata":metadata, "selector":selector, "errorCode":errorCode, "errorDescription":errorDescription])
         }
     }

+ 3 - 3
iOSClient/Networking/NCNetworkingNotificationCenter.swift

@@ -61,8 +61,6 @@ import Foundation
                 
                 if errorCode == 0 {
                     
-                    NCMainCommon.sharedInstance.reloadDatasource(ServerUrl: metadata.serverUrl, ocId: metadata.ocId, action: Int32(k_action_MOD))
-                    
                     // Synchronized
                     if selector == selectorDownloadSynchronize {
                         appDelegate.updateApplicationIconBadgeNumber()
@@ -167,7 +165,9 @@ import Foundation
                     } else {
                         NCContentPresenter.shared.messageNotification("_download_file_", description: errorDescription, delay: TimeInterval(k_dismissAfterSecond), type: NCContentPresenter.messageType.error, errorCode: errorCode)
                     }
-                }            
+                }
+                
+                NotificationCenter.default.post(name: Notification.Name.init(rawValue: k_notificationCenter_clearDateReadDataSource), object: nil, userInfo: ["serverUrl":metadata.serverUrl])
             }
         }
     }