marinofaggiana 6 жил өмнө
parent
commit
680f1d72fc

+ 6 - 1
iOSClient/Database/NCManageDatabase.swift

@@ -1973,15 +1973,18 @@ class NCManageDatabase: NSObject {
         }
     }
     
-    @objc func createTablePhotos(_ metadatas: [tableMetadata], lteDate: Date, gteDate: Date,account: String) {
+    @objc func createTablePhotos(_ metadatas: [tableMetadata], lteDate: Date, gteDate: Date,account: String) -> Int {
 
         let realm = try! Realm()
         realm.refresh()
         
+        var differentInsert: Int = 0
+        
         do {
             try realm.write {
                 // DELETE ALL
                 let results = realm.objects(tablePhotos.self).filter("account = %@ AND date >= %@ AND date <= %@", account, gteDate, lteDate)
+                differentInsert = metadatas.count - results.count
                 realm.delete(results)
                 // INSERT ALL
                 let photos = Array(metadatas.map { tablePhotos.init(value:$0) })
@@ -1991,6 +1994,8 @@ class NCManageDatabase: NSObject {
             print("[LOG] Could not write to database: ", error)
             realm.cancelWrite()
         }
+        
+        return differentInsert
     }
     
     @objc func getTablePhotoLastDate(account: String) -> NSDate? {

+ 12 - 8
iOSClient/Media/NCMedia.swift

@@ -314,7 +314,7 @@ class NCMedia: UIViewController ,UICollectionViewDataSource, UICollectionViewDel
         actionSheet?.present(in: self, from: sender as! UIButton)
     }
     
-    func search(lteDate: Date, gteDate: Date, reiteration: Bool, activityIndicator: Bool) {
+    func search(lteDate: Date, gteDate: Date, reiteration: Bool, activityIndicator: Bool, prefetching: Bool) {
         
         if appDelegate.activeAccount.count == 0 {
             return
@@ -336,13 +336,17 @@ class NCMedia: UIViewController ,UICollectionViewDataSource, UICollectionViewDel
             if errorCode == 0 && account == self.appDelegate.activeAccount {
                
                 if metadatas != nil && metadatas!.count > 0 {
-                    NCManageDatabase.sharedInstance.createTablePhotos(metadatas as! [tableMetadata], lteDate: lteDate, gteDate: gteDate, account: account!)
+                    self.readRetry = 0
+                    let insertCount = NCManageDatabase.sharedInstance.createTablePhotos(metadatas as! [tableMetadata], lteDate: lteDate, gteDate: gteDate, account: account!)
                     self.loadDatasource()
                 } else if reiteration {
+                    self.readRetry += 1
                     var newGteDate = Calendar.current.date(byAdding: .day, value: self.stepDays, to: gteDate)!
                     newGteDate = Calendar.current.date(bySettingHour: 0, minute: 0, second: 0, of: newGteDate) ?? newGteDate
-                    self.readRetry += 1
-                    self.search(lteDate: lteDate, gteDate: newGteDate, reiteration: reiteration, activityIndicator: activityIndicator)
+                    if self.readRetry == 3 {
+                        newGteDate = NSDate.distantPast
+                    }
+                    self.search(lteDate: lteDate, gteDate: newGteDate, reiteration: reiteration, activityIndicator: activityIndicator, prefetching: prefetching)
                 }
             }
             
@@ -368,7 +372,7 @@ class NCMedia: UIViewController ,UICollectionViewDataSource, UICollectionViewDel
                 self.sectionDatasource = CCSectionDataSourceMetadata()
                 var gteDate = Calendar.current.date(byAdding: .day, value: self.stepDays, to: Date())!
                 gteDate = Calendar.current.date(bySettingHour: 0, minute: 0, second: 0, of: gteDate) ?? gteDate
-                self.search(lteDate: Date(), gteDate: gteDate, reiteration: true, activityIndicator: true)
+                self.search(lteDate: Date(), gteDate: gteDate, reiteration: true, activityIndicator: true, prefetching: false)
             }
         
             DispatchQueue.main.async {
@@ -517,7 +521,7 @@ class NCMedia: UIViewController ,UICollectionViewDataSource, UICollectionViewDel
         if let lastDate = NCManageDatabase.sharedInstance.getTablePhotoLastDate(account: appDelegate.activeAccount) as Date? {
             if lastDate > dateSection {
                 let gteDate = Calendar.current.date(byAdding: .day, value: self.stepDays, to: lastDate)!
-                search(lteDate: lastDate, gteDate: gteDate, reiteration: true, activityIndicator: true)
+                search(lteDate: lastDate, gteDate: gteDate, reiteration: true, activityIndicator: true, prefetching: true)
             }
         }
     }
@@ -537,11 +541,11 @@ class NCMedia: UIViewController ,UICollectionViewDataSource, UICollectionViewDel
         if sortedSections.count == 1 {
             let lteDate = Calendar.current.date(byAdding: .day, value: 1, to: sortedSections.first as! Date)!
             let gteDate = sortedSections.first as! Date
-            search(lteDate: lteDate, gteDate: gteDate, reiteration: false, activityIndicator: false)
+            search(lteDate: lteDate, gteDate: gteDate, reiteration: false, activityIndicator: false, prefetching: false)
         } else if sortedSections.count > 1 {
             let lteDate = Calendar.current.date(byAdding: .day, value: 1, to: sortedSections.first as! Date)!
             let gteDate = Calendar.current.date(byAdding: .day, value: -1, to: sortedSections.last as! Date)!
-            search(lteDate: lteDate, gteDate: gteDate, reiteration: false, activityIndicator: false)
+            search(lteDate: lteDate, gteDate: gteDate, reiteration: false, activityIndicator: false, prefetching: false)
         }
     }