From 8895015388952a4a8822d9d8e4fb91ab4081ea5e Mon Sep 17 00:00:00 2001 From: Cuong-Tran Date: Sat, 19 Oct 2024 00:23:59 +0700 Subject: [PATCH] hide Pinned chip in Global/Migrate Search if no pinned sources available --- .../presentation/browse/GlobalSearchScreen.kt | 2 ++ .../browse/MigrateSearchScreen.kt | 2 ++ .../browse/components/GlobalSearchToolbar.kt | 35 +++++++++++-------- .../migration/search/MigrateSearchScreen.kt | 1 + .../search/MigrateSearchScreenModel.kt | 4 +++ .../source/globalsearch/GlobalSearchScreen.kt | 1 + .../globalsearch/GlobalSearchScreenModel.kt | 4 +++ .../source/globalsearch/SearchScreenModel.kt | 10 ++++++ 8 files changed, 44 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/eu/kanade/presentation/browse/GlobalSearchScreen.kt b/app/src/main/java/eu/kanade/presentation/browse/GlobalSearchScreen.kt index 38fccbb9b..0883f87f0 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/GlobalSearchScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/GlobalSearchScreen.kt @@ -39,6 +39,7 @@ fun GlobalSearchScreen( onLongClickItem: (Manga) -> Unit, // KMK --> bulkFavoriteScreenModel: BulkFavoriteScreenModel, + hasPinnedSources: Boolean, // KMK <-- ) { // KMK --> @@ -91,6 +92,7 @@ fun GlobalSearchScreen( // KMK --> toggleSelectionMode = bulkFavoriteScreenModel::toggleSelectionMode, isRunning = bulkFavoriteState.isRunning, + hasPinnedSources = hasPinnedSources, // KMK <-- ) } diff --git a/app/src/main/java/eu/kanade/presentation/browse/MigrateSearchScreen.kt b/app/src/main/java/eu/kanade/presentation/browse/MigrateSearchScreen.kt index c10438b49..dc46f0bcf 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/MigrateSearchScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/MigrateSearchScreen.kt @@ -29,6 +29,7 @@ fun MigrateSearchScreen( onLongClickItem: (Manga) -> Unit, // KMK --> bulkFavoriteScreenModel: BulkFavoriteScreenModel, + hasPinnedSources: Boolean, // KMK <-- ) { // KMK --> @@ -81,6 +82,7 @@ fun MigrateSearchScreen( // KMK --> toggleSelectionMode = bulkFavoriteScreenModel::toggleSelectionMode, isRunning = bulkFavoriteState.isRunning, + hasPinnedSources = hasPinnedSources, // KMK <-- ) } diff --git a/app/src/main/java/eu/kanade/presentation/browse/components/GlobalSearchToolbar.kt b/app/src/main/java/eu/kanade/presentation/browse/components/GlobalSearchToolbar.kt index 62484e8ef..071e7a4a1 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/components/GlobalSearchToolbar.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/components/GlobalSearchToolbar.kt @@ -51,6 +51,7 @@ fun GlobalSearchToolbar( // KMK --> toggleSelectionMode: () -> Unit, isRunning: Boolean, + hasPinnedSources: Boolean, // KMK <-- ) { Column(modifier = Modifier.background(MaterialTheme.colorScheme.surface)) { @@ -89,21 +90,25 @@ fun GlobalSearchToolbar( horizontalArrangement = Arrangement.spacedBy(MaterialTheme.padding.small), ) { // TODO: make this UX better; it only applies when triggering a new search - FilterChip( - selected = sourceFilter == SourceFilter.PinnedOnly, - onClick = { onChangeSearchFilter(SourceFilter.PinnedOnly) }, - leadingIcon = { - Icon( - imageVector = Icons.Outlined.PushPin, - contentDescription = null, - modifier = Modifier - .size(FilterChipDefaults.IconSize), - ) - }, - label = { - Text(text = stringResource(MR.strings.pinned_sources)) - }, - ) + // KMK --> + if (hasPinnedSources) { + // KMK <-- + FilterChip( + selected = sourceFilter == SourceFilter.PinnedOnly, + onClick = { onChangeSearchFilter(SourceFilter.PinnedOnly) }, + leadingIcon = { + Icon( + imageVector = Icons.Outlined.PushPin, + contentDescription = null, + modifier = Modifier + .size(FilterChipDefaults.IconSize), + ) + }, + label = { + Text(text = stringResource(MR.strings.pinned_sources)) + }, + ) + } FilterChip( selected = sourceFilter == SourceFilter.All, onClick = { onChangeSearchFilter(SourceFilter.All) }, diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateSearchScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateSearchScreen.kt index 042e30ecc..61535894d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateSearchScreen.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateSearchScreen.kt @@ -69,6 +69,7 @@ class MigrateSearchScreen(private val mangaId: Long, private val validSources: L onLongClickItem = { navigator.push(MangaScreen(it.id, true)) }, // KMK --> bulkFavoriteScreenModel = bulkFavoriteScreenModel, + hasPinnedSources = screenModel.hasPinnedSources(), // KMK <-- ) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateSearchScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateSearchScreenModel.kt index 32df4d6cd..17e7ffd18 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateSearchScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateSearchScreenModel.kt @@ -33,6 +33,10 @@ class MigrateSearchScreenModel( } search() } + + // KMK --> + shouldPinnedSourcesHidden() + // KMK <-- } override fun getEnabledSources(): List { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchScreen.kt index 92f021efc..45b6f0dd0 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchScreen.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchScreen.kt @@ -111,6 +111,7 @@ class GlobalSearchScreen( }, // KMK --> bulkFavoriteScreenModel = bulkFavoriteScreenModel, + hasPinnedSources = screenModel.hasPinnedSources(), // KMK <-- ) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchScreenModel.kt index 33c715768..513c41452 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchScreenModel.kt @@ -16,6 +16,10 @@ class GlobalSearchScreenModel( } search() } + + // KMK --> + shouldPinnedSourcesHidden() + // KMK <-- } override fun getEnabledSources(): List { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/SearchScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/SearchScreenModel.kt index 431651a11..f2246b47c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/SearchScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/SearchScreenModel.kt @@ -101,6 +101,16 @@ abstract class SearchScreenModel( ) } + // KMK --> + fun hasPinnedSources(): Boolean = getEnabledSources().any { "${it.id}" in pinnedSources } + + fun shouldPinnedSourcesHidden() { + if (!hasPinnedSources()) { + preferences.globalSearchPinnedState().set(SourceFilter.All) + } + } + // KMK <-- + private fun getSelectedSources(): List { val enabledSources = getEnabledSources()