mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	Split source preferences from PreferencesHelper (#8029)
This commit is contained in:
		@@ -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>> {
 | 
			
		||||
 
 | 
			
		||||
@@ -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>> {
 | 
			
		||||
 
 | 
			
		||||
@@ -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,
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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>> {
 | 
			
		||||
 
 | 
			
		||||
@@ -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>>> {
 | 
			
		||||
 
 | 
			
		||||
@@ -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,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,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) {
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
}
 | 
			
		||||
@@ -13,6 +13,7 @@ import eu.kanade.data.AndroidDatabaseHandler
 | 
			
		||||
import eu.kanade.data.DatabaseHandler
 | 
			
		||||
import eu.kanade.data.dateAdapter
 | 
			
		||||
import eu.kanade.data.listOfStringsAdapter
 | 
			
		||||
import eu.kanade.domain.source.service.SourcePreferences
 | 
			
		||||
import eu.kanade.tachiyomi.core.preference.AndroidPreferenceStore
 | 
			
		||||
import eu.kanade.tachiyomi.core.preference.PreferenceStore
 | 
			
		||||
import eu.kanade.tachiyomi.data.cache.ChapterCache
 | 
			
		||||
@@ -130,6 +131,9 @@ class PreferenceModule(val application: Application) : InjektModule {
 | 
			
		||||
                verboseLogging = isDevFlavor,
 | 
			
		||||
            )
 | 
			
		||||
        }
 | 
			
		||||
        addSingletonFactory {
 | 
			
		||||
            SourcePreferences(get())
 | 
			
		||||
        }
 | 
			
		||||
        addSingletonFactory {
 | 
			
		||||
            PreferencesHelper(
 | 
			
		||||
                context = application,
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,7 @@ import android.content.Context
 | 
			
		||||
import android.os.Build
 | 
			
		||||
import androidx.core.content.edit
 | 
			
		||||
import androidx.preference.PreferenceManager
 | 
			
		||||
import eu.kanade.domain.source.service.SourcePreferences
 | 
			
		||||
import eu.kanade.tachiyomi.data.backup.BackupCreatorJob
 | 
			
		||||
import eu.kanade.tachiyomi.data.library.LibraryUpdateJob
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.MANGA_NON_COMPLETED
 | 
			
		||||
@@ -37,6 +38,7 @@ object Migrations {
 | 
			
		||||
        context: Context,
 | 
			
		||||
        preferences: PreferencesHelper,
 | 
			
		||||
        networkPreferences: NetworkPreferences,
 | 
			
		||||
        sourcePreferences: SourcePreferences,
 | 
			
		||||
    ): Boolean {
 | 
			
		||||
        val oldVersion = preferences.lastVersionCode().get()
 | 
			
		||||
        if (oldVersion < BuildConfig.VERSION_CODE) {
 | 
			
		||||
@@ -231,8 +233,8 @@ object Migrations {
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            if (oldVersion < 70) {
 | 
			
		||||
                if (preferences.enabledLanguages().isSet()) {
 | 
			
		||||
                    preferences.enabledLanguages() += "all"
 | 
			
		||||
                if (sourcePreferences.enabledLanguages().isSet()) {
 | 
			
		||||
                    sourcePreferences.enabledLanguages() += "all"
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            if (oldVersion < 71) {
 | 
			
		||||
 
 | 
			
		||||
@@ -37,9 +37,6 @@ object PreferenceKeys {
 | 
			
		||||
 | 
			
		||||
    const val librarySortingMode = "library_sorting_mode"
 | 
			
		||||
 | 
			
		||||
    const val migrationSortingMode = "pref_migration_sorting"
 | 
			
		||||
    const val migrationSortingDirection = "pref_migration_direction"
 | 
			
		||||
 | 
			
		||||
    const val hideNotificationContent = "hide_notification_content"
 | 
			
		||||
 | 
			
		||||
    const val autoUpdateMetadata = "auto_update_metadata"
 | 
			
		||||
@@ -54,8 +51,6 @@ object PreferenceKeys {
 | 
			
		||||
 | 
			
		||||
    const val skipFiltered = "skip_filtered"
 | 
			
		||||
 | 
			
		||||
    const val searchPinnedSourcesOnly = "search_pinned_sources_only"
 | 
			
		||||
 | 
			
		||||
    const val defaultChapterFilterByRead = "default_chapter_filter_by_read"
 | 
			
		||||
 | 
			
		||||
    const val defaultChapterFilterByDownloaded = "default_chapter_filter_by_downloaded"
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,6 @@ import android.content.Context
 | 
			
		||||
import android.os.Build
 | 
			
		||||
import android.os.Environment
 | 
			
		||||
import androidx.core.net.toUri
 | 
			
		||||
import eu.kanade.domain.source.interactor.SetMigrateSorting
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
import eu.kanade.tachiyomi.core.preference.PreferenceStore
 | 
			
		||||
import eu.kanade.tachiyomi.core.preference.getEnum
 | 
			
		||||
@@ -16,7 +15,6 @@ import eu.kanade.tachiyomi.ui.library.setting.LibrarySort
 | 
			
		||||
import eu.kanade.tachiyomi.ui.reader.setting.OrientationType
 | 
			
		||||
import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.DeviceUtil
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.LocaleHelper
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.isDynamicColorAvailable
 | 
			
		||||
import eu.kanade.tachiyomi.widget.ExtendedNavigationView
 | 
			
		||||
import java.io.File
 | 
			
		||||
@@ -166,16 +164,12 @@ class PreferencesHelper(
 | 
			
		||||
 | 
			
		||||
    fun autoUpdateTrack() = this.preferenceStore.getBoolean(Keys.autoUpdateTrack, true)
 | 
			
		||||
 | 
			
		||||
    fun lastUsedSource() = this.preferenceStore.getLong("last_catalogue_source", -1)
 | 
			
		||||
 | 
			
		||||
    fun lastUsedCategory() = this.preferenceStore.getInt("last_used_category", 0)
 | 
			
		||||
 | 
			
		||||
    fun lastVersionCode() = this.preferenceStore.getInt("last_version_code", 0)
 | 
			
		||||
 | 
			
		||||
    fun sourceDisplayMode() = this.preferenceStore.getObject("pref_display_mode_catalogue", LibraryDisplayMode.default, LibraryDisplayMode.Serializer::serialize, LibraryDisplayMode.Serializer::deserialize)
 | 
			
		||||
 | 
			
		||||
    fun enabledLanguages() = this.preferenceStore.getStringSet("source_languages", LocaleHelper.getDefaultEnabledLanguages())
 | 
			
		||||
 | 
			
		||||
    fun trackUsername(sync: TrackService) = this.preferenceStore.getString(Keys.trackUsername(sync.id), "")
 | 
			
		||||
 | 
			
		||||
    fun trackPassword(sync: TrackService) = this.preferenceStore.getString(Keys.trackPassword(sync.id), "")
 | 
			
		||||
@@ -260,24 +254,11 @@ class PreferencesHelper(
 | 
			
		||||
 | 
			
		||||
    fun librarySortingMode() = this.preferenceStore.getObject(Keys.librarySortingMode, LibrarySort.default, LibrarySort.Serializer::serialize, LibrarySort.Serializer::deserialize)
 | 
			
		||||
 | 
			
		||||
    fun migrationSortingMode() = this.preferenceStore.getEnum(Keys.migrationSortingMode, SetMigrateSorting.Mode.ALPHABETICAL)
 | 
			
		||||
    fun migrationSortingDirection() = this.preferenceStore.getEnum(Keys.migrationSortingDirection, SetMigrateSorting.Direction.ASCENDING)
 | 
			
		||||
 | 
			
		||||
    fun automaticExtUpdates() = this.preferenceStore.getBoolean("automatic_ext_updates", true)
 | 
			
		||||
 | 
			
		||||
    fun showNsfwSource() = this.preferenceStore.getBoolean("show_nsfw_source", true)
 | 
			
		||||
 | 
			
		||||
    fun extensionUpdatesCount() = this.preferenceStore.getInt("ext_updates_count", 0)
 | 
			
		||||
 | 
			
		||||
    fun lastAppCheck() = this.preferenceStore.getLong("last_app_check", 0)
 | 
			
		||||
    fun lastExtCheck() = this.preferenceStore.getLong("last_ext_check", 0)
 | 
			
		||||
 | 
			
		||||
    fun searchPinnedSourcesOnly() = this.preferenceStore.getBoolean(Keys.searchPinnedSourcesOnly, false)
 | 
			
		||||
 | 
			
		||||
    fun disabledSources() = this.preferenceStore.getStringSet("hidden_catalogues", emptySet())
 | 
			
		||||
 | 
			
		||||
    fun pinnedSources() = this.preferenceStore.getStringSet("pinned_catalogues", emptySet())
 | 
			
		||||
 | 
			
		||||
    fun downloadNewChapters() = this.preferenceStore.getBoolean("download_new", false)
 | 
			
		||||
 | 
			
		||||
    fun downloadNewChapterCategories() = this.preferenceStore.getStringSet("download_new_categories", emptySet())
 | 
			
		||||
@@ -295,8 +276,6 @@ class PreferencesHelper(
 | 
			
		||||
 | 
			
		||||
    fun migrateFlags() = this.preferenceStore.getInt("migrate_flags", Int.MAX_VALUE)
 | 
			
		||||
 | 
			
		||||
    fun trustedSignatures() = this.preferenceStore.getStringSet("trusted_signatures", emptySet())
 | 
			
		||||
 | 
			
		||||
    fun filterChapterByRead() = this.preferenceStore.getInt(Keys.defaultChapterFilterByRead, DomainManga.SHOW_ALL.toInt())
 | 
			
		||||
 | 
			
		||||
    fun filterChapterByDownloaded() = this.preferenceStore.getInt(Keys.defaultChapterFilterByDownloaded, DomainManga.SHOW_ALL.toInt())
 | 
			
		||||
@@ -320,8 +299,6 @@ class PreferencesHelper(
 | 
			
		||||
 | 
			
		||||
    fun autoClearChapterCache() = this.preferenceStore.getBoolean(Keys.autoClearChapterCache, false)
 | 
			
		||||
 | 
			
		||||
    fun duplicatePinnedSources() = this.preferenceStore.getBoolean("duplicate_pinned_sources", false)
 | 
			
		||||
 | 
			
		||||
    fun setChapterSettingsDefault(manga: Manga) {
 | 
			
		||||
        filterChapterByRead().set(manga.readFilter)
 | 
			
		||||
        filterChapterByDownloaded().set(manga.downloadedFilter)
 | 
			
		||||
 
 | 
			
		||||
@@ -4,8 +4,8 @@ import android.content.Context
 | 
			
		||||
import android.graphics.drawable.Drawable
 | 
			
		||||
import com.jakewharton.rxrelay.BehaviorRelay
 | 
			
		||||
import eu.kanade.domain.source.model.SourceData
 | 
			
		||||
import eu.kanade.domain.source.service.SourcePreferences
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
 | 
			
		||||
import eu.kanade.tachiyomi.extension.api.ExtensionGithubApi
 | 
			
		||||
import eu.kanade.tachiyomi.extension.model.AvailableSources
 | 
			
		||||
import eu.kanade.tachiyomi.extension.model.Extension
 | 
			
		||||
@@ -42,7 +42,7 @@ import java.util.Locale
 | 
			
		||||
 */
 | 
			
		||||
class ExtensionManager(
 | 
			
		||||
    private val context: Context,
 | 
			
		||||
    private val preferences: PreferencesHelper = Injekt.get(),
 | 
			
		||||
    private val preferences: SourcePreferences = Injekt.get(),
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@ import android.content.pm.PackageInfo
 | 
			
		||||
import android.content.pm.PackageManager
 | 
			
		||||
import androidx.core.content.pm.PackageInfoCompat
 | 
			
		||||
import dalvik.system.PathClassLoader
 | 
			
		||||
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.extension.model.LoadResult
 | 
			
		||||
import eu.kanade.tachiyomi.source.CatalogueSource
 | 
			
		||||
@@ -26,7 +26,7 @@ import uy.kohesive.injekt.injectLazy
 | 
			
		||||
@SuppressLint("PackageManagerGetSignatures")
 | 
			
		||||
internal object ExtensionLoader {
 | 
			
		||||
 | 
			
		||||
    private val preferences: PreferencesHelper by injectLazy()
 | 
			
		||||
    private val preferences: SourcePreferences by injectLazy()
 | 
			
		||||
    private val loadNsfwSource by lazy {
 | 
			
		||||
        preferences.showNsfwSource().get()
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@ package eu.kanade.tachiyomi.source
 | 
			
		||||
 | 
			
		||||
import android.graphics.drawable.Drawable
 | 
			
		||||
import eu.kanade.domain.source.model.SourceData
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
 | 
			
		||||
import eu.kanade.domain.source.service.SourcePreferences
 | 
			
		||||
import eu.kanade.tachiyomi.extension.ExtensionManager
 | 
			
		||||
import uy.kohesive.injekt.Injekt
 | 
			
		||||
import uy.kohesive.injekt.api.get
 | 
			
		||||
@@ -14,7 +14,7 @@ fun Source.getPreferenceKey(): String = "source_$id"
 | 
			
		||||
fun Source.toSourceData(): SourceData = SourceData(id = id, lang = lang, name = name)
 | 
			
		||||
 | 
			
		||||
fun Source.getNameForMangaInfo(): String {
 | 
			
		||||
    val preferences = Injekt.get<PreferencesHelper>()
 | 
			
		||||
    val preferences = Injekt.get<SourcePreferences>()
 | 
			
		||||
    val enabledLanguages = preferences.enabledLanguages().get()
 | 
			
		||||
        .filterNot { it in listOf("all", "other") }
 | 
			
		||||
    val hasOneActiveLanguages = enabledLanguages.size == 1
 | 
			
		||||
 
 | 
			
		||||
@@ -3,9 +3,9 @@ package eu.kanade.tachiyomi.ui.browse.extension
 | 
			
		||||
import android.os.Bundle
 | 
			
		||||
import eu.kanade.domain.extension.interactor.GetExtensionLanguages
 | 
			
		||||
import eu.kanade.domain.source.interactor.ToggleLanguage
 | 
			
		||||
import eu.kanade.domain.source.service.SourcePreferences
 | 
			
		||||
import eu.kanade.presentation.browse.ExtensionFilterState
 | 
			
		||||
import eu.kanade.presentation.browse.ExtensionFilterStateImpl
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
 | 
			
		||||
import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter
 | 
			
		||||
import eu.kanade.tachiyomi.util.lang.launchIO
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.logcat
 | 
			
		||||
@@ -21,7 +21,7 @@ class ExtensionFilterPresenter(
 | 
			
		||||
    private val state: ExtensionFilterStateImpl = ExtensionFilterState() as ExtensionFilterStateImpl,
 | 
			
		||||
    private val getExtensionLanguages: GetExtensionLanguages = Injekt.get(),
 | 
			
		||||
    private val toggleLanguage: ToggleLanguage = Injekt.get(),
 | 
			
		||||
    private val preferences: PreferencesHelper = Injekt.get(),
 | 
			
		||||
    private val preferences: SourcePreferences = Injekt.get(),
 | 
			
		||||
) : BasePresenter<ExtensionFilterController>(), ExtensionFilterState by state {
 | 
			
		||||
 | 
			
		||||
    private val _events = Channel<Event>(Int.MAX_VALUE)
 | 
			
		||||
 
 | 
			
		||||
@@ -3,11 +3,11 @@ package eu.kanade.tachiyomi.ui.browse.extension
 | 
			
		||||
import android.app.Application
 | 
			
		||||
import androidx.annotation.StringRes
 | 
			
		||||
import eu.kanade.domain.extension.interactor.GetExtensionsByType
 | 
			
		||||
import eu.kanade.domain.source.service.SourcePreferences
 | 
			
		||||
import eu.kanade.presentation.browse.ExtensionState
 | 
			
		||||
import eu.kanade.presentation.browse.ExtensionsState
 | 
			
		||||
import eu.kanade.presentation.browse.ExtensionsStateImpl
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
 | 
			
		||||
import eu.kanade.tachiyomi.extension.ExtensionManager
 | 
			
		||||
import eu.kanade.tachiyomi.extension.model.Extension
 | 
			
		||||
import eu.kanade.tachiyomi.extension.model.InstallStep
 | 
			
		||||
@@ -31,7 +31,7 @@ import uy.kohesive.injekt.api.get
 | 
			
		||||
class ExtensionsPresenter(
 | 
			
		||||
    private val presenterScope: CoroutineScope,
 | 
			
		||||
    private val state: ExtensionsStateImpl = ExtensionState() as ExtensionsStateImpl,
 | 
			
		||||
    private val preferences: PreferencesHelper = Injekt.get(),
 | 
			
		||||
    private val preferences: SourcePreferences = Injekt.get(),
 | 
			
		||||
    private val extensionManager: ExtensionManager = Injekt.get(),
 | 
			
		||||
    private val getExtensions: GetExtensionsByType = Injekt.get(),
 | 
			
		||||
) : ExtensionsState by state {
 | 
			
		||||
 
 | 
			
		||||
@@ -150,7 +150,7 @@ class SearchController(
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override fun onTitleClick(source: CatalogueSource) {
 | 
			
		||||
        presenter.preferences.lastUsedSource().set(source.id)
 | 
			
		||||
        presenter.sourcePreferences.lastUsedSource().set(source.id)
 | 
			
		||||
 | 
			
		||||
        router.pushController(SourceSearchController(manga, source, presenter.query))
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -2,9 +2,9 @@ package eu.kanade.tachiyomi.ui.browse.migration.sources
 | 
			
		||||
 | 
			
		||||
import eu.kanade.domain.source.interactor.GetSourcesWithFavoriteCount
 | 
			
		||||
import eu.kanade.domain.source.interactor.SetMigrateSorting
 | 
			
		||||
import eu.kanade.domain.source.service.SourcePreferences
 | 
			
		||||
import eu.kanade.presentation.browse.MigrateSourceState
 | 
			
		||||
import eu.kanade.presentation.browse.MigrateSourceStateImpl
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
 | 
			
		||||
import eu.kanade.tachiyomi.util.lang.launchIO
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.logcat
 | 
			
		||||
import kotlinx.coroutines.CoroutineScope
 | 
			
		||||
@@ -21,7 +21,7 @@ import uy.kohesive.injekt.api.get
 | 
			
		||||
class MigrationSourcesPresenter(
 | 
			
		||||
    private val presenterScope: CoroutineScope,
 | 
			
		||||
    private val state: MigrateSourceStateImpl = MigrateSourceState() as MigrateSourceStateImpl,
 | 
			
		||||
    private val preferences: PreferencesHelper = Injekt.get(),
 | 
			
		||||
    private val preferences: SourcePreferences = Injekt.get(),
 | 
			
		||||
    private val getSourcesWithFavoriteCount: GetSourcesWithFavoriteCount = Injekt.get(),
 | 
			
		||||
    private val setMigrateSorting: SetMigrateSorting = Injekt.get(),
 | 
			
		||||
) : MigrateSourceState by state {
 | 
			
		||||
 
 | 
			
		||||
@@ -5,9 +5,9 @@ import eu.kanade.domain.source.interactor.GetLanguagesWithSources
 | 
			
		||||
import eu.kanade.domain.source.interactor.ToggleLanguage
 | 
			
		||||
import eu.kanade.domain.source.interactor.ToggleSource
 | 
			
		||||
import eu.kanade.domain.source.model.Source
 | 
			
		||||
import eu.kanade.domain.source.service.SourcePreferences
 | 
			
		||||
import eu.kanade.presentation.browse.SourcesFilterState
 | 
			
		||||
import eu.kanade.presentation.browse.SourcesFilterStateImpl
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
 | 
			
		||||
import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter
 | 
			
		||||
import eu.kanade.tachiyomi.util.lang.launchIO
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.logcat
 | 
			
		||||
@@ -24,7 +24,7 @@ class SourcesFilterPresenter(
 | 
			
		||||
    private val getLanguagesWithSources: GetLanguagesWithSources = Injekt.get(),
 | 
			
		||||
    private val toggleSource: ToggleSource = Injekt.get(),
 | 
			
		||||
    private val toggleLanguage: ToggleLanguage = Injekt.get(),
 | 
			
		||||
    private val preferences: PreferencesHelper = Injekt.get(),
 | 
			
		||||
    private val preferences: SourcePreferences = Injekt.get(),
 | 
			
		||||
) : BasePresenter<SourceFilterController>(), SourcesFilterState by state {
 | 
			
		||||
 | 
			
		||||
    private val _events = Channel<Event>(Int.MAX_VALUE)
 | 
			
		||||
 
 | 
			
		||||
@@ -5,6 +5,7 @@ import eu.kanade.domain.source.interactor.ToggleSource
 | 
			
		||||
import eu.kanade.domain.source.interactor.ToggleSourcePin
 | 
			
		||||
import eu.kanade.domain.source.model.Pin
 | 
			
		||||
import eu.kanade.domain.source.model.Source
 | 
			
		||||
import eu.kanade.domain.source.service.SourcePreferences
 | 
			
		||||
import eu.kanade.presentation.browse.SourceUiModel
 | 
			
		||||
import eu.kanade.presentation.browse.SourcesState
 | 
			
		||||
import eu.kanade.presentation.browse.SourcesStateImpl
 | 
			
		||||
@@ -25,6 +26,7 @@ class SourcesPresenter(
 | 
			
		||||
    private val presenterScope: CoroutineScope,
 | 
			
		||||
    private val state: SourcesStateImpl = SourcesState() as SourcesStateImpl,
 | 
			
		||||
    private val preferences: PreferencesHelper = Injekt.get(),
 | 
			
		||||
    private val sourcePreferences: SourcePreferences = Injekt.get(),
 | 
			
		||||
    private val getEnabledSources: GetEnabledSources = Injekt.get(),
 | 
			
		||||
    private val toggleSource: ToggleSource = Injekt.get(),
 | 
			
		||||
    private val toggleSourcePin: ToggleSourcePin = Injekt.get(),
 | 
			
		||||
@@ -79,7 +81,7 @@ class SourcesPresenter(
 | 
			
		||||
 | 
			
		||||
    fun onOpenSource(source: Source) {
 | 
			
		||||
        if (!preferences.incognitoMode().get()) {
 | 
			
		||||
            preferences.lastUsedSource().set(source.id)
 | 
			
		||||
            sourcePreferences.lastUsedSource().set(source.id)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -11,6 +11,7 @@ import androidx.core.view.isVisible
 | 
			
		||||
import androidx.recyclerview.widget.LinearLayoutManager
 | 
			
		||||
import dev.chrisbanes.insetter.applyInsetter
 | 
			
		||||
import eu.kanade.domain.manga.model.Manga
 | 
			
		||||
import eu.kanade.domain.source.service.SourcePreferences
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
 | 
			
		||||
import eu.kanade.tachiyomi.databinding.GlobalSearchControllerBinding
 | 
			
		||||
@@ -34,6 +35,7 @@ open class GlobalSearchController(
 | 
			
		||||
    GlobalSearchAdapter.OnTitleClickListener {
 | 
			
		||||
 | 
			
		||||
    private val preferences: PreferencesHelper by injectLazy()
 | 
			
		||||
    private val sourcePreferences: SourcePreferences by injectLazy()
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Adapter containing search results grouped by lang.
 | 
			
		||||
@@ -174,7 +176,7 @@ open class GlobalSearchController(
 | 
			
		||||
     * @param searchResult result of search.
 | 
			
		||||
     */
 | 
			
		||||
    fun setItems(searchResult: List<GlobalSearchItem>) {
 | 
			
		||||
        if (searchResult.isEmpty() && preferences.searchPinnedSourcesOnly().get()) {
 | 
			
		||||
        if (searchResult.isEmpty() && sourcePreferences.searchPinnedSourcesOnly().get()) {
 | 
			
		||||
            binding.emptyView.show(R.string.no_pinned_sources)
 | 
			
		||||
        } else {
 | 
			
		||||
            binding.emptyView.hide()
 | 
			
		||||
@@ -205,7 +207,7 @@ open class GlobalSearchController(
 | 
			
		||||
     */
 | 
			
		||||
    override fun onTitleClick(source: CatalogueSource) {
 | 
			
		||||
        if (!preferences.incognitoMode().get()) {
 | 
			
		||||
            preferences.lastUsedSource().set(source.id)
 | 
			
		||||
            sourcePreferences.lastUsedSource().set(source.id)
 | 
			
		||||
        }
 | 
			
		||||
        router.pushController(BrowseSourceController(source, presenter.query))
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -6,6 +6,7 @@ import eu.kanade.domain.manga.interactor.InsertManga
 | 
			
		||||
import eu.kanade.domain.manga.interactor.UpdateManga
 | 
			
		||||
import eu.kanade.domain.manga.model.toDbManga
 | 
			
		||||
import eu.kanade.domain.manga.model.toMangaUpdate
 | 
			
		||||
import eu.kanade.domain.source.service.SourcePreferences
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.Manga
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.toDomainManga
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
 | 
			
		||||
@@ -35,6 +36,7 @@ open class GlobalSearchPresenter(
 | 
			
		||||
    private val initialExtensionFilter: String? = null,
 | 
			
		||||
    val sourceManager: SourceManager = Injekt.get(),
 | 
			
		||||
    val preferences: PreferencesHelper = Injekt.get(),
 | 
			
		||||
    val sourcePreferences: SourcePreferences = Injekt.get(),
 | 
			
		||||
    private val getManga: GetManga = Injekt.get(),
 | 
			
		||||
    private val insertManga: InsertManga = Injekt.get(),
 | 
			
		||||
    private val updateManga: UpdateManga = Injekt.get(),
 | 
			
		||||
@@ -96,9 +98,9 @@ open class GlobalSearchPresenter(
 | 
			
		||||
     * @return list containing enabled sources.
 | 
			
		||||
     */
 | 
			
		||||
    protected open fun getEnabledSources(): List<CatalogueSource> {
 | 
			
		||||
        val languages = preferences.enabledLanguages().get()
 | 
			
		||||
        val disabledSourceIds = preferences.disabledSources().get()
 | 
			
		||||
        val pinnedSourceIds = preferences.pinnedSources().get()
 | 
			
		||||
        val languages = sourcePreferences.enabledLanguages().get()
 | 
			
		||||
        val disabledSourceIds = sourcePreferences.disabledSources().get()
 | 
			
		||||
        val pinnedSourceIds = sourcePreferences.pinnedSources().get()
 | 
			
		||||
 | 
			
		||||
        return sourceManager.getCatalogueSources()
 | 
			
		||||
            .filter { it.lang in languages }
 | 
			
		||||
@@ -123,8 +125,8 @@ open class GlobalSearchPresenter(
 | 
			
		||||
            return filteredSources
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        val onlyPinnedSources = preferences.searchPinnedSourcesOnly().get()
 | 
			
		||||
        val pinnedSourceIds = preferences.pinnedSources().get()
 | 
			
		||||
        val onlyPinnedSources = sourcePreferences.searchPinnedSourcesOnly().get()
 | 
			
		||||
        val pinnedSourceIds = sourcePreferences.pinnedSources().get()
 | 
			
		||||
 | 
			
		||||
        return enabledSources
 | 
			
		||||
            .filter { if (onlyPinnedSources) it.id.toString() in pinnedSourceIds else true }
 | 
			
		||||
@@ -156,7 +158,7 @@ open class GlobalSearchPresenter(
 | 
			
		||||
        val initialItems = sources.map { createCatalogueSearchItem(it, null) }
 | 
			
		||||
        var items = initialItems
 | 
			
		||||
 | 
			
		||||
        val pinnedSourceIds = preferences.pinnedSources().get()
 | 
			
		||||
        val pinnedSourceIds = sourcePreferences.pinnedSources().get()
 | 
			
		||||
 | 
			
		||||
        fetchSourcesSubscription?.unsubscribe()
 | 
			
		||||
        fetchSourcesSubscription = Observable.from(sources)
 | 
			
		||||
 
 | 
			
		||||
@@ -31,6 +31,7 @@ import com.bluelinelabs.conductor.RouterTransaction
 | 
			
		||||
import com.google.android.material.navigation.NavigationBarView
 | 
			
		||||
import com.google.android.material.transition.platform.MaterialContainerTransformSharedElementCallback
 | 
			
		||||
import dev.chrisbanes.insetter.applyInsetter
 | 
			
		||||
import eu.kanade.domain.source.service.SourcePreferences
 | 
			
		||||
import eu.kanade.tachiyomi.BuildConfig
 | 
			
		||||
import eu.kanade.tachiyomi.Migrations
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
@@ -78,6 +79,8 @@ import uy.kohesive.injekt.injectLazy
 | 
			
		||||
 | 
			
		||||
class MainActivity : BaseActivity() {
 | 
			
		||||
 | 
			
		||||
    private val sourcePreferences: SourcePreferences by injectLazy()
 | 
			
		||||
 | 
			
		||||
    lateinit var binding: MainActivityBinding
 | 
			
		||||
 | 
			
		||||
    private lateinit var router: Router
 | 
			
		||||
@@ -112,6 +115,7 @@ class MainActivity : BaseActivity() {
 | 
			
		||||
                context = applicationContext,
 | 
			
		||||
                preferences = preferences,
 | 
			
		||||
                networkPreferences = Injekt.get(),
 | 
			
		||||
                sourcePreferences = sourcePreferences,
 | 
			
		||||
            )
 | 
			
		||||
        } else {
 | 
			
		||||
            false
 | 
			
		||||
@@ -254,7 +258,7 @@ class MainActivity : BaseActivity() {
 | 
			
		||||
            .onEach { setUnreadUpdatesBadge() }
 | 
			
		||||
            .launchIn(lifecycleScope)
 | 
			
		||||
 | 
			
		||||
        preferences.extensionUpdatesCount()
 | 
			
		||||
        sourcePreferences.extensionUpdatesCount()
 | 
			
		||||
            .asHotFlow { setExtensionsBadge() }
 | 
			
		||||
            .launchIn(lifecycleScope)
 | 
			
		||||
 | 
			
		||||
@@ -371,7 +375,7 @@ class MainActivity : BaseActivity() {
 | 
			
		||||
                    this@MainActivity,
 | 
			
		||||
                    fromAvailableExtensionList = true,
 | 
			
		||||
                )?.let { pendingUpdates ->
 | 
			
		||||
                    preferences.extensionUpdatesCount().set(pendingUpdates.size)
 | 
			
		||||
                    sourcePreferences.extensionUpdatesCount().set(pendingUpdates.size)
 | 
			
		||||
                }
 | 
			
		||||
            } catch (e: Exception) {
 | 
			
		||||
                logcat(LogPriority.ERROR, e)
 | 
			
		||||
@@ -392,7 +396,7 @@ class MainActivity : BaseActivity() {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun setExtensionsBadge() {
 | 
			
		||||
        val updates = preferences.extensionUpdatesCount().get()
 | 
			
		||||
        val updates = sourcePreferences.extensionUpdatesCount().get()
 | 
			
		||||
        if (updates > 0) {
 | 
			
		||||
            nav.getOrCreateBadge(R.id.nav_browse).apply {
 | 
			
		||||
                number = updates
 | 
			
		||||
 
 | 
			
		||||
@@ -2,10 +2,10 @@ package eu.kanade.tachiyomi.ui.setting
 | 
			
		||||
 | 
			
		||||
import androidx.fragment.app.FragmentActivity
 | 
			
		||||
import androidx.preference.PreferenceScreen
 | 
			
		||||
import eu.kanade.domain.source.service.SourcePreferences
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
import eu.kanade.tachiyomi.extension.ExtensionUpdateJob
 | 
			
		||||
import eu.kanade.tachiyomi.util.preference.bindTo
 | 
			
		||||
import eu.kanade.tachiyomi.util.preference.defaultValue
 | 
			
		||||
import eu.kanade.tachiyomi.util.preference.infoPreference
 | 
			
		||||
import eu.kanade.tachiyomi.util.preference.onChange
 | 
			
		||||
import eu.kanade.tachiyomi.util.preference.preferenceCategory
 | 
			
		||||
@@ -14,10 +14,12 @@ import eu.kanade.tachiyomi.util.preference.summaryRes
 | 
			
		||||
import eu.kanade.tachiyomi.util.preference.switchPreference
 | 
			
		||||
import eu.kanade.tachiyomi.util.preference.titleRes
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.AuthenticatorUtil.isAuthenticationSupported
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys
 | 
			
		||||
import uy.kohesive.injekt.injectLazy
 | 
			
		||||
 | 
			
		||||
class SettingsBrowseController : SettingsController() {
 | 
			
		||||
 | 
			
		||||
    private val sourcePreferences: SourcePreferences by injectLazy()
 | 
			
		||||
 | 
			
		||||
    override fun setupPreferenceScreen(screen: PreferenceScreen) = screen.apply {
 | 
			
		||||
        titleRes = R.string.browse
 | 
			
		||||
 | 
			
		||||
@@ -25,7 +27,7 @@ class SettingsBrowseController : SettingsController() {
 | 
			
		||||
            titleRes = R.string.label_sources
 | 
			
		||||
 | 
			
		||||
            switchPreference {
 | 
			
		||||
                bindTo(preferences.duplicatePinnedSources())
 | 
			
		||||
                bindTo(sourcePreferences.duplicatePinnedSources())
 | 
			
		||||
                titleRes = R.string.pref_duplicate_pinned_sources
 | 
			
		||||
                summaryRes = R.string.pref_duplicate_pinned_sources_summary
 | 
			
		||||
            }
 | 
			
		||||
@@ -50,9 +52,8 @@ class SettingsBrowseController : SettingsController() {
 | 
			
		||||
            titleRes = R.string.action_global_search
 | 
			
		||||
 | 
			
		||||
            switchPreference {
 | 
			
		||||
                key = Keys.searchPinnedSourcesOnly
 | 
			
		||||
                bindTo(sourcePreferences.searchPinnedSourcesOnly())
 | 
			
		||||
                titleRes = R.string.pref_search_pinned_sources_only
 | 
			
		||||
                defaultValue = false
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -60,7 +61,7 @@ class SettingsBrowseController : SettingsController() {
 | 
			
		||||
            titleRes = R.string.pref_category_nsfw_content
 | 
			
		||||
 | 
			
		||||
            switchPreference {
 | 
			
		||||
                bindTo(preferences.showNsfwSource())
 | 
			
		||||
                bindTo(sourcePreferences.showNsfwSource())
 | 
			
		||||
                titleRes = R.string.pref_show_nsfw_source
 | 
			
		||||
                summaryRes = R.string.requires_app_restart
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user