Parcourir la source

Improvements media

marinofaggiana il y a 5 ans
Parent
commit
84d851fe82
2 fichiers modifiés avec 52 ajouts et 24 suppressions
  1. 44 24
      iOSClient/Database/NCManageDatabase.swift
  2. 8 0
      iOSClient/Media/NCMedia.swift

+ 44 - 24
iOSClient/Database/NCManageDatabase.swift

@@ -2003,7 +2003,7 @@ class NCManageDatabase: NSObject {
         realm.refresh()
         
         let sortProperties = [SortDescriptor(keyPath: "date", ascending: false), SortDescriptor(keyPath: "fileNameView", ascending: false)]
-        let results = realm.objects(tableMedia.self).filter(NSPredicate(format: "account == %@", account)).sorted(by: sortProperties)// d(byKeyPath: "date", ascending: false)
+        let results = realm.objects(tableMedia.self).filter(NSPredicate(format: "account == %@", account)).sorted(by: sortProperties)
         if results.count == 0 {
             return nil
         }
@@ -2014,33 +2014,26 @@ class NCManageDatabase: NSObject {
         var oldServerUrl = ""
         var isValidMetadata = true
 
-        do {
-            try realm.write {
-                for result in results {
-                    let metadata = tableMetadata.init(value: result)
-                
-                    // Verify Lock
-                    if (serversUrlLocked.count > 0) && (metadata.serverUrl != oldServerUrl) {
-                        var foundLock = false
-                        oldServerUrl = metadata.serverUrl
-                        for serverUrlLocked in serversUrlLocked {
-                            if metadata.serverUrl.contains(serverUrlLocked) {
-                                foundLock = true
-                                break
-                            }
-                        }
-                        isValidMetadata = !foundLock
-                    }
-                    if isValidMetadata {
-                        metadatas.append(tableMetadata.init(value: metadata))
+        for result in results {
+            let metadata = tableMetadata.init(value: result)
+        
+            // Verify Lock
+            if (serversUrlLocked.count > 0) && (metadata.serverUrl != oldServerUrl) {
+                var foundLock = false
+                oldServerUrl = metadata.serverUrl
+                for serverUrlLocked in serversUrlLocked {
+                    if metadata.serverUrl.contains(serverUrlLocked) {
+                        foundLock = true
+                        break
                     }
                 }
+                isValidMetadata = !foundLock
+            }
+            if isValidMetadata {
+                metadatas.append(tableMetadata.init(value: metadata))
             }
-        } catch let error {
-            print("[LOG] Could not write to database: ", error)
-            realm.cancelWrite()
         }
-        
+      
         return metadatas
     }
     
@@ -2130,6 +2123,33 @@ class NCManageDatabase: NSObject {
         return Calendar.current.date(bySettingHour: 0, minute: 0, second: 0, of: Date())!
     }
     
+    @objc func AlignMediaMetadata(account: String) {
+        
+        let realm = try! Realm()
+        realm.refresh()
+        
+        let sortProperties = [SortDescriptor(keyPath: "date", ascending: false), SortDescriptor(keyPath: "fileNameView", ascending: false)]
+        let results = realm.objects(tableMedia.self).filter(NSPredicate(format: "account == %@", account)).sorted(by: sortProperties)
+        if results.count == 0 {
+            return
+        }
+        
+        do {
+            try realm.write {
+                for result in results {
+                    if let tableMetadata = realm.objects(tableMetadata.self).filter(NSPredicate(format: "fileID == %@", result.fileID)).first {
+                        if result.etag != tableMetadata.etag {
+                            realm.add(tableMedia.init(value: tableMetadata), update: true)
+                        }
+                    }
+                }
+            }
+        } catch let error {
+            print("[LOG] Could not write to database: ", error)
+            realm.cancelWrite()
+        }
+    }
+    
     //MARK: -
     //MARK: Table Photo Library
     

+ 8 - 0
iOSClient/Media/NCMedia.swift

@@ -143,6 +143,14 @@ class NCMedia: UIViewController, DropdownMenuDelegate, DZNEmptyDataSetSource, DZ
         }
     }
     
+    override func viewWillDisappear(_ animated: Bool) {
+        super.viewWillDisappear(animated)
+        
+        DispatchQueue.global().async {
+            NCManageDatabase.sharedInstance.AlignMediaMetadata(account: self.appDelegate.activeAccount)
+        }
+    }
+    
     override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
         super.viewWillTransition(to: size, with: coordinator)