Эх сурвалжийг харах

coding

Signed-off-by: Marino Faggiana <marino@marinofaggiana.com>
Marino Faggiana 2 жил өмнө
parent
commit
c97226dcae

+ 2 - 2
Nextcloud.xcodeproj/project.pbxproj

@@ -3631,7 +3631,7 @@
 					"@executable_path/Frameworks",
 					"@executable_path/../../Frameworks",
 				);
-				MARKETING_VERSION = 4.5.3;
+				MARKETING_VERSION = 4.5.4;
 				ONLY_ACTIVE_ARCH = YES;
 				OTHER_LDFLAGS = "";
 				SDKROOT = iphoneos;
@@ -3692,7 +3692,7 @@
 					"@executable_path/Frameworks",
 					"@executable_path/../../Frameworks",
 				);
-				MARKETING_VERSION = 4.5.3;
+				MARKETING_VERSION = 4.5.4;
 				ONLY_ACTIVE_ARCH = YES;
 				OTHER_LDFLAGS = "";
 				SDKROOT = iphoneos;

+ 4 - 4
iOSClient/AppDelegate.swift

@@ -370,11 +370,11 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
         NKCommon.shared.writeLog("[INFO] Start handler refresh task [Auto upload]")
         
         NCAutoUpload.shared.initAutoUpload(viewController: nil) { items in
-            NKCommon.shared.writeLog("[INFO] Completition handler refresh task [Auto upload] with \(items) uploads")
-            if items == 0 {
-                
+            NKCommon.shared.writeLog("[INFO] Auto upload with \(items) uploads")
+            NCNetworkingProcessUpload.shared.process { items in
+                NKCommon.shared.writeLog("[INFO] Upload process with \(items) uploads")
+                task.setTaskCompleted(success: true)
             }
-            task.setTaskCompleted(success: true)
         }
     }
 

+ 0 - 4
iOSClient/NCGlobal.swift

@@ -323,10 +323,6 @@ class NCGlobal: NSObject {
     let metadataStatusUploading: Int                = 3
     let metadataStatusUploadError: Int              = 4
 
-    // Upload Operation Background
-    //
-    let maxConcurrentOperationUpload                = 10
-
     // Notification Center
     //
     @objc let notificationCenterApplicationDidEnterBackground   = "applicationDidEnterBackground"

+ 3 - 13
iOSClient/Networking/NCAutoUpload.swift

@@ -171,19 +171,9 @@ class NCAutoUpload: NSObject {
             }
 
             self.endForAssetToUpload = true
-            if selector == NCGlobal.shared.selectorUploadAutoUploadAll || self.applicationState == .active {
-                NKCommon.shared.writeLog("[INFO] Start createProcessUploads")
-                NCNetworkingProcessUpload.shared.createProcessUploads(metadatas: metadatas, completion: completion)
-            } else {
-                NKCommon.shared.writeLog("[INFO] Start createUploadProcessAutoUploadInBackground")
-                var metadatasForUpload: [tableMetadata] = []
-                for metadata in metadatas {
-                    if NCManageDatabase.shared.getMetadata(predicate: NSPredicate(format: "account == %@ && serverUrl == %@ && fileName == %@ && session != ''", metadata.account, metadata.serverUrl, metadata.fileName)) != nil { continue }
-                    metadatasForUpload.append(metadata)
-                }
-                NCManageDatabase.shared.addMetadatas(metadatasForUpload)
-                NCNetworking.shared.createUploadProcessAutoUploadInBackground(completion: completion)
-            }
+
+            NKCommon.shared.writeLog("[INFO] Start createProcessUploads")
+            NCNetworkingProcessUpload.shared.createProcessUploads(metadatas: metadatas, completion: completion)
         }
     }
 

+ 0 - 49
iOSClient/Networking/NCNetworking.swift

@@ -593,55 +593,6 @@ import Photos
         }
     }
 
-    func createUploadProcessAutoUploadInBackground(completion: @escaping (_ items: Int) -> Void) {
-
-        var numStartUpload: Int = 0
-        let isWiFi = NCNetworking.shared.networkReachability == NKCommon.typeReachability.reachableEthernetOrWiFi
-
-        let metadatasInUpload = NCManageDatabase.shared.getMetadatas(predicate: NSPredicate(format: "status == %d OR status == %d", NCGlobal.shared.metadataStatusInUpload, NCGlobal.shared.metadataStatusUploading))
-        let counterUpload = NCGlobal.shared.maxConcurrentOperationUpload - metadatasInUpload.count
-        if counterUpload <= 0 { return completion(0) }
-
-        // Extract file
-        let metadatas = NCManageDatabase.shared.getAdvancedMetadatas(predicate: NSPredicate(format: "sessionSelector == %@ AND status == %d", NCGlobal.shared.selectorUploadAutoUpload, NCGlobal.shared.metadataStatusWaitUpload), page: 0, limit: counterUpload, sorted: "date", ascending: true)
-        for metadata in metadatas {
-
-            let metadata = tableMetadata.init(value: metadata)
-            let semaphore = DispatchSemaphore(value: 0)
-
-            NCUtility.shared.extractFiles(from: metadata) { metadatas in
-                if metadatas.isEmpty {
-                    NCManageDatabase.shared.deleteMetadata(predicate: NSPredicate(format: "ocId == %@", metadata.ocId))
-                }
-                for metadata in metadatas {
-                    if (metadata.e2eEncrypted || metadata.chunk) {
-                        NKCommon.shared.writeLog("[INFO] Autoupload file skipped, E2E:\(metadata.e2eEncrypted) - CHUNK:\(metadata.chunk)")
-                        continue
-                    }
-                    if (metadata.session == NCNetworking.shared.sessionIdentifierBackgroundWWan && !isWiFi) {
-                        NKCommon.shared.writeLog("[INFO] Autoupload file skipped, required WiFi")
-                        continue
-                    }
-                    guard let metadata = NCManageDatabase.shared.setMetadataStatus(ocId: metadata.ocId, status: NCGlobal.shared.metadataStatusInUpload) else {
-                        NKCommon.shared.writeLog("[INFO] Autoupload file skipped, file status in upload error")
-                        continue
-                    }
-                    // Upload
-                    let semaphoreUpload = DispatchSemaphore(value: 1)
-                    NCNetworking.shared.upload(metadata: metadata) {
-                        numStartUpload += 1
-                    } completion: { error in
-                        semaphoreUpload.signal()
-                    }
-                    semaphoreUpload.wait()
-                }
-                semaphore.signal()
-            }
-            semaphore.wait()
-        }
-        completion(numStartUpload)
-    }
-    
     func getOcIdInBackgroundSession(queue: DispatchQueue = .main, completion: @escaping (_ listOcId: [String]) -> Void) {
 
         var listOcId: [String] = []

+ 16 - 12
iOSClient/Networking/NCNetworkingProcessUpload.swift

@@ -46,13 +46,15 @@ class NCNetworkingProcessUpload: NSObject {
         process { _ in }
     }
 
-    private func process(completition: @escaping (_ items: Int) -> Void) {
+    func process(completition: @escaping (_ items: Int) -> Void) {
 
         guard let account = NCManageDatabase.shared.getActiveAccount() else { return }
 
         stopTimer()
 
+        let applicationState = UIApplication.shared.applicationState
         let queue = DispatchQueue.global()
+        var maxConcurrentOperationUpload = 10
 
         queue.async {
 
@@ -71,15 +73,15 @@ class NCNetworkingProcessUpload: NSObject {
 
             NCNetworking.shared.getOcIdInBackgroundSession(queue: queue, completion: { listOcId in
 
-                for sessionSelector in sessionSelectors where counterUpload < NCGlobal.shared.maxConcurrentOperationUpload {
+                for sessionSelector in sessionSelectors where counterUpload < maxConcurrentOperationUpload {
 
-                    let limit = NCGlobal.shared.maxConcurrentOperationUpload - counterUpload
+                    let limit = maxConcurrentOperationUpload - counterUpload
                     let metadatas = NCManageDatabase.shared.getAdvancedMetadatas(predicate: NSPredicate(format: "sessionSelector == %@ AND status == %d", sessionSelector, NCGlobal.shared.metadataStatusWaitUpload), page: 1, limit: limit, sorted: "date", ascending: true)
                     if metadatas.count > 0 {
                         NKCommon.shared.writeLog("[INFO] PROCESS-UPLOAD find \(metadatas.count) items")
                     }
 
-                    for metadata in metadatas where counterUpload < NCGlobal.shared.maxConcurrentOperationUpload {
+                    for metadata in metadatas where counterUpload < maxConcurrentOperationUpload {
 
                         // Different account
                         if account.account != metadata.account {
@@ -108,22 +110,25 @@ class NCNetworkingProcessUpload: NSObject {
                             if metadatas.isEmpty {
                                 NCManageDatabase.shared.deleteMetadata(predicate: NSPredicate(format: "ocId == %@", metadata.ocId))
                             }
-                            for metadata in metadatas {
+                            for metadata in metadatas where counterUpload < maxConcurrentOperationUpload {
 
+                                // NO WiFi
                                 if !isWiFi && metadata.session == NCNetworking.shared.sessionIdentifierBackgroundWWan {
                                     continue
                                 }
 
+                                // NO E2EE, CHUCK in background
+                                if applicationState != .active && (metadata.e2eEncrypted || metadata.chunk) {
+                                    continue
+                                }
+
                                 if let metadata = NCManageDatabase.shared.setMetadataStatus(ocId: metadata.ocId, status: NCGlobal.shared.metadataStatusInUpload) {
                                     NCNetworking.shared.upload(metadata: metadata)
+                                    if metadata.e2eEncrypted || metadata.chunk {
+                                        maxConcurrentOperationUpload = 1
+                                    }
                                     counterUpload += 1
                                 }
-
-                                if metadata.e2eEncrypted || metadata.chunk {
-                                    // Only one
-                                    counterUpload = NCGlobal.shared.maxConcurrentOperationUpload
-                                    break
-                                }
                             }
                             semaphore.signal()
                         }
@@ -141,7 +146,6 @@ class NCNetworkingProcessUpload: NSObject {
 
                 // verify delete Asset Local Identifiers in auto upload (DELETE Photos album)
                 DispatchQueue.main.async {
-                    let applicationState = UIApplication.shared.applicationState
                     let appDelegate = UIApplication.shared.delegate as! AppDelegate
 
                     if applicationState == .active && counterUpload == 0 && !appDelegate.isPasscodePresented() {