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
This commit is contained in:
arkon 2023-02-12 22:28:12 -05:00 committed by Jobobby04
parent 9872ee7ab9
commit 8fc9e77b77
4 changed files with 17 additions and 8 deletions

View File

@ -32,6 +32,8 @@ class SourcePreferences(
fun searchPinnedSourcesOnly() = preferenceStore.getBoolean("search_pinned_sources_only", false) fun searchPinnedSourcesOnly() = preferenceStore.getBoolean("search_pinned_sources_only", false)
fun hideInLibraryItems() = preferenceStore.getBoolean("browse_hide_in_library_items", false)
// SY --> // SY -->
fun enableSourceBlacklist() = preferenceStore.getBoolean("eh_enable_source_blacklist", true) fun enableSourceBlacklist() = preferenceStore.getBoolean("eh_enable_source_blacklist", true)

View File

@ -112,12 +112,16 @@ object SettingsBrowseScreen : SearchableSettings {
), ),
), ),
Preference.PreferenceGroup( Preference.PreferenceGroup(
title = stringResource(R.string.action_global_search), title = stringResource(R.string.label_sources),
preferenceItems = listOf( preferenceItems = listOf(
Preference.PreferenceItem.SwitchPreference( Preference.PreferenceItem.SwitchPreference(
pref = sourcePreferences.searchPinnedSourcesOnly(), pref = sourcePreferences.searchPinnedSourcesOnly(),
title = stringResource(R.string.pref_search_pinned_sources_only), 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( Preference.PreferenceGroup(

View File

@ -10,6 +10,7 @@ import androidx.compose.ui.unit.dp
import androidx.paging.Pager import androidx.paging.Pager
import androidx.paging.PagingConfig import androidx.paging.PagingConfig
import androidx.paging.cachedIn import androidx.paging.cachedIn
import androidx.paging.filter
import androidx.paging.map import androidx.paging.map
import cafe.adriel.voyager.core.model.StateScreenModel import cafe.adriel.voyager.core.model.StateScreenModel
import cafe.adriel.voyager.core.model.coroutineScope import cafe.adriel.voyager.core.model.coroutineScope
@ -212,13 +213,14 @@ open class BrowseSourceScreenModel(
// SY --> // SY -->
createSourcePagingSource(listing.query ?: "", listing.filters) createSourcePagingSource(listing.query ?: "", listing.filters)
// SY <-- // SY <--
}.flow }.flow.map { pagingData ->
.map { pagingData -> pagingData
pagingData.map { (sManga, metadata) -> .map { (it, metadata) -> withIOContext { networkToLocalManga.await(it.toDomainManga(sourceId)) } to metadata }
val dbManga = withIOContext { networkToLocalManga.await(sManga.toDomainManga(sourceId)) } .filter { (it) -> !sourcePreferences.hideInLibraryItems().get() || !it.favorite }
.map { (dbManga, metadata) ->
getManga.subscribe(dbManga.url, dbManga.source) getManga.subscribe(dbManga.url, dbManga.source)
.filterNotNull() .filterNotNull()
.onEach { initializeManga(it) } .onEach(::initializeManga)
// SY --> // SY -->
.combineMetadata(dbManga, metadata) .combineMetadata(dbManga, metadata)
// SY <-- // SY <--

View File

@ -457,7 +457,8 @@
<!-- Browse section --> <!-- Browse section -->
<string name="pref_enable_automatic_extension_updates">Check for extension updates</string> <string name="pref_enable_automatic_extension_updates">Check for extension updates</string>
<string name="pref_search_pinned_sources_only">Only include pinned sources</string> <string name="pref_search_pinned_sources_only">Only search pinned sources in global search</string>
<string name="pref_hide_in_library_items">Hide entries already in library</string>
<!-- Backup section --> <!-- Backup section -->
<string name="pref_create_backup">Create backup</string> <string name="pref_create_backup">Create backup</string>