From 106a5cc71a0e6f00cea042613c34ce144dc946a8 Mon Sep 17 00:00:00 2001 From: sunxiaojian Date: Wed, 21 Apr 2021 18:52:09 +0800 Subject: [PATCH] fix: homeTimeline refresh after follow people --- .../Scene/HomeTimeline/HomeTimelineViewController.swift | 5 +++++ Mastodon/Scene/HomeTimeline/HomeTimelineViewModel.swift | 6 ++++++ .../SuggestionAccount/SuggestionAccountViewModel.swift | 6 +++++- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift index 74a6ae004..2734b33e1 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift @@ -200,6 +200,10 @@ extension HomeTimelineViewController { // needs trigger manually after onboarding dismiss setNeedsStatusBarAppearanceUpdate() + + if (viewModel.fetchedResultsController.fetchedObjects ?? []).isEmpty { + viewModel.loadLatestStateMachine.enter(HomeTimelineViewModel.LoadLatestState.Loading.self) + } } override func viewDidAppear(_ animated: Bool) { @@ -280,6 +284,7 @@ extension HomeTimelineViewController { @objc private func findPeopleButtonPressed(_ sender: PrimaryActionButton) { let viewModel = SuggestionAccountViewModel(context: context) + viewModel.delegate = self.viewModel coordinator.present(scene: .suggestionAccount(viewModel: viewModel), from: self, transition: .modal(animated: true, completion: nil)) } diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel.swift index 1c0ddf71b..c154b0508 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel.swift @@ -129,3 +129,9 @@ final class HomeTimelineViewModel: NSObject { } } + +extension HomeTimelineViewModel: SuggestionAccountViewModelDelegate { + func homeTimelineNeedRefresh() { + loadLatestStateMachine.enter(LoadLatestState.Loading.self) + } +} diff --git a/Mastodon/Scene/SuggestionAccount/SuggestionAccountViewModel.swift b/Mastodon/Scene/SuggestionAccount/SuggestionAccountViewModel.swift index 33313bade..ec52120dc 100644 --- a/Mastodon/Scene/SuggestionAccount/SuggestionAccountViewModel.swift +++ b/Mastodon/Scene/SuggestionAccount/SuggestionAccountViewModel.swift @@ -13,12 +13,16 @@ import MastodonSDK import os.log import UIKit +protocol SuggestionAccountViewModelDelegate: AnyObject { + func homeTimelineNeedRefresh() +} final class SuggestionAccountViewModel: NSObject { var disposeBag = Set() // input let context: AppContext + weak var delegate: SuggestionAccountViewModelDelegate? // output let accounts = CurrentValueSubject<[NSManagedObjectID], Never>([]) var selectedAccounts = [NSManagedObjectID]() @@ -137,7 +141,7 @@ final class SuggestionAccountViewModel: NSObject { case .failure(let error): os_log("%{public}s[%{public}ld], %{public}s: follow failed. %s", (#file as NSString).lastPathComponent, #line, #function, error.localizedDescription) case .finished: - // handle isFetchingLatestTimeline in fetch controller delegate + self.delegate?.homeTimelineNeedRefresh() break } } receiveValue: { _ in