compose: search: Show error when no apps are available

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2025-08-30 20:52:53 +08:00
parent 10b9e5a182
commit 22c6c81b8f

View File

@@ -107,6 +107,7 @@ private fun ScreenContent(
val textFieldState = rememberTextFieldState() val textFieldState = rememberTextFieldState()
val searchBarState = rememberSearchBarState() val searchBarState = rememberSearchBarState()
val scrollBehavior = SearchBarDefaults.enterAlwaysSearchBarScrollBehavior() val scrollBehavior = SearchBarDefaults.enterAlwaysSearchBarScrollBehavior()
var isSearching by rememberSaveable { mutableStateOf(false) }
val focusRequester = remember { FocusRequester() } val focusRequester = remember { FocusRequester() }
val scaffoldNavigator = rememberListDetailPaneScaffoldNavigator<String>() val scaffoldNavigator = rememberListDetailPaneScaffoldNavigator<String>()
@@ -132,6 +133,7 @@ private fun ScreenContent(
textFieldState.setTextAndPlaceCursorAtEnd(query.trim()) textFieldState.setTextAndPlaceCursorAtEnd(query.trim())
coroutineScope.launch { searchBarState.animateToCollapsed() } coroutineScope.launch { searchBarState.animateToCollapsed() }
onSearch(textFieldState.text.toString()) onSearch(textFieldState.text.toString())
isSearching = true
} }
@Composable @Composable
@@ -199,7 +201,7 @@ private fun ScreenContent(
.padding(vertical = dimensionResource(R.dimen.padding_medium)) .padding(vertical = dimensionResource(R.dimen.padding_medium))
) { ) {
FilterHeader( FilterHeader(
isEnabled = results.itemCount > 0, isEnabled = isSearching && results.loadState.refresh is LoadState.NotLoading,
isAnonymous = isAnonymous, isAnonymous = isAnonymous,
onFilter = onFilter onFilter = onFilter
) )
@@ -216,16 +218,24 @@ private fun ScreenContent(
} }
else -> { else -> {
LazyColumn { if (isSearching && results.itemCount == 0) {
items( ErrorComposable(
count = results.itemCount, modifier = Modifier.padding(paddingValues),
key = results.itemKey { it.id } icon = R.drawable.ic_disclaimer,
) { index -> message = R.string.no_apps_available
results[index]?.let { app -> )
AppListComposable( } else {
app = app, LazyColumn {
onClick = { showDetailPane(app.packageName) } items(
) count = results.itemCount,
key = results.itemKey { it.id }
) { index ->
results[index]?.let { app ->
AppListComposable(
app = app,
onClick = { showDetailPane(app.packageName) }
)
}
} }
} }
} }