From 8fc9e77b77a9b617ebf5c712fe41022a2b17459b Mon Sep 17 00:00:00 2001 From: arkon Date: Sun, 12 Feb 2023 22:28:12 -0500 Subject: [PATCH] Add option to hide entries already in library when browsing sources Closes #2941 (cherry picked from commit 6348cbaeb7dc786309c1ed811ff23114583144a8) # Conflicts: # app/src/main/java/eu/kanade/domain/source/service/SourcePreferences.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt --- .../domain/source/service/SourcePreferences.kt | 2 ++ .../more/settings/screen/SettingsBrowseScreen.kt | 6 +++++- .../source/browse/BrowseSourceScreenModel.kt | 14 ++++++++------ i18n/src/main/res/values/strings.xml | 3 ++- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/eu/kanade/domain/source/service/SourcePreferences.kt b/app/src/main/java/eu/kanade/domain/source/service/SourcePreferences.kt index 9a93079bc..22428a5f5 100644 --- a/app/src/main/java/eu/kanade/domain/source/service/SourcePreferences.kt +++ b/app/src/main/java/eu/kanade/domain/source/service/SourcePreferences.kt @@ -32,6 +32,8 @@ class SourcePreferences( fun searchPinnedSourcesOnly() = preferenceStore.getBoolean("search_pinned_sources_only", false) + fun hideInLibraryItems() = preferenceStore.getBoolean("browse_hide_in_library_items", false) + // SY --> fun enableSourceBlacklist() = preferenceStore.getBoolean("eh_enable_source_blacklist", true) diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBrowseScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBrowseScreen.kt index c2b8449b3..a020e8695 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBrowseScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBrowseScreen.kt @@ -112,12 +112,16 @@ object SettingsBrowseScreen : SearchableSettings { ), ), Preference.PreferenceGroup( - title = stringResource(R.string.action_global_search), + title = stringResource(R.string.label_sources), preferenceItems = listOf( Preference.PreferenceItem.SwitchPreference( pref = sourcePreferences.searchPinnedSourcesOnly(), title = stringResource(R.string.pref_search_pinned_sources_only), ), + Preference.PreferenceItem.SwitchPreference( + pref = sourcePreferences.hideInLibraryItems(), + title = stringResource(R.string.pref_hide_in_library_items), + ), ), ), Preference.PreferenceGroup( diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt index add55531c..93dab5c51 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt @@ -10,6 +10,7 @@ import androidx.compose.ui.unit.dp import androidx.paging.Pager import androidx.paging.PagingConfig import androidx.paging.cachedIn +import androidx.paging.filter import androidx.paging.map import cafe.adriel.voyager.core.model.StateScreenModel import cafe.adriel.voyager.core.model.coroutineScope @@ -212,19 +213,20 @@ open class BrowseSourceScreenModel( // SY --> createSourcePagingSource(listing.query ?: "", listing.filters) // SY <-- - }.flow - .map { pagingData -> - pagingData.map { (sManga, metadata) -> - val dbManga = withIOContext { networkToLocalManga.await(sManga.toDomainManga(sourceId)) } + }.flow.map { pagingData -> + pagingData + .map { (it, metadata) -> withIOContext { networkToLocalManga.await(it.toDomainManga(sourceId)) } to metadata } + .filter { (it) -> !sourcePreferences.hideInLibraryItems().get() || !it.favorite } + .map { (dbManga, metadata) -> getManga.subscribe(dbManga.url, dbManga.source) .filterNotNull() - .onEach { initializeManga(it) } + .onEach(::initializeManga) // SY --> .combineMetadata(dbManga, metadata) // SY <-- .stateIn(coroutineScope) - } } + } .cachedIn(coroutineScope) } .stateIn(coroutineScope, SharingStarted.Lazily, emptyFlow()) diff --git a/i18n/src/main/res/values/strings.xml b/i18n/src/main/res/values/strings.xml index d882b216e..4cee7abde 100755 --- a/i18n/src/main/res/values/strings.xml +++ b/i18n/src/main/res/values/strings.xml @@ -457,7 +457,8 @@ Check for extension updates - Only include pinned sources + Only search pinned sources in global search + Hide entries already in library Create backup