Fix stats count not being accurate when filtering categories

only happens when manga are in multiple categories
This commit is contained in:
Jays2Kings 2022-12-17 03:07:07 -05:00
parent 0c94c8fa82
commit 4cd9c81b92

View file

@ -399,11 +399,11 @@ class StatsDetailsPresenter(
* Filter the stat data according to the chips selected * Filter the stat data according to the chips selected
*/ */
private fun List<LibraryManga>.filterByChip(): List<LibraryManga> { private fun List<LibraryManga>.filterByChip(): List<LibraryManga> {
return this.filterBySeriesType(selectedStat == Stats.SERIES_TYPE) return this.filterByCategory(selectedStat == Stats.CATEGORY)
.filterBySeriesType(selectedStat == Stats.SERIES_TYPE)
.filterByStatus(selectedStat == Stats.STATUS) .filterByStatus(selectedStat == Stats.STATUS)
.filterByLanguage(selectedStat == Stats.LANGUAGE || (selectedStat != Stats.SOURCE && selectedSource.isNotEmpty())) .filterByLanguage(selectedStat == Stats.LANGUAGE || (selectedStat != Stats.SOURCE && selectedSource.isNotEmpty()))
.filterBySource(selectedStat in listOf(Stats.SOURCE, Stats.LANGUAGE) || selectedLanguage.isNotEmpty()) .filterBySource(selectedStat in listOf(Stats.SOURCE, Stats.LANGUAGE) || selectedLanguage.isNotEmpty())
.filterByCategory(selectedStat == Stats.CATEGORY)
} }
private fun List<LibraryManga>.filterBySeriesType(noFilter: Boolean = false): List<LibraryManga> { private fun List<LibraryManga>.filterBySeriesType(noFilter: Boolean = false): List<LibraryManga> {
@ -450,9 +450,9 @@ class StatsDetailsPresenter(
return if (noFilter || selectedCategory.isEmpty()) { return if (noFilter || selectedCategory.isEmpty()) {
this this
} else { } else {
filter { manga -> libraryMangas.filter { manga ->
manga.category in selectedCategory.map { it.id } manga.category in selectedCategory.map { it.id }
} }.distinct()
} }
} }