diff options
author | Marino Faggiana <marino@marinofaggiana.com> | 2022-11-04 19:17:34 +0300 |
---|---|---|
committer | Marino Faggiana <marino@marinofaggiana.com> | 2022-11-04 19:17:34 +0300 |
commit | f8faad1cf7fbcd3436c40886d17de323ac725fe1 (patch) | |
tree | 509fb894b65989779f75d7a836bd5e7e6f94df29 | |
parent | e041e3da78d05a70d597087f9b3ab2500e3262b4 (diff) |
added observeTableMetadata
Signed-off-by: Marino Faggiana <marino@marinofaggiana.com>
-rw-r--r-- | iOSClient/Networking/NCNetworkingProcessUpload.swift | 50 |
1 files changed, 25 insertions, 25 deletions
diff --git a/iOSClient/Networking/NCNetworkingProcessUpload.swift b/iOSClient/Networking/NCNetworkingProcessUpload.swift index 1db321203..1e4e0564a 100644 --- a/iOSClient/Networking/NCNetworkingProcessUpload.swift +++ b/iOSClient/Networking/NCNetworkingProcessUpload.swift @@ -66,7 +66,7 @@ class NCNetworkingProcessUpload: NSObject { func startTimer() { DispatchQueue.main.async { self.timerProcess?.invalidate() - self.timerProcess = Timer.scheduledTimer(timeInterval: 4, target: self, selector: #selector(self.processTimer), userInfo: nil, repeats: true) + self.timerProcess = Timer.scheduledTimer(timeInterval: 5, target: self, selector: #selector(self.processTimer), userInfo: nil, repeats: true) } } @@ -76,9 +76,16 @@ class NCNetworkingProcessUpload: NSObject { } } + @objc private func processTimer() { + if notificationToken == nil { return } + start { items in + print("[LOG] PROCESS-UPLOAD \(items)") + } + } + func start(completition: @escaping (_ items: Int) -> Void) { - guard let account = NCManageDatabase.shared.getActiveAccount() else { return completition(0) } + if appDelegate.account.isEmpty { return completition(0) } let applicationState = UIApplication.shared.applicationState let queue = DispatchQueue.global() @@ -88,7 +95,7 @@ class NCNetworkingProcessUpload: NSObject { queue.async { - let metadatasUpload = NCManageDatabase.shared.getMetadatas(predicate: NSPredicate(format: "status == %d OR status == %d", NCGlobal.shared.metadataStatusInUpload, NCGlobal.shared.metadataStatusUploading)) + let metadatasUpload = NCManageDatabase.shared.getMetadatas(predicate: NSPredicate(format: "account == %@ AND (status == %d OR status == %d)", self.appDelegate.account, NCGlobal.shared.metadataStatusInUpload, NCGlobal.shared.metadataStatusUploading)) let isWiFi = NCNetworking.shared.networkReachability == NKCommon.typeReachability.reachableEthernetOrWiFi var counterUpload: Int = 0 let sessionSelectors = [NCGlobal.shared.selectorUploadFileNODelete, NCGlobal.shared.selectorUploadFile, NCGlobal.shared.selectorUploadAutoUpload, NCGlobal.shared.selectorUploadAutoUploadAll] @@ -96,7 +103,7 @@ class NCNetworkingProcessUpload: NSObject { counterUpload = metadatasUpload.count // Update Badge - let counterBadge = NCManageDatabase.shared.getMetadatas(predicate: NSPredicate(format: "status == %d OR status == %d OR status == %d", NCGlobal.shared.metadataStatusWaitUpload, NCGlobal.shared.metadataStatusInUpload, NCGlobal.shared.metadataStatusUploading)) + let counterBadge = NCManageDatabase.shared.getMetadatas(predicate: NSPredicate(format: "account == %@ AND (status == %d OR status == %d OR status == %d)", self.appDelegate.account, NCGlobal.shared.metadataStatusWaitUpload, NCGlobal.shared.metadataStatusInUpload, NCGlobal.shared.metadataStatusUploading)) NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterUpdateBadgeNumber, userInfo: ["counter":counterBadge.count]) NCNetworking.shared.getOcIdInBackgroundSession(queue: queue, completion: { listOcId in @@ -104,19 +111,13 @@ class NCNetworkingProcessUpload: NSObject { for sessionSelector in sessionSelectors where counterUpload < maxConcurrentOperationUpload { 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) + let metadatas = NCManageDatabase.shared.getAdvancedMetadatas(predicate: NSPredicate(format: "account == %@ AND sessionSelector == %@ AND status == %d", self.appDelegate.account, 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 < maxConcurrentOperationUpload { - // Different account - if account.account != metadata.account { - NKCommon.shared.writeLog("[INFO] Process auto upload skipped file: \(metadata.serverUrl)/\(metadata.fileNameView) on account: \(metadata.account), because the actual account is \(account.account).") - continue - } - // Is already in upload background? skipped if listOcId.contains(metadata.ocId) { NKCommon.shared.writeLog("[INFO] Process auto upload skipped file: \(metadata.serverUrl)/\(metadata.fileNameView), because is already in session.") @@ -163,23 +164,22 @@ class NCNetworkingProcessUpload: NSObject { semaphore.wait() } } - completition(counterUpload) - }) - } - } - @objc private func processTimer() { - if notificationToken == nil { return } + // No upload available ? --> Retry Upload in Error + if counterUpload == 0 { + let metadatas = NCManageDatabase.shared.getMetadatas(predicate: NSPredicate(format: "account == %@ AND status == %d", self.appDelegate.account, NCGlobal.shared.metadataStatusUploadError)) + for metadata in metadatas { + NCManageDatabase.shared.setMetadataSession(ocId: metadata.ocId, session: NCNetworking.shared.sessionIdentifierBackground, sessionError: "", sessionTaskIdentifier: 0, status: NCGlobal.shared.metadataStatusWaitUpload) + } - // No upload available ? --> Retry Upload in Error - let metadatas = NCManageDatabase.shared.getMetadatas(predicate: NSPredicate(format: "status == %d", NCGlobal.shared.metadataStatusUploadError)) - for metadata in metadatas { - NCManageDatabase.shared.setMetadataSession(ocId: metadata.ocId, session: NCNetworking.shared.sessionIdentifierBackground, sessionError: "", sessionTaskIdentifier: 0, status: NCGlobal.shared.metadataStatusWaitUpload) - } + // verify delete Asset Local Identifiers in auto upload (DELETE Photos album) + if applicationState == .active && metadatas.isEmpty && !self.appDelegate.isPasscodePresented() { + self.deleteAssetLocalIdentifiers() + } + } - // verify delete Asset Local Identifiers in auto upload (DELETE Photos album) - if metadatas.isEmpty && !appDelegate.isPasscodePresented() { - deleteAssetLocalIdentifiers() + completition(counterUpload) + }) } } |