From 0d34d2f8bccf6ab93d3f0c9debd9945954ce9989 Mon Sep 17 00:00:00 2001 From: Cuong-Tran Date: Tue, 22 Jul 2025 18:26:56 +0700 Subject: [PATCH] feat(library): Hide empty library tabs when searching/filtering (#1069) * feat(library): Hide empty library tabs when searching/filtering * Add search-global to Empty screen in Library * Simplify conditional logic * combine conditional flow * Optimize code * Simplified the code * Simplified the code --- .../ui/library/LibraryScreenModel.kt | 23 +++++++++++++++++-- .../presentation/core/screens/EmptyScreen.kt | 2 +- 2 files changed, 22 insertions(+), 3 deletions(-) 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 143e3bc39..d0d1fc776 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 @@ -205,10 +205,11 @@ class LibraryScreenModel( combine( getCategoriesPerLibraryManga.subscribe(), state.map { it.filterCategory }.distinctUntilChanged(), - ::Pair, + state.map { it.searchQuery.isNullOrBlank() && !it.hasActiveFilters }.distinctUntilChanged(), + ::Triple, ), // KMK <-- - ) { (searchQuery, library, _), (tracks, trackingFilter), (groupType, sort), (categoriesPerManga, filterCategory) -> + ) { (searchQuery, library, _), (tracks, trackingFilter), (groupType, sort), (categoriesPerManga, filterCategory, noActiveFilterOrSearch) -> library // SY --> .applyGrouping(/* KMK --> */ if (filterCategory) LibraryGroup.UNGROUPED else /* KMK <-- */ groupType) @@ -238,6 +239,24 @@ class LibraryScreenModel( value } } + // KMK --> + .filter { + noActiveFilterOrSearch || it.value.isNotEmpty() + } + .let { + it.ifEmpty { + mapOf( + Category( + 0, + preferences.context.stringResource(MR.strings.default_category), + 0, + 0, + false, + ) to emptyList(), + ) + } + } + // KMK <-- } .collectLatest { mutableState.update { state -> diff --git a/presentation-core/src/main/java/tachiyomi/presentation/core/screens/EmptyScreen.kt b/presentation-core/src/main/java/tachiyomi/presentation/core/screens/EmptyScreen.kt index dfeb75f3d..8cd150d66 100644 --- a/presentation-core/src/main/java/tachiyomi/presentation/core/screens/EmptyScreen.kt +++ b/presentation-core/src/main/java/tachiyomi/presentation/core/screens/EmptyScreen.kt @@ -90,7 +90,7 @@ fun EmptyScreen( ) // KMK --> - help?.let { help() } + help?.invoke() // KMK <-- if (!actions.isNullOrEmpty()) {