Marino Faggiana 7 жил өмнө
parent
commit
b193db6589

+ 2 - 2
PickerFileProvider/FileProvider.swift

@@ -1029,7 +1029,7 @@ class FileProvider: NSFileProviderExtension, CCNetworkingDelegate {
         let queueInLock = NCManageDatabase.sharedInstance.getQueueUploadInLock()
         if queueInLock != nil && queueInLock!.count == 0 {
             
-            let metadataNetQueue = NCManageDatabase.sharedInstance.getQueueUploadLock(selector: selectorUploadFile, withPath: true)
+            let metadataNetQueue = NCManageDatabase.sharedInstance.lockQueueUpload(selector: selectorUploadFile, withPath: true)
             if  metadataNetQueue != nil {
                 
                 if self.copyFile(metadataNetQueue!.path, toPath: directoryUser + "/" + metadataNetQueue!.fileName) == nil {
@@ -1050,7 +1050,7 @@ class FileProvider: NSFileProviderExtension, CCNetworkingDelegate {
         if tasks!.count == 0 {
             let records = NCManageDatabase.sharedInstance.getQueueUpload(predicate: NSPredicate(format: "account = %@ AND selector = %@ AND lock == true AND path != nil", account, selectorUploadFile))
             if records != nil && records!.count > 0 {
-                NCManageDatabase.sharedInstance.unlockAllQueueUploadInPath()
+                NCManageDatabase.sharedInstance.unlockAllQueueUploadWithPath()
             }
         }
     }

+ 4 - 4
iOSClient/AppDelegate.m

@@ -1445,7 +1445,7 @@
     
     if (counterUploadInSessionAndInLock < maxConcurrentDownloadUpload && counterUploadInLock < 1) {
         
-        metadataNet = [[NCManageDatabase sharedInstance] getQueueUploadLockWithSelector:selectorUploadAutoUpload withPath:false];
+        metadataNet = [[NCManageDatabase sharedInstance] lockQueueUploadWithSelector:selectorUploadAutoUpload withPath:false];
         if (metadataNet) {
             
             [[CCNetworking sharedNetworking] uploadFileFromAssetLocalIdentifier:metadataNet delegate:_activeMain];
@@ -1473,7 +1473,7 @@
         
         if (counterUploadInSessionAndInLock < maxConcurrentDownloadUpload && counterUploadInLock < 1) {
             
-            metadataNet = [[NCManageDatabase sharedInstance] getQueueUploadLockWithSelector:selectorUploadAutoUploadAll withPath:false];
+            metadataNet = [[NCManageDatabase sharedInstance] lockQueueUploadWithSelector:selectorUploadAutoUploadAll withPath:false];
             if (metadataNet) {
                 
                 [[CCNetworking sharedNetworking] uploadFileFromAssetLocalIdentifier:metadataNet delegate:_activeMain];
@@ -1489,7 +1489,7 @@
     
     if (counterUploadInSessionAndInLock < maxConcurrentDownloadUpload && counterUploadInLock < 1) {
         
-        metadataNet = [[NCManageDatabase sharedInstance] getQueueUploadLockWithSelector:selectorUploadFile withPath:false];
+        metadataNet = [[NCManageDatabase sharedInstance] lockQueueUploadWithSelector:selectorUploadFile withPath:false];
         if (metadataNet) {
             
             [[CCNetworking sharedNetworking] uploadFileFromAssetLocalIdentifier:metadataNet delegate:_activeMain];
@@ -1503,7 +1503,7 @@
     
     if (counterUploadInSessionAndInLock < maxConcurrentDownloadUpload && counterUploadInLock < 1 && [[UIApplication sharedApplication] applicationState] != UIApplicationStateBackground) {
         
-        metadataNet = [[NCManageDatabase sharedInstance] getQueueUploadLockWithSelector:selectorUploadFile withPath:true];
+        metadataNet = [[NCManageDatabase sharedInstance] lockQueueUploadWithSelector:selectorUploadFile withPath:true];
         if (metadataNet) {
             
             NSString *toPath = [NSString stringWithFormat:@"%@/%@", self.directoryUser, metadataNet.fileName];

+ 38 - 38
iOSClient/Database/NCManageDatabase.swift

@@ -2302,7 +2302,21 @@ class NCManageDatabase: NSObject {
         }
     }
     
-    @objc func getQueueUploadLock(selector: String, withPath: Bool) -> CCMetadataNet? {
+    @objc func getQueueUpload(predicate: NSPredicate) -> [tableQueueUpload]? {
+        
+        guard self.getAccountActive() != nil else {
+            return nil
+        }
+        
+        let realm = try! Realm()
+        realm.refresh()
+        
+        let results = realm.objects(tableQueueUpload.self).filter(predicate)
+        
+        return Array(results.map { tableQueueUpload.init(value:$0) })
+    }
+    
+    @objc func getQueueUpload(withPath: Bool) -> CCMetadataNet? {
         
         guard let tableAccount = self.getAccountActive() else {
             return nil
@@ -2311,17 +2325,15 @@ class NCManageDatabase: NSObject {
         var result: tableQueueUpload?
 
         let realm = try! Realm()
-
-        realm.beginWrite()
+        realm.refresh()
         
         if withPath {
-            result = realm.objects(tableQueueUpload.self).filter("account = %@ AND selector = %@ AND lock == false AND path != nil", tableAccount.account, selector).sorted(byKeyPath: "date", ascending: true).first
+            result = realm.objects(tableQueueUpload.self).filter("account = %@ AND lock == false AND path != nil", tableAccount.account).sorted(byKeyPath: "date", ascending: true).first
         } else {
-            result = realm.objects(tableQueueUpload.self).filter("account = %@ AND selector = %@ AND lock == false AND path == nil", tableAccount.account, selector).sorted(byKeyPath: "date", ascending: true).first
+            result = realm.objects(tableQueueUpload.self).filter("account = %@ AND lock == false AND path == nil", tableAccount.account).sorted(byKeyPath: "date", ascending: true).first
         }
         
         if result == nil {
-            realm.cancelWrite()
             return nil
         }
         
@@ -2329,8 +2341,8 @@ class NCManageDatabase: NSObject {
         
         metadataNet.account = result!.account
         metadataNet.assetLocalIdentifier = result!.assetLocalIdentifier
-        metadataNet.directoryID = self.getDirectoryID(result!.serverUrl)
         metadataNet.errorCode = result!.errorCode
+        metadataNet.directoryID = self.getDirectoryID(result!.serverUrl)
         metadataNet.fileName = result!.fileName
         metadataNet.path = result!.path
         metadataNet.selector = result!.selector
@@ -2339,16 +2351,6 @@ class NCManageDatabase: NSObject {
         metadataNet.session = result!.session
         metadataNet.taskStatus = Int(k_taskStatusResume)
         
-        // Lock
-        result!.lock = true
-        
-        do {
-            try realm.commitWrite()
-        } catch let error {
-            print("[LOG] Could not write to database: ", error)
-            return nil
-        }
-        
         return metadataNet
     }
     
@@ -2366,38 +2368,26 @@ class NCManageDatabase: NSObject {
         return Array(results.map { tableQueueUpload.init(value:$0) })
     }
     
-    @objc func getQueueUpload(predicate: NSPredicate) -> [tableQueueUpload]? {
-        
-        guard self.getAccountActive() != nil else {
-            return nil
-        }
-        
-        let realm = try! Realm()
-        realm.refresh()
-        
-        let results = realm.objects(tableQueueUpload.self).filter(predicate)
-        
-        return Array(results.map { tableQueueUpload.init(value:$0) })
-    }
-    
-    @objc func getQueueUpload(withPath: Bool) -> CCMetadataNet? {
+    @objc func lockQueueUpload(selector: String, withPath: Bool) -> CCMetadataNet? {
         
         guard let tableAccount = self.getAccountActive() else {
             return nil
         }
         
         var result: tableQueueUpload?
-
+        
         let realm = try! Realm()
-        realm.refresh()
+        
+        realm.beginWrite()
         
         if withPath {
-            result = realm.objects(tableQueueUpload.self).filter("account = %@ AND lock == false AND path != nil", tableAccount.account).sorted(byKeyPath: "date", ascending: true).first
+            result = realm.objects(tableQueueUpload.self).filter("account = %@ AND selector = %@ AND lock == false AND path != nil", tableAccount.account, selector).sorted(byKeyPath: "date", ascending: true).first
         } else {
-            result = realm.objects(tableQueueUpload.self).filter("account = %@ AND lock == false AND path == nil", tableAccount.account).sorted(byKeyPath: "date", ascending: true).first
+            result = realm.objects(tableQueueUpload.self).filter("account = %@ AND selector = %@ AND lock == false AND path == nil", tableAccount.account, selector).sorted(byKeyPath: "date", ascending: true).first
         }
         
         if result == nil {
+            realm.cancelWrite()
             return nil
         }
         
@@ -2405,8 +2395,8 @@ class NCManageDatabase: NSObject {
         
         metadataNet.account = result!.account
         metadataNet.assetLocalIdentifier = result!.assetLocalIdentifier
-        metadataNet.errorCode = result!.errorCode
         metadataNet.directoryID = self.getDirectoryID(result!.serverUrl)
+        metadataNet.errorCode = result!.errorCode
         metadataNet.fileName = result!.fileName
         metadataNet.path = result!.path
         metadataNet.selector = result!.selector
@@ -2415,6 +2405,16 @@ class NCManageDatabase: NSObject {
         metadataNet.session = result!.session
         metadataNet.taskStatus = Int(k_taskStatusResume)
         
+        // Lock
+        result!.lock = true
+        
+        do {
+            try realm.commitWrite()
+        } catch let error {
+            print("[LOG] Could not write to database: ", error)
+            return nil
+        }
+        
         return metadataNet
     }
     
@@ -2443,7 +2443,7 @@ class NCManageDatabase: NSObject {
         }
     }
     
-    @objc func unlockAllQueueUploadInPath() {
+    @objc func unlockAllQueueUploadWithPath() {
         
         guard let tableAccount = self.getAccountActive() else {
             return