Pārlūkot izejas kodu

Improvement: addDirectory

Marino Faggiana 6 gadi atpakaļ
vecāks
revīzija
2fe9baba60
1 mainītis faili ar 47 papildinājumiem un 33 dzēšanām
  1. 47 33
      iOSClient/Database/NCManageDatabase.swift

+ 47 - 33
iOSClient/Database/NCManageDatabase.swift

@@ -824,44 +824,58 @@ class NCManageDatabase: NSObject {
         var result: tableDirectory?
         let realm = try! Realm()
 
-        do {
-            try realm.write {
-            
-                result = realm.objects(tableDirectory.self).filter("account = %@ AND serverUrl = %@", tableAccount.account, serverUrl).first
+        result = realm.objects(tableDirectory.self).filter("account = %@ AND serverUrl = %@", tableAccount.account, serverUrl).first
+        
+        realm.beginWrite()
+        
+        if result == nil || (result?.isInvalidated)! {
             
-                if result == nil || (result?.isInvalidated)! {
-                
-                    result = tableDirectory()
-                    result!.account = tableAccount.account
+            result = tableDirectory()
+            result!.account = tableAccount.account
                 
-                    result!.directoryID = NSUUID().uuidString.replacingOccurrences(of: "-", with: "").lowercased()
-                    result!.e2eEncrypted = encrypted
-                    result!.favorite = favorite
-                    if let fileID = fileID {
-                        result!.fileID = fileID
-                    }
-                    if let permissions = permissions {
-                        result!.permissions = permissions
-                    }
-                    result!.serverUrl = serverUrl
-                    realm.add(result!, update: true)
+            result!.directoryID = NSUUID().uuidString.replacingOccurrences(of: "-", with: "").lowercased()
+            result!.e2eEncrypted = encrypted
+            result!.favorite = favorite
+            if let fileID = fileID {
+                result!.fileID = fileID
+            }
+            if let permissions = permissions {
+                result!.permissions = permissions
+            }
+            
+            result!.serverUrl = serverUrl
+            realm.add(result!)
+            
+            do {
+                try realm.commitWrite()
+            } catch let error {
+                print("[LOG] Could not write to database: ", error)
+                return nil
+            }
                 
-                } else {
+        } else {
                 
-                    result!.e2eEncrypted = encrypted
-                    result!.favorite = favorite
-                    if let fileID = fileID {
-                        result!.fileID = fileID
-                    }
-                    if let permissions = permissions {
-                        result!.permissions = permissions
-                    }
-                    realm.add(result!, update: true)
-                }
+            result!.e2eEncrypted = encrypted
+            result!.favorite = favorite
+            if let fileID = fileID {
+                result!.fileID = fileID
+            }
+            if let permissions = permissions {
+                result!.permissions = permissions
+            }
+                    
+            result =  tableDirectory.init(value: result!)
+            let results = realm.objects(tableDirectory.self).filter("account = %@ AND serverUrl = %@", tableAccount.account, serverUrl)
+
+            realm.delete(results)
+            realm.add(result!)
+            
+            do {
+                try realm.commitWrite()
+            } catch let error {
+                print("[LOG] Could not write to database: ", error)
+                return nil
             }
-        } catch let error {
-            print("[LOG] Could not write to database: ", error)
-            return nil
         }
         
         return tableDirectory.init(value: result!)