Explorar el Código

Upload chunk file - improvements (#2659)

* Update NCNetworking.swift
* Update AppDelegate.swift

---------

Co-authored-by: Marino Faggiana <8616947+marinofaggiana@users.noreply.github.com>
Marino Faggiana hace 1 año
padre
commit
67e8c40824

+ 2 - 2
Nextcloud.xcodeproj/project.pbxproj

@@ -4745,7 +4745,7 @@
 				CLANG_WARN_UNREACHABLE_CODE = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				COPY_PHASE_STRIP = NO;
-				CURRENT_PROJECT_VERSION = 9;
+				CURRENT_PROJECT_VERSION = 10;
 				DEBUG_INFORMATION_FORMAT = dwarf;
 				DEVELOPMENT_TEAM = NKUJUXUJ3B;
 				ENABLE_STRICT_OBJC_MSGSEND = YES;
@@ -4810,7 +4810,7 @@
 				CLANG_WARN_UNREACHABLE_CODE = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				COPY_PHASE_STRIP = NO;
-				CURRENT_PROJECT_VERSION = 9;
+				CURRENT_PROJECT_VERSION = 10;
 				DEVELOPMENT_TEAM = NKUJUXUJ3B;
 				ENABLE_STRICT_OBJC_MSGSEND = YES;
 				ENABLE_TESTABILITY = YES;

+ 0 - 1
iOSClient/AppDelegate.swift

@@ -283,7 +283,6 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
         scheduleAppProcessing()
         NCNetworking.shared.cancelDataTask()
         NCNetworking.shared.cancelDownloadTasks()
-        NCNetworking.shared.cancelUploadTasks()
         presentPasscode { }
 
         NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterApplicationDidEnterBackground)

+ 1 - 0
iOSClient/NCGlobal.swift

@@ -219,6 +219,7 @@ class NCGlobal: NSObject {
     @objc let errorPreconditionFailed: Int          = 412
     @objc let errorQuota: Int                       = 507
     @objc let errorUnauthorized997: Int             = 997
+    @objc let errorExplicitlyCancelled: Int         = -999
     @objc let errorConnectionLost: Int              = -1005
     @objc let errorNetworkNotAvailable: Int         = -1009
     @objc let errorBadServerResponse: Int           = -1011

+ 14 - 11
iOSClient/Networking/NCNetworking.swift

@@ -332,16 +332,11 @@ class NCNetworking: NSObject, NKCommonDelegate {
             self.downloadRequest.removeValue(forKey: fileNameLocalPath)
 
             var sessionTaskFailedCode = 0
-            if let afError = afError?.asAFError {
-                switch afError {
-                case .sessionTaskFailed(let sessionError):
-                    let nsError = sessionError as NSError
-                    sessionTaskFailedCode = nsError.code
-                default: break
-                }
+            if let error = NextcloudKit.shared.nkCommonInstance.getSessionErrorFromAFError(afError) {
+                sessionTaskFailedCode = error.code
             }
 
-            if afError?.isExplicitlyCancelledError ?? false || sessionTaskFailedCode == -999 {
+            if afError?.isExplicitlyCancelledError ?? false || sessionTaskFailedCode == NCGlobal.shared.errorExplicitlyCancelled {
 
                 NCManageDatabase.shared.setMetadataSession(ocId: metadata.ocId, session: "", sessionError: "", sessionSelector: selector, sessionTaskIdentifier: 0, status: NCGlobal.shared.metadataStatusNormal, errorCode: 0)
                 NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterDownloadCancelFile, userInfo: ["ocId": metadata.ocId, "serverUrl": metadata.serverUrl, "account": metadata.account])
@@ -552,11 +547,15 @@ class NCNetworking: NSObject, NKCommonDelegate {
 
         } completion: { account, _, file, afError, error in
 
+            var sessionTaskFailedCode = 0
             self.uploadRequest.removeValue(forKey: fileNameLocalPath)
 
             if error == .success {
                 NCManageDatabase.shared.deleteChunks(account: account, ocId: metadata.ocId, directory: directory)
             }
+            if let error = NextcloudKit.shared.nkCommonInstance.getSessionErrorFromAFError(afError) {
+                sessionTaskFailedCode = error.code
+            }
 
             switch error.errorCode {
             case NKError.chunkResourceNotFound:
@@ -569,11 +568,15 @@ class NCNetworking: NSObject, NKCommonDelegate {
             case NKError.chunkFilesNull:
                 NCManageDatabase.shared.deleteChunks(account: account, ocId: metadata.ocId, directory: directory)
                 NCContentPresenter().messageNotification("_chunk_files_null_", error: error, delay: NCGlobal.shared.dismissAfterSecond, type: .error)
-            case NKError.chunkFileNull: // (cancel)
+            case NKError.chunkFileNull: // (fileSize == 0)
                 NCManageDatabase.shared.deleteChunks(account: account, ocId: metadata.ocId, directory: directory)
             case NKError.chunkFileUpload:
-                if let afError, !afError.isExplicitlyCancelledError {
-                    NCContentPresenter().messageNotification("_error_", error: error, delay: NCGlobal.shared.dismissAfterSecond, type: .error)
+                if let afError {
+                    if afError.isExplicitlyCancelledError || sessionTaskFailedCode == NCGlobal.shared.errorExplicitlyCancelled {
+                        NCManageDatabase.shared.deleteChunks(account: account, ocId: metadata.ocId, directory: directory)
+                    } else {
+                        NCContentPresenter().messageNotification("_error_", error: error, delay: NCGlobal.shared.dismissAfterSecond, type: .error)
+                    }
                 }
             case NKError.chunkMoveFile:
                 NCManageDatabase.shared.deleteChunks(account: account, ocId: metadata.ocId, directory: directory)