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:
@@ -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 <--
|
||||
}
|
||||
Reference in New Issue
Block a user