Marino Faggiana 6 years ago
parent
commit
4800c137b1
2 changed files with 22 additions and 3 deletions
  1. 10 1
      iOSClient/AppDelegate.m
  2. 12 2
      iOSClient/Database/NCManageDatabase.swift

+ 10 - 1
iOSClient/AppDelegate.m

@@ -1397,7 +1397,6 @@
     
     // Stop Timer
     [_timerProcessAutoDownloadUpload invalidate];
-    
     NSInteger counterDownload = [[[NCManageDatabase sharedInstance] getMetadatasWithPredicate:[NSPredicate predicateWithFormat:@"account == %@ AND (status == %d OR status == %d)", self.activeAccount, k_metadataStatusInDownload, k_metadataStatusDownloading] sorted:@"fileName" ascending:true] count];
     NSInteger counterUpload = [[[NCManageDatabase sharedInstance] getMetadatasWithPredicate:[NSPredicate predicateWithFormat:@"account == %@ AND (status == %d OR status == %d)", self.activeAccount, k_metadataStatusInUpload, k_metadataStatusUploading] sorted:@"fileName" ascending:true] count];
   
@@ -1494,6 +1493,16 @@
         }
     }
     
+    // Verify Downloading
+    NSArray *recordsInDownloading = [[NCManageDatabase sharedInstance] getMetadatasWithPredicate:[NSPredicate predicateWithFormat:@"account == %@ AND status == %d", self.activeAccount, k_metadataStatusDownloading] sorted:@"fileName" ascending:true];
+    
+    
+    
+    
+//    NSArray *recordsInUpload = [[NCManageDatabase sharedInstance] getMetadatasWithPredicate:[NSPredicate predicateWithFormat:@"account == %@ AND (status == %d OR status == %d)", self.activeAccount, k_metadataStatusInUpload, k_metadataStatusUploading] sorted:@"fileName" ascending:true];
+    
+    
+    
     // Start Timer
     _timerProcessAutoDownloadUpload = [NSTimer scheduledTimerWithTimeInterval:k_timerProcessAutoDownloadUpload target:self selector:@selector(processAutoDownloadUpload) userInfo:nil repeats:YES];
 }

+ 12 - 2
iOSClient/Database/NCManageDatabase.swift

@@ -1958,13 +1958,23 @@ class NCManageDatabase: NSObject {
         let directories = realm.objects(tableDirectory.self).filter(NSPredicate(format: "account == %@ AND e2eEncrypted == 0 AND serverUrl BEGINSWITH %@", tableAccount.account, startDirectory)).sorted(byKeyPath: "serverUrl", ascending: true)
         let directoriesID = Array(directories.map { $0.directoryID })
         let resultsDelete = realm.objects(tableMetadata.self).filter(NSPredicate(format: "account == %@ AND (typeFile == %@ OR typeFile == %@) AND directoryID IN %@ AND status == %d", tableAccount.account, k_metadataTypeFile_image, k_metadataTypeFile_video, directoriesID, k_metadataStatusNormal))
-    
+        let resultsInTransfer = realm.objects(tableMetadata.self).filter(NSPredicate(format: "account == %@ AND (typeFile == %@ OR typeFile == %@) AND directoryID IN %@ AND status != %d", tableAccount.account, k_metadataTypeFile_image, k_metadataTypeFile_video, directoriesID, k_metadataStatusNormal))
+        
+        // Create array metadatasForAdd without records in transfers
+        var metadatasForAdd = [tableMetadata]()
+        for metadata in metadatas {
+            let found = resultsInTransfer.filter { $0.fileID == metadata.fileID }
+            if found.count == 0 {
+                metadatasForAdd.append(metadata)
+            }
+        }
+        
         do {
             try realm.write {
                 // DELETE
                 realm.delete(resultsDelete)
                 // INSERT
-                realm.add(metadatas, update: true)
+                realm.add(metadatasForAdd, update: true)
             }
         } catch let error {
             print("[LOG] Could not write to database: ", error)