Split source preferences from PreferencesHelper (#8029)

This commit is contained in:
Andreas
2022-09-18 16:36:41 +02:00
committed by GitHub
parent f3cecd3cde
commit 30b3b2d3ff
28 changed files with 111 additions and 93 deletions

View File

@@ -1,13 +1,13 @@
package eu.kanade.domain.extension.interactor
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.tachiyomi.extension.ExtensionManager
import eu.kanade.tachiyomi.util.system.LocaleHelper
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.combine
class GetExtensionLanguages(
private val preferences: PreferencesHelper,
private val preferences: SourcePreferences,
private val extensionManager: ExtensionManager,
) {
fun subscribe(): Flow<List<String>> {

View File

@@ -1,6 +1,6 @@
package eu.kanade.domain.extension.interactor
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.tachiyomi.extension.model.Extension
import eu.kanade.tachiyomi.source.Source
import eu.kanade.tachiyomi.ui.browse.extension.details.ExtensionSourceItem
@@ -8,7 +8,7 @@ import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
class GetExtensionSources(
private val preferences: PreferencesHelper,
private val preferences: SourcePreferences,
) {
fun subscribe(extension: Extension.Installed): Flow<List<ExtensionSourceItem>> {

View File

@@ -1,14 +1,14 @@
package eu.kanade.domain.extension.interactor
import eu.kanade.domain.extension.model.Extensions
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.tachiyomi.extension.ExtensionManager
import eu.kanade.tachiyomi.extension.model.Extension
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.combine
class GetExtensionsByType(
private val preferences: PreferencesHelper,
private val preferences: SourcePreferences,
private val extensionManager: ExtensionManager,
) {

View File

@@ -4,7 +4,7 @@ import eu.kanade.domain.source.model.Pin
import eu.kanade.domain.source.model.Pins
import eu.kanade.domain.source.model.Source
import eu.kanade.domain.source.repository.SourceRepository
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.tachiyomi.source.LocalSource
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.combine
@@ -12,7 +12,7 @@ import kotlinx.coroutines.flow.distinctUntilChanged
class GetEnabledSources(
private val repository: SourceRepository,
private val preferences: PreferencesHelper,
private val preferences: SourcePreferences,
) {
fun subscribe(): Flow<List<Source>> {

View File

@@ -2,14 +2,14 @@ package eu.kanade.domain.source.interactor
import eu.kanade.domain.source.model.Source
import eu.kanade.domain.source.repository.SourceRepository
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.tachiyomi.util.system.LocaleHelper
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.combine
class GetLanguagesWithSources(
private val repository: SourceRepository,
private val preferences: PreferencesHelper,
private val preferences: SourcePreferences,
) {
fun subscribe(): Flow<Map<String, List<Source>>> {

View File

@@ -2,7 +2,7 @@ package eu.kanade.domain.source.interactor
import eu.kanade.domain.source.model.Source
import eu.kanade.domain.source.repository.SourceRepository
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.domain.source.service.SourcePreferences
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.combine
import java.text.Collator
@@ -11,7 +11,7 @@ import java.util.Locale
class GetSourcesWithFavoriteCount(
private val repository: SourceRepository,
private val preferences: PreferencesHelper,
private val preferences: SourcePreferences,
) {
fun subscribe(): Flow<List<Pair<Source, Long>>> {

View File

@@ -1,9 +1,9 @@
package eu.kanade.domain.source.interactor
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.domain.source.service.SourcePreferences
class SetMigrateSorting(
private val preferences: PreferencesHelper,
private val preferences: SourcePreferences,
) {
fun await(mode: Mode, direction: Direction) {
@@ -14,12 +14,10 @@ class SetMigrateSorting(
enum class Mode {
ALPHABETICAL,
TOTAL,
;
}
enum class Direction {
ASCENDING,
DESCENDING,
;
}
}

View File

@@ -1,12 +1,10 @@
package eu.kanade.domain.source.interactor
import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.tachiyomi.core.preference.getAndSet
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.util.preference.minusAssign
import eu.kanade.tachiyomi.util.preference.plusAssign
class ToggleLanguage(
val preferences: PreferencesHelper,
val preferences: SourcePreferences,
) {
fun await(language: String) {

View File

@@ -1,22 +1,24 @@
package eu.kanade.domain.source.interactor
import eu.kanade.domain.source.model.Source
import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.tachiyomi.core.preference.getAndSet
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.util.preference.minusAssign
import eu.kanade.tachiyomi.util.preference.plusAssign
class ToggleSource(
private val preferences: PreferencesHelper,
private val preferences: SourcePreferences,
) {
fun await(source: Source, enable: Boolean = source.id.toString() in preferences.disabledSources().get()) {
fun await(source: Source, enable: Boolean = isEnabled(source.id)) {
await(source.id, enable)
}
fun await(sourceId: Long, enable: Boolean = sourceId.toString() in preferences.disabledSources().get()) {
fun await(sourceId: Long, enable: Boolean = isEnabled(sourceId)) {
preferences.disabledSources().getAndSet { disabled ->
if (enable) disabled.minus("$sourceId") else disabled.plus("$sourceId")
}
}
private fun isEnabled(sourceId: Long): Boolean {
return sourceId.toString() in preferences.disabledSources().get()
}
}

View File

@@ -1,13 +1,11 @@
package eu.kanade.domain.source.interactor
import eu.kanade.domain.source.model.Source
import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.tachiyomi.core.preference.getAndSet
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.util.preference.minusAssign
import eu.kanade.tachiyomi.util.preference.plusAssign
class ToggleSourcePin(
private val preferences: PreferencesHelper,
private val preferences: SourcePreferences,
) {
fun await(source: Source) {

View File

@@ -0,0 +1,33 @@
package eu.kanade.domain.source.service
import eu.kanade.domain.source.interactor.SetMigrateSorting
import eu.kanade.tachiyomi.core.preference.PreferenceStore
import eu.kanade.tachiyomi.core.preference.getEnum
import eu.kanade.tachiyomi.util.system.LocaleHelper
class SourcePreferences(
private val preferenceStore: PreferenceStore,
) {
fun enabledLanguages() = this.preferenceStore.getStringSet("source_languages", LocaleHelper.getDefaultEnabledLanguages())
fun disabledSources() = this.preferenceStore.getStringSet("hidden_catalogues", emptySet())
fun pinnedSources() = this.preferenceStore.getStringSet("pinned_catalogues", emptySet())
fun duplicatePinnedSources() = this.preferenceStore.getBoolean("duplicate_pinned_sources", false)
fun lastUsedSource() = this.preferenceStore.getLong("last_catalogue_source", -1)
fun showNsfwSource() = this.preferenceStore.getBoolean("show_nsfw_source", true)
fun migrationSortingMode() = this.preferenceStore.getEnum("pref_migration_sorting", SetMigrateSorting.Mode.ALPHABETICAL)
fun migrationSortingDirection() = this.preferenceStore.getEnum("pref_migration_direction", SetMigrateSorting.Direction.ASCENDING)
fun extensionUpdatesCount() = this.preferenceStore.getInt("ext_updates_count", 0)
fun trustedSignatures() = this.preferenceStore.getStringSet("trusted_signatures", emptySet())
fun searchPinnedSourcesOnly() = this.preferenceStore.getBoolean("search_pinned_sources_only", false)
}