Marino Faggiana há 7 anos atrás
pai
commit
8e7f450f7f
1 ficheiros alterados com 25 adições e 19 exclusões
  1. 25 19
      iOSClient/Database/NCManageDatabase.swift

+ 25 - 19
iOSClient/Database/NCManageDatabase.swift

@@ -515,31 +515,37 @@ class NCManageDatabase: NSObject {
         
         let realm = try! Realm()
         
-        realm.beginWrite()
-
-        if realm.objects(tableAutoUpload.self).filter("account = %@ AND assetLocalIdentifier = %@", tableAccount.account, metadataNet.assetLocalIdentifier).first == nil {
-        
-            // Add new Auto Upload
-            let addAutoUpload = tableAutoUpload()
+        if realm.isInWriteTransaction {
             
-            addAutoUpload.account = tableAccount.account
-            addAutoUpload.assetLocalIdentifier = metadataNet.assetLocalIdentifier
-            addAutoUpload.fileName = metadataNet.fileName
-            addAutoUpload.selector = metadataNet.selector
-            if (metadataNet.selectorPost != nil) {
-                addAutoUpload.selectorPost = metadataNet.selectorPost
-            }
-            addAutoUpload.serverUrl = metadataNet.serverUrl
-            addAutoUpload.session = metadataNet.session
-            addAutoUpload.priority = metadataNet.priority
+            print("[LOG] Could not write to database, addAutoUpload is already in write transaction")
+            return false
             
-            realm.add(addAutoUpload)
+        } else {
         
             do {
-                try realm.commitWrite()
+                try realm.write {
+
+                    if realm.objects(tableAutoUpload.self).filter("account = %@ AND assetLocalIdentifier = %@", tableAccount.account, metadataNet.assetLocalIdentifier).first == nil {
+        
+                        // Add new Auto Upload
+                        let addAutoUpload = tableAutoUpload()
+            
+                        addAutoUpload.account = tableAccount.account
+                        addAutoUpload.assetLocalIdentifier = metadataNet.assetLocalIdentifier
+                        addAutoUpload.fileName = metadataNet.fileName
+                        addAutoUpload.selector = metadataNet.selector
+                        if (metadataNet.selectorPost != nil) {
+                            addAutoUpload.selectorPost = metadataNet.selectorPost
+                        }
+                        addAutoUpload.serverUrl = metadataNet.serverUrl
+                        addAutoUpload.session = metadataNet.session
+                        addAutoUpload.priority = metadataNet.priority
+                        
+                        realm.add(addAutoUpload)
+                    }
+                }
             } catch let error {
                 print("[LOG] Could not write to database: ", error)
-                return false
             }
         }