Don't fire a new search if only the cursor position in the search bar has changed

This commit is contained in:
MM20 2021-09-28 18:10:57 +02:00
parent 5b35317412
commit c2887f4b0a
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389

View File

@ -45,12 +45,12 @@ fun SearchBar(
offScreen: Float, offScreen: Float,
onFocus: () -> Unit = {} onFocus: () -> Unit = {}
) { ) {
var searchQuery by remember { mutableStateOf(TextFieldValue()) } var searchQuery by remember { mutableStateOf("") }
val viewModel: SearchViewModel = viewModel() val viewModel: SearchViewModel = viewModel()
LaunchedEffect(searchQuery) { LaunchedEffect(searchQuery) {
viewModel.search(searchQuery.text) viewModel.search(searchQuery)
} }
val pageTransition = (pagerState.currentPage + pagerState.currentPageOffset).coerceIn(0f, 1f) val pageTransition = (pagerState.currentPage + pagerState.currentPageOffset).coerceIn(0f, 1f)
@ -101,7 +101,7 @@ fun SearchBar(
if (it.isFocused) onFocus() if (it.isFocused) onFocus()
} }
) )
if (searchQuery.text.isEmpty()) { if (searchQuery.isEmpty()) {
BasicText( BasicText(
text = stringResource(id = R.string.edit_text_search_hint), text = stringResource(id = R.string.edit_text_search_hint),
style = textStyle, style = textStyle,
@ -113,8 +113,8 @@ fun SearchBar(
Box { Box {
IconButton( IconButton(
onClick = { onClick = {
if (searchQuery.text.isNotEmpty()) { if (searchQuery.isNotEmpty()) {
searchQuery = TextFieldValue() searchQuery = ""
} else { } else {
showOverflowMenu = true showOverflowMenu = true
} }
@ -123,7 +123,7 @@ fun SearchBar(
) { ) {
val menuClearIcon = animatedVectorResource(R.drawable.anim_ic_menu_clear) val menuClearIcon = animatedVectorResource(R.drawable.anim_ic_menu_clear)
Icon( Icon(
painter = menuClearIcon.painterFor(atEnd = searchQuery.text.isNotEmpty()), painter = menuClearIcon.painterFor(atEnd = searchQuery.isNotEmpty()),
null null
) )
} }