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