Эх сурвалжийг харах

Stop loading new activities when all are loaded

Signed-off-by: Henrik Storch <henrik.storch@nextcloud.com>
Henrik Storch 3 жил өмнө
parent
commit
29cea8455e

+ 19 - 9
iOSClient/Activity/NCActivity.swift

@@ -49,10 +49,11 @@ class NCActivity: UIViewController {
     var insets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
     var didSelectItemEnable: Bool = true
     var objectType: String?
-    
-    var canFetchActivity = true
+
+    var isFetchingActivity = false
+    var hasActivityToLoad = true
     var dateAutomaticFetch : Date?
-    
+
     // MARK: - View Life Cycle
 
     override func viewDidLoad() {
@@ -360,14 +361,15 @@ extension NCActivity: UIScrollViewDelegate {
 extension NCActivity {
 
     func fetchAll(isInitial: Bool) {
-        guard canFetchActivity else { return }
-        self.canFetchActivity = false
+        guard !isFetchingActivity else { return }
+        self.isFetchingActivity = true
 
         let height = self.tabBarController?.tabBar.frame.size.height ?? 0
         NCUtility.shared.startActivityIndicator(backgroundView: self.view, blurEffect: false, bottom: height + 50, style: .gray)
 
         let dispatchGroup = DispatchGroup()
         loadComments(disptachGroup: dispatchGroup)
+
         if !isInitial, let activity = allItems.compactMap({ $0 as? tableActivity }).last {
             loadActivity(idActivity: activity.idActivity, disptachGroup: dispatchGroup)
         } else {
@@ -380,7 +382,7 @@ extension NCActivity {
 
             // otherwise is triggered again
             DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
-                self.canFetchActivity = true
+                self.isFetchingActivity = false
             }
         }
     }
@@ -429,7 +431,7 @@ extension NCActivity {
     func checkRecentActivity(disptachGroup: DispatchGroup) {
         let recentActivityId = NCManageDatabase.shared.getLatestActivityId(account: appDelegate.account)
 
-        guard recentActivityId > 0, metadata == nil else {
+        guard recentActivityId > 0, metadata == nil, hasActivityToLoad else {
             return self.loadActivity(idActivity: 0, disptachGroup: disptachGroup)
         }
 
@@ -447,13 +449,18 @@ extension NCActivity {
                       account == self.appDelegate.account,
                       let activity = activities.first,
                       activity.idActivity > recentActivityId
-                else { return }
+                else {
+                    self.hasActivityToLoad = errorCode == 304 ? false : self.hasActivityToLoad
+                    return
+                }
 
                 self.loadActivity(idActivity: 0, limit: activity.idActivity - recentActivityId, disptachGroup: disptachGroup)
             }
     }
 
     func loadActivity(idActivity: Int, limit: Int = 200, disptachGroup: DispatchGroup) {
+        guard hasActivityToLoad else { return }
+
         disptachGroup.enter()
 
         NCCommunication.shared.getActivity(
@@ -466,7 +473,10 @@ extension NCActivity {
                 guard errorCode == 0,
                       account == self.appDelegate.account,
                       !activities.isEmpty
-                else { return }
+                else {
+                    self.hasActivityToLoad = errorCode == 304 ? false : self.hasActivityToLoad
+                    return
+                }
                 NCManageDatabase.shared.addActivity(activities, account: account)
 
                 // update most recently loaded activity only when all activities are loaded (not filtered)