marinofaggiana 4 năm trước cách đây
mục cha
commit
93525c6c2a
1 tập tin đã thay đổi với 100 bổ sung99 xóa
  1. 100 99
      iOSClient/Networking/NCNetworking.swift

+ 100 - 99
iOSClient/Networking/NCNetworking.swift

@@ -458,125 +458,126 @@ import Queuer
         var uploadErrorDescription: String = ""
         var counterFileNameInUpload: Int = 0
         let chunkSize = CCUtility.getChunkSize()
+        var filesNames: [String] = []
         
-        if let filesNames = NCCommunicationCommon.shared.fileChunks(path: directoryProviderStorageOcId, fileName: metadata.fileName, pathChunks: directoryProviderStorageOcId, sizeInMB: chunkSize) {
-        
-            if !NCManageDatabase.shared.existsChunks(account: metadata.account, ocId: metadata.ocId) {
-                NCManageDatabase.shared.addChunks(account: metadata.account, ocId: metadata.ocId, folderChunk: folderChunk, fileNames: filesNames)
+        if !NCManageDatabase.shared.existsChunks(account: metadata.account, ocId: metadata.ocId) {
+            if let tmp = NCCommunicationCommon.shared.fileChunks(path: directoryProviderStorageOcId, fileName: metadata.fileName, pathChunks: directoryProviderStorageOcId, sizeInMB: chunkSize) {
+                filesNames = tmp
+            } else {
+                NCManageDatabase.shared.deleteMetadata(predicate: NSPredicate(format: "ocId == %@", metadata.ocId))
+                return
             }
-            
-            NCContentPresenter.shared.messageNotification("_info_", description: "_upload_chunk_", delay: NCGlobal.shared.dismissAfterSecond, type: NCContentPresenter.messageType.info, errorCode:0, forced: false)
-            
-            NCCommunication.shared.createFolder(uploadFolder) { (_, _, _, errorCode, errorDescription) in
-            
-                if errorCode == 0 {
+            NCManageDatabase.shared.addChunks(account: metadata.account, ocId: metadata.ocId, folderChunk: folderChunk, fileNames: filesNames)
+        }
+        
+        NCContentPresenter.shared.messageNotification("_info_", description: "_upload_chunk_", delay: NCGlobal.shared.dismissAfterSecond, type: NCContentPresenter.messageType.info, errorCode:0, forced: false)
+        
+        NCCommunication.shared.createFolder(uploadFolder) { (_, _, _, errorCode, errorDescription) in
+        
+            if errorCode == 0 {
+                    
+                DispatchQueue.global(qos: .background).async {
+                                                
+                    NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterUploadStartFile, userInfo: ["ocId": metadata.ocId])
                         
-                    DispatchQueue.global(qos: .background).async {
-                                                    
-                        NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterUploadStartFile, userInfo: ["ocId": metadata.ocId])
-                            
-                        for fileName in filesNames {
+                    for fileName in filesNames {
+                                                
+                        if !NCManageDatabase.shared.existsChunk(account: metadata.account, ocId: metadata.ocId, fileName: fileName) {
+                            continue
+                        }
+                        
+                        let serverUrlFileName = uploadFolder + "/" + fileName
+                        let fileNameChunkLocalPath = CCUtility.getDirectoryProviderStorageOcId(metadata.ocId, fileNameView: fileName)!
+                        let semaphore = Semaphore()
                                                     
-                            if !NCManageDatabase.shared.existsChunk(account: metadata.account, ocId: metadata.ocId, fileName: fileName) {
-                                continue
-                            }
-                            
-                            let serverUrlFileName = uploadFolder + "/" + fileName
-                            let fileNameChunkLocalPath = CCUtility.getDirectoryProviderStorageOcId(metadata.ocId, fileNameView: fileName)!
-                            let semaphore = Semaphore()
-                                                        
-                            NCCommunication.shared.upload(serverUrlFileName: serverUrlFileName, fileNameLocalPath: fileNameChunkLocalPath, requestHandler: { (request) in
-                                    
-                                self.uploadRequest[fileNameLocalPath] = request
+                        NCCommunication.shared.upload(serverUrlFileName: serverUrlFileName, fileNameLocalPath: fileNameChunkLocalPath, requestHandler: { (request) in
                                 
-                                counterFileNameInUpload += 1
+                            self.uploadRequest[fileNameLocalPath] = request
+                            
+                            counterFileNameInUpload += 1
 
-                                let progress: Float = Float(counterFileNameInUpload) / Float(filesNames.count)
-                                let totalBytes: Int64 = (metadata.size / Int64(filesNames.count)) * Int64(counterFileNameInUpload)
-                                let totalBytesExpected: Int64 = metadata.size
+                            let progress: Float = Float(counterFileNameInUpload) / Float(filesNames.count)
+                            let totalBytes: Int64 = (metadata.size / Int64(filesNames.count)) * Int64(counterFileNameInUpload)
+                            let totalBytesExpected: Int64 = metadata.size
 
-                                NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterProgressTask, userInfo: ["account":metadata.account, "ocId":metadata.ocId, "serverUrl":metadata.serverUrl, "status":NSNumber(value: NCGlobal.shared.metadataStatusInUpload), "progress":NSNumber(value: progress), "totalBytes":NSNumber(value: totalBytes), "totalBytesExpected":NSNumber(value: totalBytesExpected)])
-                                
-                            }, taskHandler: { (task) in
-                                
-                                NCManageDatabase.shared.setMetadataSession(ocId: metadata.ocId, sessionError: "", sessionTaskIdentifier: task.taskIdentifier, status: NCGlobal.shared.metadataStatusUploading)
+                            NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterProgressTask, userInfo: ["account":metadata.account, "ocId":metadata.ocId, "serverUrl":metadata.serverUrl, "status":NSNumber(value: NCGlobal.shared.metadataStatusInUpload), "progress":NSNumber(value: progress), "totalBytes":NSNumber(value: totalBytes), "totalBytesExpected":NSNumber(value: totalBytesExpected)])
+                            
+                        }, taskHandler: { (task) in
+                            
+                            NCManageDatabase.shared.setMetadataSession(ocId: metadata.ocId, sessionError: "", sessionTaskIdentifier: task.taskIdentifier, status: NCGlobal.shared.metadataStatusUploading)
+                           
+                        }, progressHandler: { (_) in
+                            
+                        }) { (_, _, _, _, _, _, _, errorCode, errorDescription) in
                                
-                            }, progressHandler: { (_) in                               
-                                
-                            }) { (_, _, _, _, _, _, _, errorCode, errorDescription) in
-                                   
-                                self.uploadRequest[fileNameLocalPath] = nil
-                                uploadErrorCode = errorCode
-                                uploadErrorDescription = errorDescription
-                                semaphore.continue()
-                            }
-                                
-                            semaphore.wait()
-                                
-                            if uploadErrorCode == 0 {
-                                NCManageDatabase.shared.deleteChunk(account: metadata.account, ocId: metadata.ocId, fileName: fileName)
-                            } else {
-                                break
-                            }
+                            self.uploadRequest[fileNameLocalPath] = nil
+                            uploadErrorCode = errorCode
+                            uploadErrorDescription = errorDescription
+                            semaphore.continue()
                         }
                             
+                        semaphore.wait()
+                            
                         if uploadErrorCode == 0 {
-                                
-                            // Assembling the chunks
-                                
-                            let serverUrlFileNameSource = uploadFolder + "/.file"
-                            let pathServerUrl = CCUtility.returnPathfromServerUrl(serverUrl, urlBase: metadata.urlBase, account: metadata.account)!
-                            let serverUrlFileNameDestination = metadata.urlBase + "/" + NCUtilityFileSystem.shared.getDAV() + "/files/" + account.userId + pathServerUrl + "/" + metadata.fileName
-                            var addCustomHeaders: [String:String] = [:]
-                            let creationDate = "\(metadata.creationDate.timeIntervalSince1970)"
-                            let modificationDate = "\(metadata.date.timeIntervalSince1970)"
-                                
-                            addCustomHeaders["X-OC-CTime"] = creationDate
-                            addCustomHeaders["X-OC-MTime"] = modificationDate
+                            NCManageDatabase.shared.deleteChunk(account: metadata.account, ocId: metadata.ocId, fileName: fileName)
+                        } else {
+                            break
+                        }
+                    }
+                        
+                    if uploadErrorCode == 0 {
+                            
+                        // Assembling the chunks
+                            
+                        let serverUrlFileNameSource = uploadFolder + "/.file"
+                        let pathServerUrl = CCUtility.returnPathfromServerUrl(serverUrl, urlBase: metadata.urlBase, account: metadata.account)!
+                        let serverUrlFileNameDestination = metadata.urlBase + "/" + NCUtilityFileSystem.shared.getDAV() + "/files/" + account.userId + pathServerUrl + "/" + metadata.fileName
+                        var addCustomHeaders: [String:String] = [:]
+                        let creationDate = "\(metadata.creationDate.timeIntervalSince1970)"
+                        let modificationDate = "\(metadata.date.timeIntervalSince1970)"
+                            
+                        addCustomHeaders["X-OC-CTime"] = creationDate
+                        addCustomHeaders["X-OC-MTime"] = modificationDate
 
-                            NCCommunication.shared.moveFileOrFolder(serverUrlFileNameSource: serverUrlFileNameSource, serverUrlFileNameDestination: serverUrlFileNameDestination, overwrite: true, addCustomHeaders: addCustomHeaders) { (_, errorCode, errorDescription) in
-                                                        
-                                if errorCode == 0 {
-                                    
-                                    NCManageDatabase.shared.deleteMetadata(predicate: NSPredicate(format: "ocId == %@", metadata.ocId))
-                                    NCUtilityFileSystem.shared.deleteFile(filePath: directoryProviderStorageOcId)
-                                    self.readFile(serverUrlFileName: serverUrlFileNameDestination, account: metadata.account) { (_, metadata, _, _) in
-                                            
-                                        if errorCode == 0, let metadata = metadata {
-                                            
-                                            NCManageDatabase.shared.addMetadata(metadata)
-                                            NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterReloadDataSource, userInfo: ["serverUrl":serverUrl])
-                                            
-                                        } else {
-                                            
-                                            NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterReloadDataSourceNetworkForced, userInfo: ["serverUrl": serverUrl])
-                                        }
+                        NCCommunication.shared.moveFileOrFolder(serverUrlFileNameSource: serverUrlFileNameSource, serverUrlFileNameDestination: serverUrlFileNameDestination, overwrite: true, addCustomHeaders: addCustomHeaders) { (_, errorCode, errorDescription) in
+                                                    
+                            if errorCode == 0 {
+                                
+                                NCManageDatabase.shared.deleteMetadata(predicate: NSPredicate(format: "ocId == %@", metadata.ocId))
+                                NCManageDatabase.shared.deleteChunks(account: metadata.account, ocId: metadata.ocId)
+                                NCUtilityFileSystem.shared.deleteFile(filePath: directoryProviderStorageOcId)
+                                self.readFile(serverUrlFileName: serverUrlFileNameDestination, account: metadata.account) { (_, metadata, _, _) in
+                                        
+                                    if errorCode == 0, let metadata = metadata {
+                                        
+                                        NCManageDatabase.shared.addMetadata(metadata)
+                                        NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterReloadDataSource, userInfo: ["serverUrl":serverUrl])
+                                        
+                                    } else {
+                                        
+                                        NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterReloadDataSourceNetworkForced, userInfo: ["serverUrl": serverUrl])
                                     }
-                                    
-                                } else {
-                                    
-                                    self.uploadChunkFileError(metadata: metadata, uploadFolder: uploadFolder, errorCode: errorCode, errorDescription: errorDescription)
                                 }
-                            }
-                                                            
-                        } else {
                                 
-                            NCCommunication.shared.deleteFileOrFolder(uploadFolder) { (_, _, _) in
-                                    
-                                self.uploadChunkFileError(metadata: metadata, uploadFolder: uploadFolder, errorCode: uploadErrorCode, errorDescription: uploadErrorDescription)
+                            } else {
+                                
+                                self.uploadChunkFileError(metadata: metadata, uploadFolder: uploadFolder, errorCode: errorCode, errorDescription: errorDescription)
                             }
                         }
+                                                        
+                    } else {
+                            
+                        NCCommunication.shared.deleteFileOrFolder(uploadFolder) { (_, _, _) in
+                                
+                            self.uploadChunkFileError(metadata: metadata, uploadFolder: uploadFolder, errorCode: uploadErrorCode, errorDescription: uploadErrorDescription)
+                        }
                     }
-                    
-                } else {
-                    
-                    self.uploadChunkFileError(metadata: metadata, uploadFolder: uploadFolder, errorCode: errorCode, errorDescription: errorDescription)
                 }
+                
+            } else {
+                
+                self.uploadChunkFileError(metadata: metadata, uploadFolder: uploadFolder, errorCode: errorCode, errorDescription: errorDescription)
             }
-            
-        } else {
-            
-            NCManageDatabase.shared.deleteMetadata(predicate: NSPredicate(format: "ocId == %@", metadata.ocId))
         }
     }