diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/LibraryManga.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/LibraryManga.kt index 0c0fb29f98..389387c29e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/LibraryManga.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/LibraryManga.kt @@ -14,6 +14,13 @@ data class LibraryManga( var lastFetch: Int = 0, ) : MangaImpl() { + var realMangaCount = 0 + get() = if (isBlank()) field else throw IllegalStateException("realMangaCount is only accessible for placeholders") + set(value) { + if (!isBlank()) throw IllegalStateException("realMangaCount can only be set for placeholders") + field = value + } + val hasRead get() = read > 0 diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryListHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryListHolder.kt index 3998aae715..2f43d4b496 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryListHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryListHolder.kt @@ -48,7 +48,7 @@ class LibraryListHolder( binding.title.isVisible = false } else { binding.title.text = itemView.context.getString( - if (adapter.hasActiveFilters) { + if (adapter.hasActiveFilters && item.manga.realMangaCount >= 1) { R.string.no_matches_for_filters_short } else { R.string.category_is_empty diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt index 86644113a2..f694133d2b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt @@ -341,7 +341,12 @@ class LibraryPresenter( ) hasActiveFilters = !filtersOff val missingCategorySet = categories.mapNotNull { it.id }.toMutableSet() + val realCount = mutableMapOf() val filteredItems = this.filter f@{ item -> + if (showEmptyCategoriesWhileFiltering) { + realCount[item.manga.category] = sectionedLibraryItems[item.manga.category]?.size ?: 0 + } + if (!showEmptyCategoriesWhileFiltering && item.manga.isHidden()) { val subItems = sectionedLibraryItems[item.manga.category]?.takeUnless { it.size <= 1 } ?: hiddenLibraryItems.filter { it.manga.category == item.manga.category } @@ -376,7 +381,9 @@ class LibraryPresenter( }.toMutableList() if (showEmptyCategoriesWhileFiltering) { missingCategorySet.forEach { - filteredItems.add(blankItem(it).first()) + filteredItems.add( + blankItem(it).first().apply { manga.realMangaCount = realCount[it] ?: 0 } + ) } } return filteredItems