BrowseSourceScreen: fix navigate up and filter sheet (#8761)

This commit is contained in:
stevenyomi 2022-12-18 02:21:12 +08:00 committed by GitHub
parent 9d2d78ae5b
commit 817e144ff6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 12 deletions

View file

@ -84,6 +84,13 @@ data class BrowseSourceScreen(
val snackbarHostState = remember { SnackbarHostState() }
val navigateUp: () -> Unit = {
when {
!state.isUserQuery && state.toolbarQuery != null -> screenModel.setToolbarQuery(null)
else -> navigator.pop()
}
}
val onHelpClick = { uriHandler.openUri(LocalSource.HELP_URL) }
val onWebViewClick = f@{
@ -105,7 +112,7 @@ data class BrowseSourceScreen(
source = screenModel.source,
displayMode = screenModel.displayMode,
onDisplayModeChange = { screenModel.displayMode = it },
navigateUp = navigator::pop,
navigateUp = navigateUp,
onWebViewClick = onWebViewClick,
onHelpClick = onHelpClick,
onSearch = { screenModel.search(it) },

View file

@ -359,21 +359,20 @@ class BrowseSourceScreenModel(
}
fun initFilterSheet(context: Context) {
val state = state.value
if (state.filters.isEmpty()) {
if (state.value.filters.isEmpty()) {
return
}
filterSheet = SourceFilterSheet(
context = context,
onFilterClicked = { search(filters = state.filters) },
onFilterClicked = { search(filters = state.value.filters) },
onResetClicked = {
reset()
filterSheet?.setFilters(state.filterItems)
filterSheet?.setFilters(state.value.filterItems)
},
)
filterSheet?.setFilters(state.filterItems)
filterSheet?.setFilters(state.value.filterItems)
}
sealed class Filter(open val query: String?, open val filters: FilterList) {
@ -409,12 +408,8 @@ class BrowseSourceScreenModel(
val toolbarQuery: String? = null,
val dialog: Dialog? = null,
) {
val filterItems = filters.toItems()
val isUserQuery = currentFilter is Filter.UserInput && !currentFilter.query.isNullOrEmpty()
val searchQuery = when (currentFilter) {
is Filter.UserInput -> currentFilter.query
Filter.Latest, Filter.Popular -> null
}
val filterItems get() = filters.toItems()
val isUserQuery get() = currentFilter is Filter.UserInput && !currentFilter.query.isNullOrEmpty()
}
}