소스 검색

#2095

Signed-off-by: marinofaggiana <ios@nextcloud.com>
marinofaggiana 2 년 전
부모
커밋
db0137cbb2
2개의 변경된 파일8개의 추가작업 그리고 3개의 파일을 삭제
  1. 6 1
      iOSClient/Networking/NCNetworkingChunkedUpload.swift
  2. 2 2
      iOSClient/Networking/NCNetworkingProcessUpload.swift

+ 6 - 1
iOSClient/Networking/NCNetworkingChunkedUpload.swift

@@ -34,6 +34,7 @@ extension NCNetworking {
         let chunkFolderPath = metadata.urlBase + "/" + NCUtilityFileSystem.shared.getWebDAV(account: metadata.account) + "/uploads/" + metadata.userId + "/" + chunkFolder
         let fileNameLocalPath = CCUtility.getDirectoryProviderStorageOcId(metadata.ocId, fileNameView: metadata.fileNameView)!
         let chunkSize = CCUtility.getChunkSize()
+        let fileSizeInGB = Double(metadata.size) / 1e9
 
         var uploadErrorCode: Int = 0
         var uploadErrorDescription: String = ""
@@ -142,7 +143,11 @@ extension NCNetworking {
             addCustomHeaders["X-OC-CTime"] = creationDate
             addCustomHeaders["X-OC-MTime"] = modificationDate
 
-            var timeout: TimeInterval = 60
+            // Calculate Assemble Timeout
+            let ASSEMBLE_TIME_PER_GB: Double    = 3 * 60            // 3 min
+            let ASSEMBLE_TIME_MIN: Double       = 60                // 60s
+            let ASSEMBLE_TIME_MAX: Double       = 30 * 60           // 30min
+            let timeout = max(ASSEMBLE_TIME_MIN, min(ASSEMBLE_TIME_PER_GB * fileSizeInGB, ASSEMBLE_TIME_MAX))
 
             NCCommunication.shared.moveFileOrFolder(serverUrlFileNameSource: serverUrlFileNameSource, serverUrlFileNameDestination: serverUrlFileNameDestination, overwrite: true, addCustomHeaders: addCustomHeaders, timeout: timeout, queue: DispatchQueue.global(qos: .background)) { _, errorCode, errorDescription in
 

+ 2 - 2
iOSClient/Networking/NCNetworkingProcessUpload.swift

@@ -196,8 +196,8 @@ class NCNetworkingProcessUpload: NSObject {
             metadataSource.classFile = results.classFile
             if let date = NCUtilityFileSystem.shared.getFileCreationDate(filePath: filePath) { metadataSource.creationDate = date }
             if let date =  NCUtilityFileSystem.shared.getFileModificationDate(filePath: filePath) { metadataSource.date = date }
-            metadata.chunk = chunckSize != 0 && metadata.size > chunckSize
-            metadata.e2eEncrypted = CCUtility.isFolderEncrypted(metadata.serverUrl, e2eEncrypted: metadata.e2eEncrypted, account: metadata.account, urlBase: metadata.urlBase)
+            metadataSource.chunk = chunckSize != 0 && metadata.size > chunckSize
+            metadataSource.e2eEncrypted = CCUtility.isFolderEncrypted(metadata.serverUrl, e2eEncrypted: metadata.e2eEncrypted, account: metadata.account, urlBase: metadata.urlBase)
             metadataSource.isExtractFile = true
             if let metadata = NCManageDatabase.shared.addMetadata(metadataSource) {
                 metadatas.append(metadata)