From 817e144ff697b4c6760c0101a6995d7030eb48a0 Mon Sep 17 00:00:00 2001 From: stevenyomi <95685115+stevenyomi@users.noreply.github.com> Date: Sun, 18 Dec 2022 02:21:12 +0800 Subject: [PATCH] BrowseSourceScreen: fix navigate up and filter sheet (#8761) --- .../browse/source/browse/BrowseSourceScreen.kt | 9 ++++++++- .../source/browse/BrowseSourceScreenModel.kt | 17 ++++++----------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreen.kt index 990da2398a..b322e2ee77 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreen.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreen.kt @@ -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) }, diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt index 5fddb309b5..d56f7ec0ab 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt @@ -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() } }