From 295bca326a5c3bdd740322dba58563a242e922bd Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Sat, 31 Oct 2020 12:52:15 -0500 Subject: [PATCH] Combine all account sync changes into a single batch update to prevent the sidebar from jumping around --- .../ReaderAPI/ReaderAPIAccountDelegate.swift | 34 ++++++++----------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/Account/Sources/Account/ReaderAPI/ReaderAPIAccountDelegate.swift b/Account/Sources/Account/ReaderAPI/ReaderAPIAccountDelegate.swift index 877d3ef7e..a53ec2d78 100644 --- a/Account/Sources/Account/ReaderAPI/ReaderAPIAccountDelegate.swift +++ b/Account/Sources/Account/ReaderAPI/ReaderAPIAccountDelegate.swift @@ -561,11 +561,21 @@ private extension ReaderAPIAccountDelegate { caller.retrieveTags { result in switch result { case .success(let tags): - BatchUpdate.shared.perform { - self.syncFolders(account, tags) - } self.refreshProgress.completeTask() - self.refreshFeeds(account, completion: completion) + self.caller.retrieveSubscriptions { result in + self.refreshProgress.completeTask() + switch result { + case .success(let subscriptions): + BatchUpdate.shared.perform { + self.syncFolders(account, tags) + self.syncFeeds(account, subscriptions) + self.syncFeedFolderRelationship(account, subscriptions) + } + completion(.success(())) + case .failure(let error): + completion(.failure(error)) + } + } case .failure(let error): completion(.failure(error)) } @@ -614,22 +624,6 @@ private extension ReaderAPIAccountDelegate { } - func refreshFeeds(_ account: Account, completion: @escaping (Result) -> Void) { - caller.retrieveSubscriptions { result in - switch result { - case .success(let subscriptions): - self.refreshProgress.completeTask() - BatchUpdate.shared.perform { - self.syncFeeds(account, subscriptions) - self.syncFeedFolderRelationship(account, subscriptions) - } - completion(.success(())) - case .failure(let error): - completion(.failure(error)) - } - } - } - func syncFeeds(_ account: Account, _ subscriptions: [ReaderAPISubscription]?) { guard let subscriptions = subscriptions else { return }