Split source preferences from PreferencesHelper (#8029)

(cherry picked from commit 30b3b2d3ff)

# Conflicts:
#	app/src/main/java/eu/kanade/tachiyomi/AppModule.kt
#	app/src/main/java/eu/kanade/tachiyomi/source/SourceExtensions.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesFilterPresenter.kt
This commit is contained in:
Andreas
2022-09-18 16:36:41 +02:00
committed by Jobobby04
parent 41c9c20e26
commit 5d1dfb5290
59 changed files with 286 additions and 230 deletions
@@ -1,9 +1,9 @@
package eu.kanade.domain.source.interactor
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.tachiyomi.util.preference.plusAssign
class CreateSourceCategory(private val preferences: PreferencesHelper) {
class CreateSourceCategory(private val preferences: SourcePreferences) {
fun await(category: String): Result {
// Do not allow duplicate categories.
@@ -1,16 +1,15 @@
package eu.kanade.domain.source.interactor
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.tachiyomi.core.preference.getAndSet
import eu.kanade.tachiyomi.util.preference.minusAssign
class DeleteSourceCategory(private val preferences: PreferencesHelper) {
class DeleteSourceCategory(private val preferences: SourcePreferences) {
fun await(category: String) {
preferences.sourcesTabSourcesInCategories().set(
preferences.sourcesTabSourcesInCategories().get()
.filterNot { it.substringAfter("|") == category }
.toSet(),
)
preferences.sourcesTabSourcesInCategories().getAndSet { sourcesInCategories ->
sourcesInCategories.filterNot { it.substringAfter("|") == category }.toSet()
}
preferences.sourcesTabCategories() -= category
}
}
@@ -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 exh.source.BlacklistedSources
import kotlinx.coroutines.flow.Flow
@@ -13,7 +13,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>> {
@@ -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 eu.kanade.tachiyomi.util.system.LocaleHelper
import exh.source.BlacklistedSources
import kotlinx.coroutines.flow.Flow
@@ -10,7 +10,7 @@ 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>>> {
@@ -1,11 +1,11 @@
package eu.kanade.domain.source.interactor
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.domain.source.service.SourcePreferences
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
class GetSourceCategories(
private val preferences: PreferencesHelper,
private val preferences: SourcePreferences,
) {
fun subscribe(): Flow<List<String>> {
@@ -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>>> {
@@ -1,9 +1,10 @@
package eu.kanade.domain.source.interactor
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.tachiyomi.core.preference.getAndSet
class RenameSourceCategory(
private val preferences: PreferencesHelper,
private val preferences: SourcePreferences,
private val createSourceCategory: CreateSourceCategory,
) {
@@ -14,23 +15,19 @@ class RenameSourceCategory(
CreateSourceCategory.Result.Success -> {}
}
preferences.sourcesTabSourcesInCategories().set(
preferences.sourcesTabSourcesInCategories().get()
.map {
val index = it.indexOf('|')
if (index != -1 && it.substring(index + 1) == categoryOld) {
it.substring(0, index + 1) + categoryNew
} else {
it
}
preferences.sourcesTabSourcesInCategories().getAndSet { sourcesInCategories ->
sourcesInCategories.map {
val index = it.indexOf('|')
if (index != -1 && it.substring(index + 1) == categoryOld) {
it.substring(0, index + 1) + categoryNew
} else {
it
}
.toSet(),
)
preferences.sourcesTabCategories().set(
preferences.sourcesTabCategories().get()
.minus(categoryOld)
.plus(categoryNew),
)
}.toSet()
}
preferences.sourcesTabCategories().getAndSet {
it.minus(categoryOld).plus(categoryNew)
}
return CreateSourceCategory.Result.Success
}
@@ -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,
;
}
}
@@ -1,22 +1,23 @@
package eu.kanade.domain.source.interactor
import eu.kanade.domain.source.model.Source
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.util.preference.minusAssign
import eu.kanade.tachiyomi.util.preference.plusAssign
import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.tachiyomi.core.preference.getAndSet
class SetSourceCategories(
private val preferences: PreferencesHelper,
private val preferences: SourcePreferences,
) {
fun await(source: Source, sourceCategories: List<String>) {
val sourceIdString = source.id.toString()
val currentSourceCategories = preferences.sourcesTabSourcesInCategories().get().filterNot {
it.substringBefore('|') == sourceIdString
preferences.sourcesTabSourcesInCategories().getAndSet { sourcesInCategories ->
val currentSourceCategories = sourcesInCategories.filterNot {
it.substringBefore('|') == sourceIdString
}
val newSourceCategories = currentSourceCategories + sourceCategories.map {
"$sourceIdString|$it"
}
newSourceCategories.toSet()
}
val newSourceCategories = currentSourceCategories + sourceCategories.map {
"$sourceIdString|$it"
}
preferences.sourcesTabSourcesInCategories().set(newSourceCategories.toSet())
}
}
@@ -1,20 +1,20 @@
package eu.kanade.domain.source.interactor
import eu.kanade.domain.source.model.Source
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.util.preference.minusAssign
import eu.kanade.tachiyomi.util.preference.plusAssign
import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.tachiyomi.core.preference.getAndSet
class ToggleExcludeFromDataSaver(
private val preferences: PreferencesHelper,
private val preferences: SourcePreferences,
) {
fun await(source: Source) {
val isExcluded = source.id.toString() in preferences.dataSaverExcludedSources().get()
if (isExcluded) {
preferences.dataSaverExcludedSources() -= source.id.toString()
} else {
preferences.dataSaverExcludedSources() += source.id.toString()
preferences.dataSaverExcludedSources().getAndSet {
if (source.id.toString() in it) {
it - source.id.toString()
} else {
it + source.id.toString()
}
}
}
}
@@ -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) {
@@ -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()
}
}
@@ -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) {
@@ -1,11 +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
class ToggleSources(
private val preferences: PreferencesHelper,
private val preferences: SourcePreferences,
) {
fun await(isEnable: Boolean, sources: List<Source>) {
@@ -0,0 +1,61 @@
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)
// SY -->
fun enableSourceBlacklist() = this.preferenceStore.getBoolean("eh_enable_source_blacklist", true)
fun sourcesTabCategories() = this.preferenceStore.getStringSet("sources_tab_categories", mutableSetOf())
fun sourcesTabCategoriesFilter() = this.preferenceStore.getBoolean("sources_tab_categories_filter", false)
fun sourcesTabSourcesInCategories() = this.preferenceStore.getStringSet("sources_tab_source_categories", mutableSetOf())
fun dataSaver() = this.preferenceStore.getBoolean("data_saver", false)
fun dataSaverIgnoreJpeg() = this.preferenceStore.getBoolean("ignore_jpeg", false)
fun dataSaverIgnoreGif() = this.preferenceStore.getBoolean("ignore_gif", true)
fun dataSaverImageQuality() = this.preferenceStore.getInt("data_saver_image_quality", 80)
fun dataSaverImageFormatJpeg() = this.preferenceStore.getBoolean("data_saver_image_format_jpeg", false)
fun dataSaverServer() = this.preferenceStore.getString("data_saver_server", "")
fun dataSaverColorBW() = this.preferenceStore.getBoolean("data_saver_color_bw", false)
fun dataSaverExcludedSources() = this.preferenceStore.getStringSet("data_saver_excluded", emptySet())
fun dataSaverDownloader() = this.preferenceStore.getBoolean("data_saver_downloader", true)
// SY <--
}