marinofaggiana 6 years ago
parent
commit
3f367a558b
2 changed files with 29 additions and 43 deletions
  1. 0 3
      iOSClient/AppDelegate.m
  2. 29 40
      iOSClient/Database/NCManageDatabase.swift

+ 0 - 3
iOSClient/AppDelegate.m

@@ -228,9 +228,6 @@ PKPushRegistry *pushRegistry;
     [_activeMain closeAllMenu];
     [_activeMain closeAllMenu];
     
     
     [self updateApplicationIconBadgeNumber];
     [self updateApplicationIconBadgeNumber];
-    
-    // Align Table Media
-    [[NCManageDatabase sharedInstance] alignTableMediaWithAccount:self.activeAccount];
 }
 }
 
 
 //
 //

+ 29 - 40
iOSClient/Database/NCManageDatabase.swift

@@ -1998,29 +1998,42 @@ class NCManageDatabase: NSObject {
         }
         }
     
     
         let serversUrlLocked = realm.objects(tableDirectory.self).filter(NSPredicate(format: "account == %@ AND lock == true", account)).map { $0.serverUrl } as Array
         let serversUrlLocked = realm.objects(tableDirectory.self).filter(NSPredicate(format: "account == %@ AND lock == true", account)).map { $0.serverUrl } as Array
-        if serversUrlLocked.count == 0 {
-            return Array(results.map { tableMetadata.init(value:$0) })
-        }
         
         
         var metadatas = [tableMetadata]()
         var metadatas = [tableMetadata]()
         var oldServerUrl = ""
         var oldServerUrl = ""
-        var lock = false
+        var isValidMetadata = true
 
 
-        for result in results {
-            if result.serverUrl != oldServerUrl {
-                var foundLock = false
-                oldServerUrl = result.serverUrl
-                for serverUrlLocked in serversUrlLocked {
-                    if result.serverUrl.contains(serverUrlLocked) {
-                        foundLock = true
-                        break
+        do {
+            try realm.write {
+                for result in results {
+                    // Update record
+                    var metadata = realm.objects(tableMetadata.self).filter(NSPredicate(format: "fileID == %@", result.fileID)).first
+                    if metadata != nil {
+                        realm.delete(result)
+                        realm.add(tableMedia.init(value: metadata!))
+                    } else {
+                        metadata = tableMetadata.init(value: result)
+                    }
+                    // Verify Lock
+                    if (serversUrlLocked.count > 0) && (metadata!.serverUrl != oldServerUrl) {
+                        var foundLock = false
+                        oldServerUrl = metadata!.serverUrl
+                        for serverUrlLocked in serversUrlLocked {
+                            if metadata!.serverUrl.contains(serverUrlLocked) {
+                                foundLock = true
+                                break
+                            }
+                        }
+                        isValidMetadata = !foundLock
+                    }
+                    if isValidMetadata {
+                        metadatas.append(tableMetadata.init(value: metadata!))
                     }
                     }
                 }
                 }
-                lock = foundLock
-            }
-            if !lock {
-                metadatas.append(tableMetadata.init(value: result))
             }
             }
+        } catch let error {
+            print("[LOG] Could not write to database: ", error)
+            realm.cancelWrite()
         }
         }
         
         
         return metadatas
         return metadatas
@@ -2084,30 +2097,6 @@ class NCManageDatabase: NSObject {
         return Calendar.current.date(bySettingHour: 0, minute: 0, second: 0, of: Date())!
         return Calendar.current.date(bySettingHour: 0, minute: 0, second: 0, of: Date())!
     }
     }
     
     
-    @objc func alignTableMedia(account: String) {
-        
-        let realm = try! Realm()
-        realm.refresh()
-        
-        do {
-            try realm.write {
-                
-                let results = realm.objects(tableMedia.self).filter(NSPredicate(format: "account == %@", account))
-                for result in results {
-                    let fileID = result.fileID
-                    realm.delete(result)
-                    guard let metadata = realm.objects(tableMetadata.self).filter(NSPredicate(format: "fileID == %@", fileID)).first else {
-                        continue
-                    }
-                    realm.add(tableMedia.init(value: metadata))
-                 }
-            }
-        } catch let error {
-            print("[LOG] Could not write to database: ", error)
-            realm.cancelWrite()
-        }
-    }
-    
     //MARK: -
     //MARK: -
     //MARK: Table Photo Library
     //MARK: Table Photo Library