refactor(navigation): Add navigateUp functionality to SourceFeedScreen and SourceFeedToolbar

directly navigate back instead of just close search bar
This commit is contained in:
Cuong-Tran 2024-07-01 23:20:42 +07:00 committed by Tran M. Cuong
parent c92fdb5231
commit c49c4c9c6d
2 changed files with 11 additions and 8 deletions

View file

@ -110,6 +110,7 @@ fun SourceFeedScreen(
onSearchQueryChange: (String?) -> Unit,
getMangaState: @Composable (Manga) -> State<Manga>,
// KMK -->
navigateUp: () -> Unit,
onWebViewClick: () -> Unit,
sourceId: Long,
onLongClickManga: (Manga) -> Unit,
@ -147,6 +148,7 @@ fun SourceFeedScreen(
scrollBehavior = scrollBehavior,
onClickSearch = onClickSearch,
// KMK -->
navigateUp = navigateUp,
onWebViewClick = onWebViewClick,
sourceId = sourceId,
toggleSelectionMode = bulkFavoriteScreenModel::toggleSelectionMode,
@ -280,6 +282,7 @@ fun SourceFeedToolbar(
scrollBehavior: TopAppBarScrollBehavior,
onClickSearch: (String) -> Unit,
// KMK -->
navigateUp: () -> Unit,
onWebViewClick: () -> Unit,
sourceId: Long,
toggleSelectionMode: () -> Unit,
@ -290,7 +293,10 @@ fun SourceFeedToolbar(
searchQuery = searchQuery,
onChangeSearchQuery = onSearchQueryChange,
onSearch = onClickSearch,
onClickCloseSearch = { onSearchQueryChange(null) },
// KMK -->
navigateUp = navigateUp,
onClickCloseSearch = navigateUp,
// KMK <--
scrollBehavior = scrollBehavior,
placeholderText = stringResource(MR.strings.action_search_hint),
// KMK -->

View file

@ -92,6 +92,7 @@ class SourceFeedScreen(val sourceId: Long) : Screen() {
onSearchQueryChange = screenModel::search,
getMangaState = { screenModel.getManga(initialManga = it) },
// KMK -->
navigateUp = { navigator.pop() },
onWebViewClick = {
val source = screenModel.source as? HttpSource ?: return@SourceFeedScreen
navigator.push(
@ -223,14 +224,10 @@ class SourceFeedScreen(val sourceId: Long) : Screen() {
}
// KMK <--
BackHandler(state.searchQuery != null || bulkFavoriteState.selectionMode) {
BackHandler(bulkFavoriteState.selectionMode) {
// KMK -->
if (bulkFavoriteState.selectionMode) {
bulkFavoriteScreenModel.backHandler()
} else {
// KMK <--
screenModel.search(null)
}
bulkFavoriteScreenModel.backHandler()
// KMK <--
}
}