Marino Faggiana %!s(int64=6) %!d(string=hai) anos
pai
achega
cdd7d8c3f9
Modificáronse 2 ficheiros con 52 adicións e 2 borrados
  1. 17 2
      iOSClient/AppDelegate.m
  2. 35 0
      iOSClient/Database/NCManageDatabase.swift

+ 17 - 2
iOSClient/AppDelegate.m

@@ -1514,9 +1514,24 @@
         // Build < 15
         if (([actualBuild compare:@"15" options:NSNumericSearch] == NSOrderedAscending) || actualBuild == nil) {
             
+            NSString *oldDirectoryID;
+            NSString *serverUrl;
+            
             // Remove All old Photo Library
-            [[NCManageDatabase sharedInstance] clearTable:[tableMetadata class] account:nil];
-            [[NCManageDatabase sharedInstance] clearTable:[tableDirectory class] account:nil];
+            NSArray *metadatas = [[NCManageDatabase sharedInstance] getMetadatasWithPredicate:[NSPredicate predicateWithFormat:@""] sorted:nil ascending:NO];
+            for (tableMetadata *metadata in metadatas) {
+                if (![oldDirectoryID isEqualToString:metadata.directoryID]) {
+                    serverUrl = [[NCManageDatabase sharedInstance] getServerUrl:metadata.directoryID];
+                    oldDirectoryID = metadata.directoryID;
+                }
+                if (serverUrl == nil) {
+                    [[NCManageDatabase sharedInstance] deleteMetadataWithPredicate:[NSPredicate predicateWithFormat:@"fileID == %@", metadata.fileID]];
+                } else {
+                    [[NCManageDatabase sharedInstance] addMetadataServerUrlWithFileID:metadata.fileID serverUrl:serverUrl];
+                }
+            }
+
+            [[NCManageDatabase sharedInstance] clearTable:[tablePhotos class] account:nil];
         }
     }
     

+ 35 - 0
iOSClient/Database/NCManageDatabase.swift

@@ -1015,6 +1015,22 @@ class NCManageDatabase: NSObject {
         return result.directoryID
     }
     
+    @objc func getServerUrl(_ directoryID: String?) -> String? {
+        
+        guard let directoryID = directoryID else {
+            return nil
+        }
+        
+        let realm = try! Realm()
+        realm.refresh()
+        
+        guard let result = realm.objects(tableDirectory.self).filter("directoryID == %@", directoryID).first else {
+            return nil
+        }
+        
+        return result.serverUrl
+    }
+    
     @objc func setDateReadDirectory(serverUrl: String, account: String) {
         
         let realm = try! Realm()
@@ -1693,6 +1709,25 @@ class NCManageDatabase: NSObject {
         }        
     }
     
+    @objc func addMetadataServerUrl(fileID: String, serverUrl: String) {
+        
+        let realm = try! Realm()
+        
+        do {
+            try realm.write {
+                
+                let results = realm.objects(tableMetadata.self).filter("fileID == %@", fileID)
+                
+                for result in results {
+                    result.serverUrl = serverUrl
+                }
+            }
+        } catch let error {
+            print("[LOG] Could not write to database: ", error)
+            return
+        }
+    }
+    
     @objc func renameMetadata(fileNameTo: String, fileID: String) -> tableMetadata? {
         
         var result :tableMetadata?