marinofaggiana 6 years ago
parent
commit
811cb24db0
2 changed files with 33 additions and 7 deletions
  1. 32 6
      iOSClient/Database/NCManageDatabase.swift
  2. 1 1
      iOSClient/Media/NCMedia.swift

+ 32 - 6
iOSClient/Database/NCManageDatabase.swift

@@ -1987,18 +1987,44 @@ class NCManageDatabase: NSObject {
         return tableMetadata.init(value: result)
         return tableMetadata.init(value: result)
     }
     }
    
    
-    @objc func getTableMedias(predicate: NSPredicate) -> [tableMetadata]? {
+    @objc func getTablesMedia(account: String) -> [tableMetadata]? {
         
         
         let realm = try! Realm()
         let realm = try! Realm()
         realm.refresh()
         realm.refresh()
         
         
-        let results = realm.objects(tableMedia.self).filter(predicate).sorted(byKeyPath: "date", ascending: false)
-        
-        if (results.count > 0) {
-            return Array(results.map { tableMetadata.init(value:$0) })
-        } else {
+        let results = realm.objects(tableMedia.self).filter(NSPredicate(format: "account == %@", account)).sorted(byKeyPath: "date", ascending: false)
+        if results.count == 0 {
             return nil
             return nil
         }
         }
+    
+        let directoryLocked = realm.objects(tableDirectory.self).filter(NSPredicate(format: "account == %@ AND lock == true", account))
+        if directoryLocked.count == 0 {
+            return Array(results.map { tableMetadata.init(value:$0) })
+        }
+        
+        var metadatas = [tableMetadata]()
+        let arrayServerUrlLocked = Array(directoryLocked.map { $0.serverUrl })
+        var oldServerUrl = ""
+        var lock = false
+
+        for result in results {
+            if result.serverUrl != oldServerUrl {
+                var foundLock = false
+                oldServerUrl = result.serverUrl
+                for serverUrlLocked in arrayServerUrlLocked {
+                    if result.serverUrl.contains(serverUrlLocked) {
+                        foundLock = true
+                        break
+                    }
+                }
+                lock = foundLock
+            }
+            if !lock {
+                metadatas.append(tableMetadata.init(value: result))
+            }
+        }
+        
+        return metadatas
     }
     }
     
     
     func createTableMedia(_ metadatas: [tableMetadata], lteDate: Date, gteDate: Date,account: String) -> (isDifferent: Bool, newInsert: Int) {
     func createTableMedia(_ metadatas: [tableMetadata], lteDate: Date, gteDate: Date,account: String) -> (isDifferent: Bool, newInsert: Int) {

+ 1 - 1
iOSClient/Media/NCMedia.swift

@@ -502,7 +502,7 @@ extension NCMedia {
         
         
         DispatchQueue.global().async {
         DispatchQueue.global().async {
             
             
-            let metadatas = NCManageDatabase.sharedInstance.getTableMedias(predicate: NSPredicate(format: "account == %@", self.appDelegate.activeAccount))
+            let metadatas = NCManageDatabase.sharedInstance.getTablesMedia(account: self.appDelegate.activeAccount)
             self.sectionDatasource = CCSectionMetadata.creataDataSourseSectionMetadata(metadatas, listProgressMetadata: nil, groupByField: "date", filterFileID: nil, filterTypeFileImage: self.filterTypeFileImage, filterTypeFileVideo: self.filterTypeFileVideo, sorted: "date", ascending: false, activeAccount: self.appDelegate.activeAccount)
             self.sectionDatasource = CCSectionMetadata.creataDataSourseSectionMetadata(metadatas, listProgressMetadata: nil, groupByField: "date", filterFileID: nil, filterTypeFileImage: self.filterTypeFileImage, filterTypeFileVideo: self.filterTypeFileVideo, sorted: "date", ascending: false, activeAccount: self.appDelegate.activeAccount)
             
             
             DispatchQueue.main.async {
             DispatchQueue.main.async {