Option to only include pinned sources in global search

This commit is contained in:
arkon
2020-04-29 09:29:50 -04:00
parent 8077e421e6
commit fe65f4d6f8
5 changed files with 29 additions and 13 deletions

View File

@@ -114,21 +114,25 @@ open class GlobalSearchPresenter(
private fun getSourcesToQuery(): List<CatalogueSource> {
val filter = extensionFilter
val enabledSources = getEnabledSources()
if (filter.isNullOrEmpty()) {
return enabledSources
var filteredSources: List<CatalogueSource>? = null
if (!filter.isNullOrEmpty()) {
filteredSources = extensionManager.installedExtensions
.filter { it.pkgName == filter }
.flatMap { it.sources }
.filter { it in enabledSources }
.filterIsInstance<CatalogueSource>()
}
val filterSources = extensionManager.installedExtensions
.filter { it.pkgName == filter }
.flatMap { it.sources }
.filter { it in enabledSources }
.filterIsInstance<CatalogueSource>()
if (filterSources.isEmpty()) {
return enabledSources
if (filteredSources != null && filteredSources.isNotEmpty()) {
return filteredSources
}
return filterSources
val onlyPinnedSources = preferences.searchPinnedSourcesOnly()
val pinnedCatalogues = preferences.pinnedCatalogues().get()
return enabledSources
.filter { if (onlyPinnedSources) it.id.toString() in pinnedCatalogues else true }
}
/**

View File

@@ -25,5 +25,10 @@ class SettingsBrowseController : SettingsController() {
true
}
}
switchPreference {
key = Keys.searchPinnedSourcesOnly
titleRes = R.string.pref_search_pinned_sources_only
defaultValue = false
}
}
}