marinofaggiana %!s(int64=4) %!d(string=hai) anos
pai
achega
f7c6efef24
Modificáronse 1 ficheiros con 12 adicións e 5 borrados
  1. 12 5
      iOSClient/Database/NCManageDatabase.swift

+ 12 - 5
iOSClient/Database/NCManageDatabase.swift

@@ -2000,6 +2000,7 @@ class NCManageDatabase: NSObject {
     @objc func updateMetadatasWithPredicate(_ predicate: NSPredicate, metadatas: [tableMetadata], withVerifyLocal local: Bool = false) -> [tableMetadata] {
         
         let realm = try! Realm()
+        var ocIdsUdated : [String] = []
         var metadatasUdated : [tableMetadata] = []
         
         do {
@@ -2017,19 +2018,19 @@ class NCManageDatabase: NSObject {
                     if let result = results.first(where: { $0.ocId == metadata.ocId }) {
                         // update
                         if result.status == k_metadataStatusNormal && result.etag != metadata.etag {
-                            metadatasUdated.append(metadata)
+                            ocIdsUdated.append(metadata.ocId)
                             realm.add(metadata, update: .all)
                             updated = true
                         }
                     } else {
                         // new
-                        metadatasUdated.append(metadata)
+                        ocIdsUdated.append(metadata.ocId)
                         realm.add(metadata, update: .all)
                         updated = true
                     }
                     if local && !updated {
-                        if NCManageDatabase.sharedInstance.getTableLocalFile(predicate: NSPredicate(format: "ocId == %@", metadata.ocId)) == nil {
-                            metadatasUdated.append(metadata)
+                        if realm.objects(tableLocalFile.self).filter(NSPredicate(format: "ocId == %@", metadata.ocId)).first == nil {
+                           ocIdsUdated.append(metadata.ocId)
                         }
                     }
                 }
@@ -2038,7 +2039,13 @@ class NCManageDatabase: NSObject {
             print("[LOG] Could not write to database: ", error)
         }
         
-        return Array(metadatasUdated.map { $0.freeze() })
+        for ocId in ocIdsUdated {
+            if let result = realm.objects(tableMetadata.self).filter(NSPredicate(format: "ocId == %@", ocId)).first {
+                metadatasUdated.append(result.freeze())
+            }
+        }
+        
+        return metadatasUdated
     }
     
     func setMetadataSession(ocId: String, session: String? = nil, sessionError: String? = nil, sessionSelector: String? = nil, sessionTaskIdentifier: Int? = nil, status: Int? = nil, etag: String? = nil, setFavorite: Bool = false) {