Fix filter search not triggering when clicking genre from Manga details (#8156)

This commit is contained in:
Andreas
2022-10-08 15:48:19 +02:00
committed by GitHub
parent 7be6863910
commit dcd5541e96
5 changed files with 34 additions and 37 deletions

View File

@@ -119,7 +119,10 @@ open class BrowseSourceController(bundle: Bundle) :
private fun navigateUp() {
when {
presenter.searchQuery != null -> presenter.searchQuery = null
presenter.isUserQuery -> presenter.search()
presenter.isUserQuery -> {
val (_, filters) = presenter.currentFilter as BrowseSourcePresenter.Filter.UserInput
presenter.search(query = "", filters = filters)
}
else -> router.popCurrentController()
}
}
@@ -132,10 +135,10 @@ open class BrowseSourceController(bundle: Bundle) :
filterSheet = SourceFilterSheet(
activity!!,
onFilterClicked = {
presenter.setSourceFilter(presenter.filters)
presenter.search(filters = presenter.filters)
},
onResetClicked = {
presenter.resetFilter()
presenter.reset()
filterSheet?.setFilters(presenter.filterItems)
},
)
@@ -190,10 +193,9 @@ open class BrowseSourceController(bundle: Bundle) :
}
if (genreExists) {
filterSheet?.setFilters(presenter.filterItems)
filterSheet?.setFilters(defaultFilters.toItems())
presenter.searchQuery = ""
presenter.setFilter(defaultFilters)
presenter.search(filters = defaultFilters)
} else {
searchWithQuery(genreName)
}

View File

@@ -155,22 +155,25 @@ open class BrowseSourcePresenter(
}
}
fun setFilter(filters: FilterList) {
state.filters = filters
}
fun resetFilter() {
fun reset() {
state.filters = source!!.getFilterList()
if (currentFilter !is Filter.UserInput) return
state.currentFilter = (currentFilter as Filter.UserInput).copy(filters = state.filters)
}
fun search(query: String? = null) {
var new = Filter.valueOf(query ?: searchQuery ?: "")
if (new is Filter.UserInput && currentFilter is Filter.UserInput) {
new = new.copy(filters = currentFilter.filters)
fun search(query: String? = null, filters: FilterList? = null) {
Filter.valueOf(query ?: "").let {
if (it !is Filter.UserInput) {
state.currentFilter = it
return
}
}
state.currentFilter = new
val input: Filter.UserInput = if (currentFilter is Filter.UserInput) currentFilter as Filter.UserInput else Filter.UserInput()
state.currentFilter = input.copy(
query = query ?: input.query,
filters = filters ?: input.filters,
)
}
override fun onCreate(savedState: Bundle?) {
@@ -305,18 +308,6 @@ open class BrowseSourcePresenter(
}
}
/**
* Set the filter states for the current source.
*
* @param filters a list of active filters.
*/
fun setSourceFilter(filters: FilterList) {
state.currentFilter = when (val filter = currentFilter) {
Filter.Latest, Filter.Popular -> Filter.UserInput(filters = filters)
is Filter.UserInput -> filter.copy(filters = filters)
}
}
/**
* Get user categories.
*