marinofaggiana 4 жил өмнө
parent
commit
45cd0408fd

+ 4 - 2
iOSClient/Main/CCMain.m

@@ -1107,7 +1107,7 @@
         tableMetadata *metadataSection = [[NCMainCommon shared] getMetadataFromSectionDataSourceIndexPath:indexPath sectionDataSource:sectionDataSource];
         
         if (metadataSection) {
-            [[NCNetworking shared] cancelTransferMetadata:metadataSection uploadStatusForcedStart:false];
+            [[NCNetworking shared] cancelTransferMetadata:metadataSection completion:^{ }];
         }
     }
 }
@@ -1121,7 +1121,9 @@
     
     [alertController addAction: [UIAlertAction actionWithTitle:NSLocalizedString(@"_cancel_all_task_", nil) style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {
         [NCUtility.shared startActivityIndicatorWithView:self.view bottom:0];
-        [[NCNetworking shared] cancelAllTransferWithAccount:appDelegate.account];
+        [[NCNetworking shared] cancelAllTransferWithAccount:appDelegate.account completion:^{
+            [self reloadDatasource:self.serverUrl ocId:nil];
+        }];
         [NCUtility.shared stopActivityIndicator];
     }]];
     

+ 1 - 1
iOSClient/Main/Collection/NCCollectionViewCommon.swift

@@ -596,7 +596,7 @@ class NCCollectionViewCommon: UIViewController, UIGestureRecognizerDelegate, UIS
         if namedButtonMore == "more" {
             toggleMoreMenu(viewController: tabBarController, metadata: metadata)
         } else if namedButtonMore == "stop" {
-            NCNetworking.shared.cancelTransferMetadata(metadata, uploadStatusForcedStart: false)
+            NCNetworking.shared.cancelTransferMetadata(metadata) { }
         }
     }
     

+ 51 - 55
iOSClient/Networking/NCNetworking.swift

@@ -620,93 +620,89 @@ import Queuer
         })
     }
     
-    @objc func cancelUpload(ocId: String) {
-        guard let metadata = NCManageDatabase.sharedInstance.getMetadataFromOcId(ocId) else { return }
-        guard let fileNameLocalPath = CCUtility.getDirectoryProviderStorageOcId(metadata.ocId, fileNameView: metadata.fileNameView) else { return }
-        
-        if let request = uploadRequest[fileNameLocalPath] {
-            request.cancel()
-        } else {
-            CCUtility.removeFile(atPath: CCUtility.getDirectoryProviderStorageOcId(metadata.ocId))
-            NCManageDatabase.sharedInstance.deleteMetadata(predicate: NSPredicate(format: "ocId == %@", metadata.ocId))
-        }
-        
-        NotificationCenter.default.postOnMainThread(name: k_notificationCenter_uploadCancelFile, userInfo: ["metadata":metadata])
-    }
-    
     //MARK: - Transfer (Download Upload)
     
-    @objc func cancelTransferMetadata(_ metadata: tableMetadata, uploadStatusForcedStart: Bool) {
+    @objc func cancelTransferMetadata(_ metadata: tableMetadata, completion: @escaping ()->()) {
         
+        let metadata = tableMetadata.init(value: metadata)
+
         if metadata.session.count == 0 {
             NCManageDatabase.sharedInstance.deleteMetadata(predicate: NSPredicate(format: "ocId == %@", metadata.ocId))
-            NotificationCenter.default.postOnMainThread(name: k_notificationCenter_reloadDataSource, userInfo: ["serverUrl":metadata.serverUrl])
+            completion()
             return
         }
-        let metadata = tableMetadata.init(value: metadata)
 
         if metadata.session == NCCommunicationCommon.shared.sessionIdentifierDownload {
+            
             NCNetworking.shared.cancelDownload(ocId: metadata.ocId, serverUrl: metadata.serverUrl, fileNameView: metadata.fileNameView)
-        } else if metadata.session == NCCommunicationCommon.shared.sessionIdentifierUpload {
-            NCNetworking.shared.cancelUpload(ocId: metadata.ocId)
-        } else {
+            completion()
+            return
+        }
         
-            var session: URLSession?
-            if metadata.session == NCNetworking.shared.sessionIdentifierBackground {
-                session = NCNetworking.shared.sessionManagerBackground
-            } else if metadata.session == NCNetworking.shared.sessionIdentifierBackgroundWWan {
-                session = NCNetworking.shared.sessionManagerBackgroundWWan
-            } else if metadata.session == NCNetworking.shared.sessionIdentifierBackgroundExtension {
-                session = NCNetworking.shared.sessionManagerBackgroundExtension
+        if metadata.session == NCCommunicationCommon.shared.sessionIdentifierUpload {
+            
+            guard let fileNameLocalPath = CCUtility.getDirectoryProviderStorageOcId(metadata.ocId, fileNameView: metadata.fileNameView) else { return }
+            
+            if let request = uploadRequest[fileNameLocalPath] {
+                request.cancel()
+            } else {
+                CCUtility.removeFile(atPath: CCUtility.getDirectoryProviderStorageOcId(metadata.ocId))
+                NCManageDatabase.sharedInstance.deleteMetadata(predicate: NSPredicate(format: "ocId == %@", metadata.ocId))
+                NotificationCenter.default.postOnMainThread(name: k_notificationCenter_uploadCancelFile, userInfo: ["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)
-                                NCManageDatabase.sharedInstance.addMetadata(metadata)
-                            }
-                            task.cancel()
-                            cancel = true
-                        }
+            completion()
+            return
+        }
+        
+        var session: URLSession?
+        if metadata.session == NCNetworking.shared.sessionIdentifierBackground {
+            session = NCNetworking.shared.sessionManagerBackground
+        } else if metadata.session == NCNetworking.shared.sessionIdentifierBackgroundWWan {
+            session = NCNetworking.shared.sessionManagerBackgroundWWan
+        } else if metadata.session == NCNetworking.shared.sessionIdentifierBackgroundExtension {
+            session = NCNetworking.shared.sessionManagerBackgroundExtension
+        }
+        
+        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 {
+                        task.cancel()
+                        cancel = true
                     }
-                    if cancel == false {
-                        do {
-                            try FileManager.default.removeItem(atPath: CCUtility.getDirectoryProviderStorageOcId(metadata.ocId))
-                        }
-                        catch { }
-                        NCManageDatabase.sharedInstance.deleteMetadata(predicate: NSPredicate(format: "ocId == %@", metadata.ocId))
-                        DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
-                            NotificationCenter.default.postOnMainThread(name: k_notificationCenter_reloadDataSource, userInfo: ["serverUrl":metadata.serverUrl])
-                        }
+                }
+                if cancel == false {
+                    do {
+                        try FileManager.default.removeItem(atPath: CCUtility.getDirectoryProviderStorageOcId(metadata.ocId))
                     }
+                    catch { }
+                    NCManageDatabase.sharedInstance.deleteMetadata(predicate: NSPredicate(format: "ocId == %@", metadata.ocId))
+                    NotificationCenter.default.postOnMainThread(name: k_notificationCenter_uploadCancelFile, userInfo: ["metadata":metadata])
                 }
             }
+            completion()
         }
     }
     
-    @objc func cancelAllTransfer(account: String) {
+    @objc func cancelAllTransfer(account: String, completion: @escaping ()->()) {
        
-        // Delete k_metadataStatusWaitUpload OR k_metadataStatusUploadError
         NCManageDatabase.sharedInstance.deleteMetadata(predicate: NSPredicate(format: "status == %d OR status == %d", account, k_metadataStatusWaitUpload, k_metadataStatusUploadError))
         
         let metadatas = NCManageDatabase.sharedInstance.getMetadatas(predicate: NSPredicate(format: "status != %d", k_metadataStatusNormal), sorted: "fileName", ascending: true)
         
         for metadata in metadatas {
             
-            // Modify
             if (metadata.status == k_metadataStatusWaitDownload || metadata.status == k_metadataStatusDownloadError) {
                 NCManageDatabase.sharedInstance.setMetadataSession(ocId: metadata.ocId, session: "", sessionError: "", sessionSelector: "", sessionTaskIdentifier: 0, status: Int(k_metadataStatusNormal))
             }
             
-            // Cancel Task
             if metadata.status == k_metadataStatusDownloading || metadata.status == k_metadataStatusUploading {
-                self.cancelTransferMetadata(metadata, uploadStatusForcedStart: false)
+                self.cancelTransferMetadata(metadata) {
+                    
+                }
             }
         }
         

+ 1 - 1
iOSClient/Settings/CCAdvanced.m

@@ -316,7 +316,7 @@
 {
     [appDelegate maintenanceMode:YES];
     
-    [[NCNetworking shared] cancelAllTransferWithAccount:appDelegate.account];
+    [[NCNetworking shared] cancelAllTransferWithAccount:appDelegate.account completion:^{ }];
     [[NCOperationQueue shared] cancelAllQueue];
 
     [[NSURLCache sharedURLCache] setMemoryCapacity:0];

+ 3 - 1
iOSClient/Transfers/NCTransfers.swift

@@ -147,7 +147,9 @@ class NCTransfers: NCCollectionViewCommon  {
        
         alertController.addAction(UIAlertAction(title: NSLocalizedString("_cancel_", comment: ""), style: .cancel, handler: nil))
         alertController.addAction(UIAlertAction(title: NSLocalizedString("_cancel_all_task_", comment: ""), style: .default, handler: { action in
-            NCNetworking.shared.cancelAllTransfer(account: self.appDelegate.account)
+            NCNetworking.shared.cancelAllTransfer(account: self.appDelegate.account) {
+                self.reloadDataSource()
+            }
         }))
        
         self.present(alertController, animated: true, completion: nil)