Selaa lähdekoodia

improve detect LivePhoto

Signed-off-by: Marino Faggiana <marino@marinofaggiana.com>
Marino Faggiana 2 vuotta sitten
vanhempi
commit
3929b47321
1 muutettua tiedostoa jossa 27 lisäystä ja 21 poistoa
  1. 27 21
      iOSClient/Data/NCManageDatabase+Metadata.swift

+ 27 - 21
iOSClient/Data/NCManageDatabase+Metadata.swift

@@ -882,32 +882,38 @@ extension NCManageDatabase {
         let realm = try! Realm()
         var metadatas: [tableMetadata] = []
 
-        let results = realm.objects(tableMetadata.self).filter(predicate).sorted(byKeyPath: "fileNameView", ascending: false)
-        if livePhoto {
-            for index in results.indices {
-                let metadata = results[index]
-                if index < results.count - 1, metadata.fileNoExtension == results[index+1].fileNoExtension {
-                    var update = false
-                    if !metadata.livePhoto || !results[index+1].livePhoto { update = true }
-                    metadata.livePhoto = true
-                    results[index+1].livePhoto = true
-                    if update {
-                        NCManageDatabase.shared.addMetadatas([metadata, results[index+1]])
-                    }
-                }
-                if metadata.livePhoto {
-                    if metadata.classFile == NKCommon.typeClassFile.image.rawValue {
-                        metadatas.append(tableMetadata.init(value: metadata))
+        do {
+            try realm.write {
+                let results = realm.objects(tableMetadata.self).filter(predicate).sorted(byKeyPath: "fileNameView", ascending: false)
+                if livePhoto {
+                    for index in results.indices {
+                        let metadata = results[index]
+                        if index < results.count - 1, metadata.fileNoExtension == results[index+1].fileNoExtension {
+                            if !metadata.livePhoto {
+                                metadata.livePhoto = true
+                            }
+                            if !results[index+1].livePhoto {
+                                results[index+1].livePhoto = true
+                            }
+                        }
+                        if metadata.livePhoto {
+                            if metadata.classFile == NKCommon.typeClassFile.image.rawValue {
+                                metadatas.append(tableMetadata.init(value: metadata))
+                            }
+                            continue
+                        } else {
+                            metadatas.append(tableMetadata.init(value: metadata))
+                        }
                     }
-                    continue
                 } else {
-                    metadatas.append(tableMetadata.init(value: metadata))
+                    metadatas = Array(results.map { tableMetadata.init(value: $0) })
                 }
             }
-            return metadatas
-        } else {
-            return Array(results.map { tableMetadata.init(value: $0) })
+        } catch let error {
+            NKCommon.shared.writeLog("Could not write to database: \(error)")
         }
+
+        return metadatas
     }
 
     func isMetadataShareOrMounted(metadata: tableMetadata, metadataFolder: tableMetadata?) -> Bool {