Skip to content

Commit

Permalink
Fix filters not working in some extensions
Browse files Browse the repository at this point in the history
Fixes #1580
  • Loading branch information
Jays2Kings committed Aug 1, 2023
1 parent 01a6f36 commit 121df1f
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -397,9 +397,10 @@ open class BrowseSourceController(bundle: Bundle) :
matches = false
break
}
if (!matches) break
}
if (!matches) {
val allDefault = presenter.sourceFilters == presenter.source.getFilterList()
val allDefault = presenter.filtersMatchDefault()
showProgressBar()
adapter?.clear()
presenter.setSourceFilter(if (allDefault) FilterList() else presenter.sourceFilters)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,17 +96,50 @@ open class BrowseSourcePresenter(

var query = searchQuery ?: ""

private val oldFilters = mutableListOf<Any?>()

override fun onCreate() {
super.onCreate()
if (!::pager.isInitialized) {
source = sourceManager.get(sourceId) as? CatalogueSource ?: return

sourceFilters = source.getFilterList()

if (oldFilters.isEmpty()) {
for (i in sourceFilters) {
if (i is Filter.Group<*>) {
val subFilters = mutableListOf<Any?>()
for (j in i.state) {
subFilters.add((j as Filter<*>).state)
}
oldFilters.add(subFilters)
} else {
oldFilters.add(i.state)
}
}
}
filtersChanged = false
restartPager()
}
}

fun filtersMatchDefault(): Boolean {
for (i in sourceFilters.indices) {
val filter = oldFilters.getOrNull(i)
if (filter is List<*>) {
for (j in filter.indices) {
val state = ((sourceFilters[i] as Filter.Group<*>).state[j] as Filter<*>).state
if (filter[j] != state) {
return false
}
}
} else if (filter != sourceFilters[i].state) {
return false
}
}
return true
}

/**
* Restarts the pager for the active source with the provided query and filters.
*
Expand Down

0 comments on commit 121df1f

Please sign in to comment.