diff --git a/Mastodon/Scene/Search/SearchResult/SearchResultViewController.swift b/Mastodon/Scene/Search/SearchResult/SearchResultViewController.swift index 6c87b4251..508390b70 100644 --- a/Mastodon/Scene/Search/SearchResult/SearchResultViewController.swift +++ b/Mastodon/Scene/Search/SearchResult/SearchResultViewController.swift @@ -64,11 +64,12 @@ extension SearchResultViewController { KeyboardResponderService.shared.state, KeyboardResponderService.shared.endFrame ) - Publishers.CombineLatest( + Publishers.CombineLatest3( keyboardEventPublishers, - viewModel.viewDidAppear + viewModel.viewDidAppear, + viewModel.didDataSourceUpdate ) - .sink(receiveValue: { [weak self] keyboardEvents, _ in + .sink(receiveValue: { [weak self] keyboardEvents, _, _ in guard let self = self else { return } let (isShow, state, endFrame) = keyboardEvents diff --git a/Mastodon/Scene/Search/SearchResult/SearchResultViewModel.swift b/Mastodon/Scene/Search/SearchResult/SearchResultViewModel.swift index 5d27961dd..1d6c76e08 100644 --- a/Mastodon/Scene/Search/SearchResult/SearchResultViewModel.swift +++ b/Mastodon/Scene/Search/SearchResult/SearchResultViewModel.swift @@ -36,6 +36,7 @@ final class SearchResultViewModel { }() let items = CurrentValueSubject<[SearchResultItem], Never>([]) var diffableDataSource: UITableViewDiffableDataSource! + let didDataSourceUpdate = PassthroughSubject() init(context: AppContext, searchScope: SearchDetailViewModel.SearchScope) { self.context = context @@ -93,7 +94,10 @@ final class SearchResultViewModel { } diffableDataSource.defaultRowAnimation = .fade - diffableDataSource.apply(snapshot, animatingDifferences: true) + diffableDataSource.apply(snapshot, animatingDifferences: true) { [weak self] in + guard let self = self else { return } + self.didDataSourceUpdate.send() + } } .store(in: &disposeBag)