diff --git a/Mastodon/Scene/Search/SearchViewController.swift b/Mastodon/Scene/Search/SearchViewController.swift index 3731f118..10dd4611 100644 --- a/Mastodon/Scene/Search/SearchViewController.swift +++ b/Mastodon/Scene/Search/SearchViewController.swift @@ -151,6 +151,12 @@ extension SearchViewController { view.bringSubviewToFront(statusBar) } + override func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + + viewModel.viewDidAppeared.send() + } + func setupSearchBar() { searchBar.delegate = self view.addSubview(searchBar) diff --git a/Mastodon/Scene/Search/SearchViewModel.swift b/Mastodon/Scene/Search/SearchViewModel.swift index e10b04c9..48bd87b8 100644 --- a/Mastodon/Scene/Search/SearchViewModel.swift +++ b/Mastodon/Scene/Search/SearchViewModel.swift @@ -23,6 +23,7 @@ final class SearchViewModel: NSObject { let mastodonUser = CurrentValueSubject(nil) let currentMastodonUser = CurrentValueSubject(nil) + let viewDidAppeared = PassthroughSubject() // output let searchText = CurrentValueSubject("") @@ -145,9 +146,10 @@ final class SearchViewModel: NSObject { dataSource.apply(snapshot, animatingDifferences: false, completion: nil) } .store(in: &disposeBag) - - requestRecommendHashTags() - .receive(on: DispatchQueue.main) + + viewDidAppeared + .compactMap { _ in self.requestRecommendHashTags() } + .receive(on: RunLoop.main) .sink { [weak self] _ in guard let self = self else { return } if !self.recommendHashTags.isEmpty { @@ -160,8 +162,9 @@ final class SearchViewModel: NSObject { } receiveValue: { _ in } .store(in: &disposeBag) - - requestRecommendAccountsV2() + viewDidAppeared + .compactMap { _ in self.requestRecommendAccountsV2() } + .receive(on: RunLoop.main) .sink { [weak self] _ in guard let self = self else { return } if !self.recommendAccounts.isEmpty { @@ -172,6 +175,7 @@ final class SearchViewModel: NSObject { .store(in: &disposeBag) recommendAccountsFallback + .receive(on: RunLoop.main) .sink { [weak self] _ in guard let self = self else { return } self.requestRecommendAccounts()