Răsfoiți Sursa

added observeTableMetadata

Signed-off-by: Marino Faggiana <marino@marinofaggiana.com>
Marino Faggiana 2 ani în urmă
părinte
comite
aea48d5818

+ 4 - 2
iOSClient/AppDelegate.swift

@@ -189,8 +189,9 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
 
         NKCommon.shared.writeLog("[INFO] Application did become active")
 
-        // START OBSERVE UPLOAD PROCESS
+        // START OBSERVE/TIMER UPLOAD PROCESS
         NCNetworkingProcessUpload.shared.observeTableMetadata()
+        NCNetworkingProcessUpload.shared.startTimer()
 
         self.deletePasswordSession = false
 
@@ -243,8 +244,9 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
 
         NKCommon.shared.writeLog("[INFO] Application will resign active")
 
-        // STOP OBSERVE UPLOAD PROCESS
+        // STOP OBSERVE/TIMER UPLOAD PROCESS
         NCNetworkingProcessUpload.shared.invalidateObserveTableMetadata()
+        NCNetworkingProcessUpload.shared.stopTimer()
 
         if CCUtility.getPrivacyScreenEnabled() {
             // Privacy

+ 25 - 8
iOSClient/Networking/NCNetworkingProcessUpload.swift

@@ -34,6 +34,7 @@ class NCNetworkingProcessUpload: NSObject {
     }()
 
     private var notificationToken: NotificationToken?
+    private var timerProcess: Timer?
 
     func observeTableMetadata() {
         let realm = try! Realm()
@@ -58,6 +59,20 @@ class NCNetworkingProcessUpload: NSObject {
 
     func invalidateObserveTableMetadata() {
         notificationToken?.invalidate()
+        notificationToken = nil
+    }
+
+    func startTimer() {
+        DispatchQueue.main.async {
+            self.timerProcess?.invalidate()
+            self.timerProcess = Timer.scheduledTimer(timeInterval: 5, target: self, selector: #selector(self.processTimer), userInfo: nil, repeats: true)
+        }
+    }
+
+    func stopTimer() {
+        DispatchQueue.main.async {
+            self.timerProcess?.invalidate()
+        }
     }
 
     func start(completition: @escaping (_ items: Int) -> Void) {
@@ -150,14 +165,6 @@ class NCNetworkingProcessUpload: NSObject {
                     }
                 }
 
-                // No upload available ? --> Retry Upload in Error
-                if counterUpload == 0 {
-                    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 && counterUpload == 0 && !isPasscodePresented {
                     self.deleteAssetLocalIdentifiers(account: account.account) {
@@ -170,6 +177,16 @@ class NCNetworkingProcessUpload: NSObject {
         }
     }
 
+    @objc private func processTimer() {
+        if notificationToken != nil {
+            // 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)
+            }
+        }
+    }
+
     private func deleteAssetLocalIdentifiers(account: String, completition: @escaping () -> Void) {
 
         DispatchQueue.main.async {