|
@@ -1958,13 +1958,23 @@ class NCManageDatabase: NSObject {
|
|
|
let directories = realm.objects(tableDirectory.self).filter(NSPredicate(format: "account == %@ AND e2eEncrypted == 0 AND serverUrl BEGINSWITH %@", tableAccount.account, startDirectory)).sorted(byKeyPath: "serverUrl", ascending: true)
|
|
|
let directoriesID = Array(directories.map { $0.directoryID })
|
|
|
let resultsDelete = realm.objects(tableMetadata.self).filter(NSPredicate(format: "account == %@ AND (typeFile == %@ OR typeFile == %@) AND directoryID IN %@ AND status == %d", tableAccount.account, k_metadataTypeFile_image, k_metadataTypeFile_video, directoriesID, k_metadataStatusNormal))
|
|
|
-
|
|
|
+ let resultsInTransfer = realm.objects(tableMetadata.self).filter(NSPredicate(format: "account == %@ AND (typeFile == %@ OR typeFile == %@) AND directoryID IN %@ AND status != %d", tableAccount.account, k_metadataTypeFile_image, k_metadataTypeFile_video, directoriesID, k_metadataStatusNormal))
|
|
|
+
|
|
|
+ // Create array metadatasForAdd without records in transfers
|
|
|
+ var metadatasForAdd = [tableMetadata]()
|
|
|
+ for metadata in metadatas {
|
|
|
+ let found = resultsInTransfer.filter { $0.fileID == metadata.fileID }
|
|
|
+ if found.count == 0 {
|
|
|
+ metadatasForAdd.append(metadata)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
do {
|
|
|
try realm.write {
|
|
|
// DELETE
|
|
|
realm.delete(resultsDelete)
|
|
|
// INSERT
|
|
|
- realm.add(metadatas, update: true)
|
|
|
+ realm.add(metadatasForAdd, update: true)
|
|
|
}
|
|
|
} catch let error {
|
|
|
print("[LOG] Could not write to database: ", error)
|