Browse Source

e2ee not in background

Marino Faggiana 7 years ago
parent
commit
1ba81de8da
2 changed files with 32 additions and 5 deletions
  1. 6 5
      iOSClient/AppDelegate.m
  2. 26 0
      iOSClient/Database/NCManageDatabase.swift

+ 6 - 5
iOSClient/AppDelegate.m

@@ -1425,13 +1425,14 @@
     
     // E2EE : not in background
     if ([[UIApplication sharedApplication] applicationState] == UIApplicationStateBackground) {
-        NSString *serverUrlAutoUpload = [[NCManageDatabase sharedInstance] getAccountAutoUploadPath:self.activeUrl];
-        tableDirectory *directory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPredicate:[NSPredicate predicateWithFormat:@"account = %@ AND serverUrl = %@ AND e2eEncrypted = 1", self.activeAccount, serverUrlAutoUpload]];
-        if (directory != nil)
-            return;
+        metadataNet = [[NCManageDatabase sharedInstance] getQueueUploadLock];
+        if (metadataNet) {
+            tableDirectory *directory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPredicate:[NSPredicate predicateWithFormat:@"account = %@ AND serverUrl = %@ AND e2eEncrypted = 1", self.activeAccount, metadataNet.serverUrl]];
+            if (directory != nil)
+                return;
+        }
     }
     
-    
     // Stop Timer
     [_timerProcessAutoDownloadUpload invalidate];
     

+ 26 - 0
iOSClient/Database/NCManageDatabase.swift

@@ -2105,6 +2105,32 @@ class NCManageDatabase: NSObject {
         return metadataNet
     }
     
+    @objc func getQueueUploadLock() -> CCMetadataNet? {
+        
+        guard let tableAccount = self.getAccountActive() else {
+            return nil
+        }
+        
+        let realm = try! Realm()
+        
+        guard let result = realm.objects(tableQueueUpload.self).filter("account = %@ AND lock == false", tableAccount.account).sorted(byKeyPath: "date", ascending: true).first else {
+            return nil
+        }
+        
+        let metadataNet = CCMetadataNet()
+        
+        metadataNet.account = result.account
+        metadataNet.assetLocalIdentifier = result.assetLocalIdentifier
+        metadataNet.fileName = result.fileName
+        metadataNet.selector = result.selector
+        metadataNet.selectorPost = result.selectorPost
+        metadataNet.serverUrl = result.serverUrl
+        metadataNet.session = result.session
+        metadataNet.taskStatus = Int(k_taskStatusResume)
+        
+        return metadataNet
+    }
+    
     @objc func getLockQueueUpload() -> [tableQueueUpload]? {
         
         guard let tableAccount = self.getAccountActive() else {