From 0212c31d66f5d0fd52be3a5f5574f998a7d58c9c Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Thu, 16 Feb 2023 21:06:47 -0800 Subject: [PATCH] move showSearchFiled state to view model --- .../omnivore/ui/library/LibraryView.kt | 4 ++-- .../omnivore/ui/library/LibraryViewModel.kt | 20 ++++++++++--------- .../omnivore/omnivore/ui/library/SearchBar.kt | 9 ++++----- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryView.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryView.kt index 611e4a9be..05d02e9fa 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryView.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryView.kt @@ -81,12 +81,12 @@ fun LibraryViewContent(libraryViewModel: LibraryViewModel, modifier: Modifier) { .fillMaxSize() .padding(horizontal = 6.dp) ) { - if (searchText.isEmpty()) { + if (!libraryViewModel.showSearchField) { item { LibraryFilterBar(libraryViewModel) } } - items(if (searchText.isNotEmpty()) searchedCardsData else cardsData) { cardDataWithLabels -> + items(if (libraryViewModel.showSearchField) searchedCardsData else cardsData) { cardDataWithLabels -> SavedItemCard( cardData = cardDataWithLabels.cardData, onClickHandler = { diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryViewModel.kt index 7fb7767e3..9c16abf9b 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryViewModel.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryViewModel.kt @@ -40,6 +40,7 @@ class LibraryViewModel @Inject constructor( val appliedSortFilterLiveData = MutableLiveData(SavedItemSortFilter.NEWEST) var isRefreshing by mutableStateOf(false) + var showSearchField by mutableStateOf(false) var hasLoadedInitialFilters = false fun loadInitialFilterValues() { @@ -220,15 +221,16 @@ class LibraryViewModel @Inject constructor( } private fun searchQueryString(): String { - var query = "${appliedFilterLiveData.value?.queryString} ${appliedSortFilterLiveData.value?.queryString}" - val searchText = searchTextLiveData.value ?: "" - - if (searchText.isNotEmpty()) { - query += " $searchText" - } - - Log.d("sefi", "search query: $query") - return query + return searchTextLiveData.value ?: "" + // Unused code for typeahead search +// var query = "${appliedFilterLiveData.value?.queryString} ${appliedSortFilterLiveData.value?.queryString}" +// val searchText = searchTextLiveData.value ?: "" +// +// if (searchText.isNotEmpty()) { +// query += " $searchText" +// } +// +// return query } } diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/SearchBar.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/SearchBar.kt index c1bc57966..40bf1a5f6 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/SearchBar.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/SearchBar.kt @@ -31,12 +31,11 @@ fun SearchBar( libraryViewModel: LibraryViewModel, onSettingsIconClick: () -> Unit ) { - var showSearchField by remember { mutableStateOf(false) } val searchText: String by libraryViewModel.searchTextLiveData.observeAsState("") SmallTopAppBar( title = { - if (showSearchField) { + if (libraryViewModel.showSearchField) { SearchField(searchText) { libraryViewModel.updateSearchText(it) } } else { Text("Library") @@ -46,18 +45,18 @@ fun SearchBar( containerColor = MaterialTheme.colorScheme.surfaceVariant ), actions = { - if (showSearchField) { + if (libraryViewModel.showSearchField) { Text( text = "Cancel", modifier = Modifier .clickable { libraryViewModel.updateSearchText("") - showSearchField = false + libraryViewModel.showSearchField = false } .padding(horizontal = 6.dp) ) } else { - IconButton(onClick = { showSearchField = true }) { + IconButton(onClick = { libraryViewModel.showSearchField = true }) { Icon( imageVector = Icons.Filled.Search, contentDescription = null