[WIP] Trigger search after tapping search once (#663)
This doesn't _feel_ good from a UX-perspective
This commit is contained in:
parent
a25f48bbf7
commit
26f6499bbc
|
@ -188,12 +188,13 @@ extension SearchDetailViewController {
|
|||
.removeDuplicates()
|
||||
.throttle(for: 0.5, scheduler: DispatchQueue.main, latest: true)
|
||||
.sink { [weak self] searchText in
|
||||
guard let self = self else { return }
|
||||
guard let searchResultViewController = self.currentViewController as? SearchResultViewController else {
|
||||
guard let self = self,
|
||||
let searchResultViewController = self.currentViewController as? SearchResultViewController
|
||||
/* searchText.length >= 3 */ else {
|
||||
return
|
||||
}
|
||||
self.logger.debug("\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): trigger search \(searchText)")
|
||||
searchResultViewController.viewModel.stateMachine.enter(SearchResultViewModel.State.Loading.self)
|
||||
|
||||
searchResultViewController.viewModel.stateMachine.enter(SearchResultViewModel.State.Loading.self)
|
||||
}
|
||||
.store(in: &disposeBag)
|
||||
|
||||
|
@ -314,7 +315,6 @@ extension SearchDetailViewController: UISearchBarDelegate {
|
|||
}
|
||||
|
||||
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
|
||||
logger.debug("\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)")
|
||||
|
||||
// dismiss or pop
|
||||
if isModal {
|
||||
|
@ -324,6 +324,14 @@ extension SearchDetailViewController: UISearchBarDelegate {
|
|||
}
|
||||
}
|
||||
|
||||
func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
|
||||
guard let searchResultViewController = self.currentViewController as? SearchResultViewController else {
|
||||
return
|
||||
}
|
||||
|
||||
searchResultViewController.viewModel.forceSearch = true
|
||||
searchResultViewController.viewModel.stateMachine.enter(SearchResultViewModel.State.Loading.self)
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - PageboyViewControllerDataSource
|
||||
|
|
|
@ -80,11 +80,13 @@ extension SearchResultViewModel.State {
|
|||
return
|
||||
}
|
||||
|
||||
guard searchText.length > 3 else {
|
||||
stateMachine.enter(Fail.self)
|
||||
guard (viewModel.forceSearch || searchText.length > 3) else {
|
||||
stateMachine.enter(NoMore.self)
|
||||
return
|
||||
}
|
||||
|
||||
viewModel.forceSearch = false
|
||||
|
||||
if searchText != previousSearchText {
|
||||
previousSearchText = searchText
|
||||
offset = nil
|
||||
|
@ -104,14 +106,8 @@ extension SearchResultViewModel.State {
|
|||
let query = Mastodon.API.V2.Search.Query(
|
||||
q: searchText,
|
||||
type: searchType,
|
||||
accountID: nil,
|
||||
maxID: nil,
|
||||
minID: nil,
|
||||
excludeUnreviewed: nil,
|
||||
resolve: true,
|
||||
limit: nil,
|
||||
offset: _offset,
|
||||
following: nil
|
||||
offset: _offset
|
||||
)
|
||||
|
||||
let id = UUID()
|
||||
|
|
|
@ -23,6 +23,7 @@ final class SearchResultViewModel {
|
|||
let authContext: AuthContext
|
||||
let searchScope: SearchDetailViewModel.SearchScope
|
||||
let searchText = CurrentValueSubject<String, Never>("")
|
||||
var forceSearch: Bool = false
|
||||
@Published var hashtags: [Mastodon.Entity.Tag] = []
|
||||
let userFetchedResultsController: UserFetchedResultsController
|
||||
let statusFetchedResultsController: StatusFetchedResultsController
|
||||
|
|
Loading…
Reference in New Issue