marinofaggiana 3 年之前
父節點
當前提交
4b685100f9

+ 3 - 1
Share/NCShareExtension.swift

@@ -349,7 +349,9 @@ class NCShareExtension: UIViewController, NCListCellDelegate, NCEmptyDataSetDele
                     metadata.chunk = true
                 }
                 
-                NCNetworking.shared.upload(metadata: metadata) { (errorCode, errorDescription) in
+                NCNetworking.shared.upload(metadata: metadata) {
+                    
+                } completion: { (errorCode, errorDescription) in
                     
                     NCUtility.shared.stopActivityIndicator()
                     

+ 16 - 12
iOSClient/Networking/NCNetworking.swift

@@ -338,7 +338,7 @@ import Queuer
     
     //MARK: - Upload
 
-    @objc func upload(metadata: tableMetadata, completion: @escaping (_ errorCode: Int, _ errorDescription: String)->())  {
+    @objc func upload(metadata: tableMetadata, start: @escaping () -> Void, completion: @escaping (_ errorCode: Int, _ errorDescription: String)->())  {
            
         let metadata = tableMetadata.init(value: metadata)
 
@@ -369,14 +369,14 @@ import Queuer
            
             if metadata.e2eEncrypted {
                 #if !EXTENSION
-                NCNetworkingE2EE.shared.upload(metadata: tableMetadata.init(value: metadata), account: account, completion: completion)
+                NCNetworkingE2EE.shared.upload(metadata: tableMetadata.init(value: metadata), account: account, start: { start() }, completion: completion)
                 #endif
             } else if metadata.chunk {
-                uploadChunkedFile(metadata: tableMetadata.init(value: metadata), userId: account.userId, completion: completion)
+                uploadChunkedFile(metadata: tableMetadata.init(value: metadata), userId: account.userId, start: { start() }, completion: completion)
             } else if metadata.session == NCCommunicationCommon.shared.sessionIdentifierUpload {
-                uploadFile(metadata: tableMetadata.init(value: metadata), account: account, completion: completion)
+                uploadFile(metadata: tableMetadata.init(value: metadata), account: account, start: { start() }, completion: completion)
             } else {
-                uploadFileInBackground(metadata: tableMetadata.init(value: metadata), account: account, completion: completion)
+                uploadFileInBackground(metadata: tableMetadata.init(value: metadata), account: account, start: { start() }, completion: completion)
             }
            
         } else {
@@ -396,20 +396,20 @@ import Queuer
                
                 if metadata.e2eEncrypted {
                     #if !EXTENSION
-                    NCNetworkingE2EE.shared.upload(metadata: tableMetadata.init(value: extractMetadata), account: account, completion: completion)
+                    NCNetworkingE2EE.shared.upload(metadata: tableMetadata.init(value: extractMetadata), account: account, start: { start() }, completion: completion)
                     #endif
                 } else if metadata.chunk {
-                    self.uploadChunkedFile(metadata: tableMetadata.init(value: extractMetadata), userId: account.userId, completion: completion)
+                    self.uploadChunkedFile(metadata: tableMetadata.init(value: metadata), userId: account.userId, start: { start() }, completion: completion)
                 } else if metadata.session == NCCommunicationCommon.shared.sessionIdentifierUpload {
-                    self.uploadFile(metadata: tableMetadata.init(value: extractMetadata), account: account, completion: completion)
+                    self.uploadFile(metadata: tableMetadata.init(value: extractMetadata), account: account, start: { start() }, completion: completion)
                 } else {
-                    self.uploadFileInBackground(metadata: tableMetadata.init(value: extractMetadata), account: account, completion: completion)
+                    self.uploadFileInBackground(metadata: tableMetadata.init(value: extractMetadata), account: account, start: { start() }, completion: completion)
                 }
             }
         }
     }
     
-    private func uploadFile(metadata: tableMetadata, account: tableAccount, completion: @escaping (_ errorCode: Int, _ errorDescription: String)->()) {
+    private func uploadFile(metadata: tableMetadata, account: tableAccount, start: @escaping () -> Void, completion: @escaping (_ errorCode: Int, _ errorDescription: String)->()) {
         
         let serverUrlFileName = metadata.serverUrl + "/" + metadata.fileName
         let fileNameLocalPath = CCUtility.getDirectoryProviderStorageOcId(metadata.ocId, fileNameView: metadata.fileNameView)!
@@ -425,6 +425,7 @@ import Queuer
             uploadTask = task
             NCManageDatabase.shared.setMetadataSession(ocId: metadata.ocId, sessionError: "", sessionTaskIdentifier: task.taskIdentifier, status: NCGlobal.shared.metadataStatusUploading)
             NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterUploadStartFile, userInfo: ["ocId":metadata.ocId])
+            start()
             
         }, progressHandler: { (progress) in
             
@@ -439,7 +440,7 @@ import Queuer
         }
     }
     
-    private func uploadFileInBackground(metadata: tableMetadata, account: tableAccount, completion: @escaping (_ errorCode: Int, _ errorDescription: String)->()) {
+    private func uploadFileInBackground(metadata: tableMetadata, account: tableAccount, start: @escaping () -> Void, completion: @escaping (_ errorCode: Int, _ errorDescription: String)->()) {
         
         var session: URLSession?
         let metadata = tableMetadata.init(value: metadata)
@@ -452,10 +453,13 @@ import Queuer
             session = sessionManagerBackgroundWWan
         }
         
+        start()
+        
         // Check file dim > 0
         if NCUtilityFileSystem.shared.getFileSize(filePath: fileNameLocalPath) == 0 {
         
             NCManageDatabase.shared.deleteMetadata(predicate: NSPredicate(format: "ocId == %@", metadata.ocId))
+            
             completion(404, NSLocalizedString("_error_not_found_", value: "The requested resource could not be found", comment: ""))
         
         } else {
@@ -538,7 +542,7 @@ import Queuer
                     if metadata.status == NCGlobal.shared.metadataStatusUploadForcedStart {
                         
                         NCManageDatabase.shared.setMetadataSession(ocId: ocId!, session: sessionIdentifierBackground, sessionError: "", sessionTaskIdentifier: 0, status: NCGlobal.shared.metadataStatusInUpload)
-                        NCNetworking.shared.upload(metadata: metadata) { (_, _) in }
+                        NCNetworking.shared.upload(metadata: metadata) { } completion: { (_, _) in }
                                                 
                     } else {
                         

+ 3 - 1
iOSClient/Networking/NCNetworkingChunkedUpload.swift

@@ -27,7 +27,7 @@ import Queuer
 
 extension NCNetworking {
     
-    internal func uploadChunkedFile(metadata: tableMetadata, userId: String, completion: @escaping (_ errorCode: Int, _ errorDescription: String)->()) {
+    internal func uploadChunkedFile(metadata: tableMetadata, userId: String, start: @escaping () -> Void, completion: @escaping (_ errorCode: Int, _ errorDescription: String)->()) {
         
         let directoryProviderStorageOcId = CCUtility.getDirectoryProviderStorageOcId(metadata.ocId)!
         let chunkFolder = NCManageDatabase.shared.getChunkFolder(account: metadata.account, ocId: metadata.ocId)
@@ -63,6 +63,8 @@ extension NCNetworking {
                 
         createChunkedFolder(chunkFolderPath: chunkFolderPath, account: metadata.account) { (errorCode, errorDescription) in
             
+            start()
+
             if errorCode == 0 {
                     
                 NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterUploadStartFile, userInfo: ["ocId": metadata.ocId])

+ 3 - 1
iOSClient/Networking/NCNetworkingE2EE.swift

@@ -194,13 +194,15 @@ import Alamofire
     
     //MARK: - Upload
     
-    func upload(metadata: tableMetadata, account: tableAccount, completion: @escaping (_ errorCode: Int, _ errorDescription: String)->()) {
+    func upload(metadata: tableMetadata, account: tableAccount, start: @escaping () -> Void, completion: @escaping (_ errorCode: Int, _ errorDescription: String)->()) {
         
         let objectE2eEncryption = tableE2eEncryption()
         var key: NSString?, initializationVector: NSString?, authenticationTag: NSString?
         let ocIdTemp = metadata.ocId
         let serverUrl = metadata.serverUrl
         
+        start()
+        
         // Verify max size
         if metadata.size > NCGlobal.shared.e2eeMaxFileSize {
             NCManageDatabase.shared.deleteMetadata(predicate: NSPredicate(format: "ocId == %@", ocIdTemp))

+ 9 - 5
iOSClient/Networking/NCNetworkingProcessUpload.swift

@@ -105,9 +105,9 @@ class NCNetworkingProcessUpload: NSObject {
                         // Chunk 
                         if metadata.chunk && UIApplication.shared.applicationState == .active {
                             if let metadata = NCManageDatabase.shared.setMetadataStatus(ocId: metadata.ocId, status: NCGlobal.shared.metadataStatusInUpload) {
-                                NCNetworking.shared.upload(metadata: metadata) { (_, _) in
+                                NCNetworking.shared.upload(metadata: metadata) {
                                     self.startTimer()
-                                }
+                                } completion: { (_, _) in }
                             } else {
                                 self.startTimer()
                             }
@@ -117,9 +117,14 @@ class NCNetworkingProcessUpload: NSObject {
                         // E2EE
                         if metadata.e2eEncrypted && UIApplication.shared.applicationState == .active {
                             if let metadata = NCManageDatabase.shared.setMetadataStatus(ocId: metadata.ocId, status: NCGlobal.shared.metadataStatusInUpload) {
-                                NCNetworking.shared.upload(metadata: metadata) { (_, _) in
+                                NCNetworking.shared.upload(metadata: metadata) {
                                     self.startTimer()
+                                } completion: { (_, _) in
+                                    
                                 }
+                                //NCNetworking.shared.upload(metadata: metadata) { (_, _) in
+                                //    self.startTimer()
+                                //}
                             } else {
                                 self.startTimer()
                             }
@@ -128,8 +133,7 @@ class NCNetworkingProcessUpload: NSObject {
                         
                         counterUpload += 1
                         if let metadata = NCManageDatabase.shared.setMetadataStatus(ocId: metadata.ocId, status: NCGlobal.shared.metadataStatusInUpload) {
-                            NCNetworking.shared.upload(metadata: metadata) { (_, _) in
-                            }
+                            NCNetworking.shared.upload(metadata: metadata) { } completion: { (_, _) in }
                         }
                     }
                     

+ 1 - 1
iOSClient/Transfers/NCTransfers.swift

@@ -138,7 +138,7 @@ class NCTransfers: NCCollectionViewCommon, NCTransferCellDelegate  {
         metadata.session = NCCommunicationCommon.shared.sessionIdentifierUpload
         
         NCManageDatabase.shared.addMetadata(metadata)
-        NCNetworking.shared.upload(metadata: metadata) { (_, _) in }
+        NCNetworking.shared.upload(metadata: metadata) { } completion: { (_, _) in }
     }
     
     override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {