From b6b7114c29cc382663b0a91c92ca24c57ea9373f Mon Sep 17 00:00:00 2001 From: Cuong Tran Date: Tue, 4 Jun 2024 03:51:16 +0700 Subject: [PATCH] Fix Genre tag search while browsing related-titles or from Feed Screen --- .../kanade/tachiyomi/ui/manga/MangaScreen.kt | 35 +++++++++++++------ 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreen.kt index 239129a6c..df83b40d9 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreen.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreen.kt @@ -525,19 +525,21 @@ class MangaScreen( return } - when (val previousController = navigator.items[navigator.size - 2]) { + navigator.popUntil { screen -> + navigator.size < 2 || screen is BrowseSourceScreen || + screen is HomeScreen || screen is SourceFeedScreen + } + + when (val previousController = navigator.lastItem) { is HomeScreen -> { - navigator.pop() previousController.search(query) } is BrowseSourceScreen -> { - navigator.pop() previousController.search(query) } // SY --> is SourceFeedScreen -> { - navigator.pop() - navigator.replace(BrowseSourceScreen(previousController.sourceId, query)) + navigator.push(BrowseSourceScreen(previousController.sourceId, query)) } // SY <-- } @@ -553,13 +555,24 @@ class MangaScreen( return } - val previousController = navigator.items[navigator.size - 2] - if (previousController is BrowseSourceScreen && source is HttpSource) { - navigator.pop() - previousController.searchGenre(genreName) - } else { - performSearch(navigator, genreName, global = false) + var previousController: cafe.adriel.voyager.core.screen.Screen + var idx = navigator.size - 2 + while (idx >= 0) { + previousController = navigator.items[idx--] + if (previousController is BrowseSourceScreen && source is HttpSource) { + navigator.popUntil { navigator.size == idx + 2 } + previousController.searchGenre(genreName) + return + } + if (previousController is SourceFeedScreen && source is HttpSource) { + navigator.popUntil { navigator.size == idx + 2 } + navigator.push(BrowseSourceScreen(previousController.sourceId, "")) + previousController = navigator.lastItem as BrowseSourceScreen + previousController.searchGenre(genreName) + return + } } + performSearch(navigator, genreName, global = false) } /**