Perform catalogue search when genre tag is tapped

pull/2832/head
arkon 5 years ago
parent ce13a5152b
commit 6872455922

@ -313,7 +313,7 @@ open class BrowseCatalogueController(bundle: Bundle) :
* *
* @param newQuery the new query. * @param newQuery the new query.
*/ */
private fun searchWithQuery(newQuery: String) { fun searchWithQuery(newQuery: String) {
// If text didn't change, do nothing // If text didn't change, do nothing
if (presenter.query == newQuery) if (presenter.query == newQuery)
return return

@ -43,6 +43,7 @@ import eu.kanade.tachiyomi.source.online.HttpSource
import eu.kanade.tachiyomi.ui.base.controller.DialogController import eu.kanade.tachiyomi.ui.base.controller.DialogController
import eu.kanade.tachiyomi.ui.base.controller.NucleusController import eu.kanade.tachiyomi.ui.base.controller.NucleusController
import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
import eu.kanade.tachiyomi.ui.catalogue.browse.BrowseCatalogueController
import eu.kanade.tachiyomi.ui.catalogue.global_search.CatalogueSearchController import eu.kanade.tachiyomi.ui.catalogue.global_search.CatalogueSearchController
import eu.kanade.tachiyomi.ui.library.ChangeMangaCategoriesDialog import eu.kanade.tachiyomi.ui.library.ChangeMangaCategoriesDialog
import eu.kanade.tachiyomi.ui.library.LibraryController import eu.kanade.tachiyomi.ui.library.LibraryController
@ -223,7 +224,7 @@ class MangaInfoController : NucleusController<MangaInfoPresenter>(),
text = mangaSource text = mangaSource
setOnClickListener { setOnClickListener {
val sourceManager = Injekt.get<SourceManager>() val sourceManager = Injekt.get<SourceManager>()
performLocalSearch(sourceManager.getOrStub(source.id).name) performSearch(sourceManager.getOrStub(source.id).name)
} }
} else { } else {
text = view.context.getString(R.string.unknown) text = view.context.getString(R.string.unknown)
@ -237,7 +238,7 @@ class MangaInfoController : NucleusController<MangaInfoPresenter>(),
manga.genre?.split(", ")?.forEach { genre -> manga.genre?.split(", ")?.forEach { genre ->
val chip = Chip(view.context).apply { val chip = Chip(view.context).apply {
text = genre text = genre
setOnClickListener { performLocalSearch(genre) } setOnClickListener { performSearch(genre) }
} }
manga_genres_tags.addView(chip) manga_genres_tags.addView(chip)
@ -565,16 +566,27 @@ class MangaInfoController : NucleusController<MangaInfoPresenter>(),
} }
/** /**
* Perform a local search using the provided query. * Perform a search using the provided query.
* *
* @param query the search query to pass to the library controller * @param query the search query to the parent controller
*/ */
private fun performLocalSearch(query: String) { private fun performSearch(query: String) {
val router = parentController?.router ?: return val router = parentController?.router ?: return
val firstController = router.backstack.first()?.controller()
if (firstController is LibraryController && router.backstack.size == 2) { if (router.backstackSize < 2) {
return
}
val previousController = router.backstack[router.backstackSize - 2].controller()
when (previousController) {
is LibraryController -> {
router.handleBack() router.handleBack()
firstController.search(query) previousController.search(query)
}
is BrowseCatalogueController -> {
router.handleBack()
previousController.searchWithQuery(query)
}
} }
} }

Loading…
Cancel
Save