diff --git a/iOS/SceneCoordinator.swift b/iOS/SceneCoordinator.swift index 254e63ba9..5df9e65ab 100644 --- a/iOS/SceneCoordinator.swift +++ b/iOS/SceneCoordinator.swift @@ -61,6 +61,7 @@ class SceneCoordinator: NSObject, UndoableCommandRunner, UnreadCountProvider { private var wasRootSplitViewControllerCollapsed = false private let fetchAndMergeArticlesQueue = CoalescingQueue(name: "Fetch and Merge Articles", interval: 0.5) + private let rebuildBackingStoresWithMergeQueue = CoalescingQueue(name: "Rebuild The Backing Stores by Merging", interval: 0.5) private var fetchSerialNumber = 0 private let fetchRequestQueue = FetchRequestQueue() @@ -445,9 +446,7 @@ class SceneCoordinator: NSObject, UndoableCommandRunner, UnreadCountProvider { return } - addShadowTableToFilterExceptions() - rebuildBackingStores() - treeControllerDelegate.resetFilterExceptions() + rebuildBackingStoresWithMergeQueue.add(self, #selector(rebuildBackingStoresWithMerge)) } @objc func statusesDidChange(_ note: Notification) { @@ -569,6 +568,7 @@ class SceneCoordinator: NSObject, UndoableCommandRunner, UnreadCountProvider { func suspend() { fetchAndMergeArticlesQueue.performCallsImmediately() + rebuildBackingStoresWithMergeQueue.performCallsImmediately() fetchRequestQueue.cancelAllRequests() } @@ -1362,6 +1362,12 @@ private extension SceneCoordinator { } } + @objc func rebuildBackingStoresWithMerge() { + addShadowTableToFilterExceptions() + rebuildBackingStores() + treeControllerDelegate.resetFilterExceptions() + } + func rebuildShadowTable() { shadowTable = [[Node]]()