diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsLibraryScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsLibraryScreen.kt
index 4d58a79b5..22d48fe72 100644
--- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsLibraryScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsLibraryScreen.kt
@@ -50,6 +50,7 @@ import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
object SettingsLibraryScreen : SearchableSettings {
+ @Suppress("unused")
private fun readResolve(): Any = SettingsLibraryScreen
@Composable
@@ -291,6 +292,12 @@ object SettingsLibraryScreen : SearchableSettings {
preference = libraryPreferences.hideMissingChapters(),
title = stringResource(MR.strings.pref_hide_missing_chapter_indicators),
),
+ // KMK -->
+ Preference.PreferenceItem.SwitchPreference(
+ preference = libraryPreferences.showEmptyCategoriesSearch(),
+ title = stringResource(KMR.strings.pref_show_empty_categories_search),
+ ),
+ // KMK <--
),
)
}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt
index b78a37398..6d4034b10 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt
@@ -252,7 +252,8 @@ class LibraryScreenModel(
combine(
libraryPreferences.sortingMode().changes(),
libraryPreferences.showHiddenCategories().changes(),
- ::Pair,
+ libraryPreferences.showEmptyCategoriesSearch().changes(),
+ ::Triple,
),
combine(
state.map { it.filterCategory }.distinctUntilChanged(),
@@ -260,7 +261,7 @@ class LibraryScreenModel(
::Pair,
),
// KMK <--
- ) { (data, groupType, noActiveFilterOrSearch), (sort, showHiddenCategories), (filterCategory, includedCategories) ->
+ ) { (data, groupType, noActiveFilterOrSearch), (sort, showHiddenCategories, showEmptyCategoriesSearch), (filterCategory, includedCategories) ->
data.favorites
.applyGrouping(
data.categories,
@@ -285,7 +286,7 @@ class LibraryScreenModel(
// KMK -->
.filter {
// Hide empty categories if no active filter or search
- noActiveFilterOrSearch || it.value.isNotEmpty()
+ showEmptyCategoriesSearch || noActiveFilterOrSearch || it.value.isNotEmpty()
}
.let {
// Fall back to default category if no categories are present
@@ -934,7 +935,6 @@ class LibraryScreenModel(
manga.ogTitle,
// SY <--
manga.source,
-
)
}
.let { if (amount != null) it.take(amount) else it }
@@ -946,17 +946,25 @@ class LibraryScreenModel(
// SY -->
fun cleanTitles() {
+ val regex1 = "\\[.*?]".toRegex()
+ val regex2 = "\\(.*?\\)".toRegex()
+ val regex3 = "\\{.*?\\}".toRegex()
+ val regex4 = ".*\\|".toRegex()
state.value.selectedManga.fastFilter {
it.isEhBasedManga() ||
it.source in nHentaiSourceIds
}.fastForEach { manga ->
- val editedTitle = manga.title.replace("\\[.*?]".toRegex(), "").trim().replace("\\(.*?\\)".toRegex(), "").trim().replace("\\{.*?\\}".toRegex(), "").trim().let {
- if (it.contains("|")) {
- it.replace(".*\\|".toRegex(), "").trim()
- } else {
- it
+ val editedTitle = manga.title
+ .replace(regex1, "").trim()
+ .replace(regex2, "").trim()
+ .replace(regex3, "").trim()
+ .let {
+ if (it.contains("|")) {
+ it.replace(regex4, "").trim()
+ } else {
+ it
+ }
}
- }
if (manga.title == editedTitle) return@fastForEach
val mangaInfo = CustomMangaInfo(
id = manga.id,
diff --git a/domain/src/main/java/tachiyomi/domain/library/service/LibraryPreferences.kt b/domain/src/main/java/tachiyomi/domain/library/service/LibraryPreferences.kt
index 05bcf06e4..258440db2 100644
--- a/domain/src/main/java/tachiyomi/domain/library/service/LibraryPreferences.kt
+++ b/domain/src/main/java/tachiyomi/domain/library/service/LibraryPreferences.kt
@@ -224,6 +224,10 @@ class LibraryPreferences(
fun autoClearChapterCache() = preferenceStore.getBoolean("auto_clear_chapter_cache", false)
fun hideMissingChapters() = preferenceStore.getBoolean("pref_hide_missing_chapter_indicators", false)
+
+ // KMK -->
+ fun showEmptyCategoriesSearch() = preferenceStore.getBoolean("show_empty_categories_search", false)
+ // KMK <--
// endregion
// region Swipe Actions
diff --git a/i18n-kmk/src/commonMain/moko-resources/base/strings.xml b/i18n-kmk/src/commonMain/moko-resources/base/strings.xml
index 46a3c99aa..f08f8aaa1 100644
--- a/i18n-kmk/src/commonMain/moko-resources/base/strings.xml
+++ b/i18n-kmk/src/commonMain/moko-resources/base/strings.xml
@@ -93,6 +93,7 @@
Use language icon
Entries in excluded categories will not be shown even if they are also in included categories.
Updating
+ Show empty categories during search/filtering.
Refresh extension page to update list.
More extensions...