Save search query on the search result page

This commit is contained in:
Kgothatso Ngako
2026-04-02 00:30:53 +02:00
parent 36facaf6a7
commit 6ea09b8a7a
4 changed files with 11 additions and 23 deletions

View File

@@ -70,6 +70,7 @@ fun SearchResultScreen(
val searchViewModel: SearchResultViewModel = viewModel(
factory = SearchResultViewModel.factory(
initialSearchResultType = SearchResultType.Posts,
searchQuery = searchQuery,
nostrRepository = nostrRepository,
searchRepository = searchRepository
),
@@ -129,9 +130,7 @@ fun SearchResultScreen(
query = textFieldState.text.toString(),
onQueryChange = { textFieldState.edit { replace(0, length, it) } },
onSearch = {
searchViewModel.performSearch(
textFieldState.text.toString()
)
// Since search bar is disabled we don't need to do anything...
},
enabled = false,
expanded = expanded,

View File

@@ -151,10 +151,6 @@ fun SearchScreen(
query = textFieldState.text.toString(),
onQueryChange = { textFieldState.edit { replace(0, length, it) } },
onSearch = {
searchViewModel.performSearch(
textFieldState.text.toString()
)
if (textFieldState.text.isBlank()) {
expanded = false
}

View File

@@ -30,6 +30,7 @@ enum class SearchResultType {
class SearchResultViewModel(
initialSearchResultType: SearchResultType,
val searchQuery: String,
val nostrRepository: NostrRepository,
val searchRepository: SearchRepository,
): ViewModel() {
@@ -53,17 +54,18 @@ class SearchResultViewModel(
fun loadSearchResult() {
viewModelScope.launch(Dispatchers.IO) {
nostrRepository.saveSearchQuery(
searchQuery,
// TODO: synchronizationFilterArray
)
// This is something not taking into consideration the results we are actually looking for...
nostrRepository.observeNostrFeed().collect { localNostrEvents ->
searchResultListUIState = SearchResultListUIState.Loaded(
localNostrEvents = localNostrEvents
)
}
}
}
fun performSearch(searchQuery: String) {
viewModelScope.launch(Dispatchers.IO) {
// Sync Notifications... might want to also run this in the background
searchRepository.submitSearch(
Relays.eventPublishRelaySet.map { normalizedRelay ->
@@ -77,7 +79,7 @@ class SearchResultViewModel(
ReactionEvent.KIND,
LnZapEvent.KIND,
),
search = "shoes",
search = searchQuery,
limit = 50
)
),
@@ -88,18 +90,19 @@ class SearchResultViewModel(
}
}
companion object {
const val TAG = "SearchViewModel"
fun factory(
initialSearchResultType: SearchResultType = SearchResultType.Posts,
searchQuery: String,
nostrRepository: NostrRepository,
searchRepository: SearchRepository,
): ViewModelProvider.Factory = viewModelFactory {
initializer {
SearchResultViewModel(
initialSearchResultType = initialSearchResultType,
searchQuery = searchQuery,
nostrRepository = nostrRepository,
searchRepository = searchRepository
)

View File

@@ -47,16 +47,6 @@ class SearchViewModel(
loadRecentSearches()
}
fun performSearch(searchQuery: String) {
viewModelScope.launch(Dispatchers.IO) {
nostrRepository.saveSearchQuery(
searchQuery,
// TODO: synchronizationFilterArray
)
// TODO: Run search on local db for suggestions...
}
}
fun loadSearchableProfiles() {
viewModelScope.launch(Dispatchers.IO) {
searchableProfiles.addAll(