Split the rest of the preferences in PreferencesHelper (#8074)

* Split the reset of the preferences in PreferencesHelper

* Capitalize ThemeMode

(cherry picked from commit 29fa93e829ca7f9c3a28c58f3de146bc2bd15aad)

# Conflicts:
#	app/build.gradle.kts
#	app/src/main/java/eu/kanade/domain/manga/model/Manga.kt
#	app/src/main/java/eu/kanade/tachiyomi/App.kt
#	app/src/main/java/eu/kanade/tachiyomi/AppModule.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceValues.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt
#	app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionGithubApi.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/base/delegate/SecureActivityDelegate.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchController.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchPresenter.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesPresenter.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySettingsSheet.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt
This commit is contained in:
Andreas 2022-09-25 16:07:06 +02:00 committed by Jobobby04
parent 0d0513cff7
commit 1f4bfc4764
91 changed files with 578 additions and 465 deletions

View File

@ -28,7 +28,7 @@ android {
applicationId = "eu.kanade.tachiyomi.sy" applicationId = "eu.kanade.tachiyomi.sy"
minSdk = AndroidConfig.minSdk minSdk = AndroidConfig.minSdk
targetSdk = AndroidConfig.targetSdk targetSdk = AndroidConfig.targetSdk
versionCode = 41 versionCode = 42
versionName = "1.8.5" versionName = "1.8.5"
buildConfigField("String", "COMMIT_COUNT", "\"${getCommitCount()}\"") buildConfigField("String", "COMMIT_COUNT", "\"${getCommitCount()}\"")

View File

@ -1,69 +1,15 @@
package eu.kanade.tachiyomi.data.preference package eu.kanade.domain
import android.content.Context
import android.os.Build
import eu.kanade.tachiyomi.core.preference.PreferenceStore import eu.kanade.tachiyomi.core.preference.PreferenceStore
import eu.kanade.tachiyomi.core.preference.getEnum
import eu.kanade.tachiyomi.util.system.DeviceUtil
import eu.kanade.tachiyomi.util.system.isDynamicColorAvailable
import java.text.DateFormat
import java.text.SimpleDateFormat
import java.util.Locale
import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys
import eu.kanade.tachiyomi.data.preference.PreferenceValues as Values
class PreferencesHelper( class UnsortedPreferences(
val context: Context,
private val preferenceStore: PreferenceStore, private val preferenceStore: PreferenceStore,
) { ) {
fun confirmExit() = preferenceStore.getBoolean("pref_confirm_exit", false) // SY -->
fun sideNavIconAlignment() = preferenceStore.getInt("pref_side_nav_icon_alignment", 0)
fun themeMode() = preferenceStore.getEnum(
"pref_theme_mode_key",
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { Values.ThemeMode.system } else { Values.ThemeMode.light },
)
fun appTheme() = preferenceStore.getEnum(
"pref_app_theme",
if (DeviceUtil.isDynamicColorAvailable) { Values.AppTheme.MONET } else { Values.AppTheme.DEFAULT },
)
fun themeDarkAmoled() = preferenceStore.getBoolean("pref_theme_dark_amoled_key", false)
fun lastVersionCode() = preferenceStore.getInt("last_version_code", 0)
fun relativeTime() = preferenceStore.getInt("relative_time", 7)
fun dateFormat(format: String = preferenceStore.getString(Keys.dateFormat, "").get()): DateFormat = when (format) {
"" -> DateFormat.getDateInstance(DateFormat.SHORT)
else -> SimpleDateFormat(format, Locale.getDefault())
}
fun downloadedOnly() = preferenceStore.getBoolean("pref_downloaded_only", false)
fun automaticExtUpdates() = preferenceStore.getBoolean("automatic_ext_updates", true)
fun lastAppCheck() = preferenceStore.getLong("last_app_check", 0)
fun lastExtCheck() = preferenceStore.getLong("last_ext_check", 0)
fun migrateFlags() = preferenceStore.getInt("migrate_flags", Int.MAX_VALUE) fun migrateFlags() = preferenceStore.getInt("migrate_flags", Int.MAX_VALUE)
fun incognitoMode() = preferenceStore.getBoolean("incognito_mode", false)
fun tabletUiMode() = preferenceStore.getEnum("tablet_ui_mode", Values.TabletUiMode.AUTOMATIC)
fun extensionInstaller() = preferenceStore.getEnum(
"extension_installer",
if (DeviceUtil.isMiui) Values.ExtensionInstaller.LEGACY else Values.ExtensionInstaller.PACKAGEINSTALLER,
)
fun autoClearChapterCache() = preferenceStore.getBoolean("auto_clear_chapter_cache", false)
// SY -->
fun defaultMangaOrder() = preferenceStore.getString("default_manga_order", "") fun defaultMangaOrder() = preferenceStore.getString("default_manga_order", "")
fun migrationSources() = preferenceStore.getString("migrate_sources", "") fun migrationSources() = preferenceStore.getString("migrate_sources", "")
@ -111,12 +57,8 @@ class PreferencesHelper(
fun exhShowSettingsUploadWarning() = preferenceStore.getBoolean("eh_showSettingsUploadWarning2", true) fun exhShowSettingsUploadWarning() = preferenceStore.getBoolean("eh_showSettingsUploadWarning2", true)
fun expandFilters() = preferenceStore.getBoolean("eh_expand_filters", false)
fun autoSolveCaptcha() = preferenceStore.getBoolean("eh_autosolve_captchas", false) fun autoSolveCaptcha() = preferenceStore.getBoolean("eh_autosolve_captchas", false)
fun ehLastVersionCode() = preferenceStore.getInt("eh_last_version_code", 0)
fun logLevel() = preferenceStore.getInt("eh_log_level", 0) fun logLevel() = preferenceStore.getInt("eh_log_level", 0)
fun exhAutoUpdateFrequency() = preferenceStore.getInt("eh_auto_update_frequency", 1) fun exhAutoUpdateFrequency() = preferenceStore.getInt("eh_auto_update_frequency", 1)
@ -137,18 +79,10 @@ class PreferencesHelper(
"false,false,false,false,false,false,false,false,false,false", "false,false,false,false,false,false,false,false,false,false",
) )
fun feedTabInFront() = preferenceStore.getBoolean("latest_tab_position", false)
fun sourceSorting() = preferenceStore.getInt("sources_sort", 0) fun sourceSorting() = preferenceStore.getInt("sources_sort", 0)
fun recommendsInOverflow() = preferenceStore.getBoolean("recommends_in_overflow", false)
fun mergeInOverflow() = preferenceStore.getBoolean("merge_in_overflow", false)
fun enhancedEHentaiView() = preferenceStore.getBoolean("enhanced_e_hentai_view", true) fun enhancedEHentaiView() = preferenceStore.getBoolean("enhanced_e_hentai_view", true)
fun useNewSourceNavigation() = preferenceStore.getBoolean("use_new_source_navigation", true)
fun preferredMangaDexId() = preferenceStore.getString("preferred_mangaDex_id", "0") fun preferredMangaDexId() = preferenceStore.getString("preferred_mangaDex_id", "0")
fun mangadexSyncToLibraryIndexes() = preferenceStore.getStringSet("pref_mangadex_sync_to_library_indexes", emptySet()) fun mangadexSyncToLibraryIndexes() = preferenceStore.getStringSet("pref_mangadex_sync_to_library_indexes", emptySet())
@ -156,10 +90,4 @@ class PreferencesHelper(
fun allowLocalSourceHiddenFolders() = preferenceStore.getBoolean("allow_local_source_hidden_folders", false) fun allowLocalSourceHiddenFolders() = preferenceStore.getBoolean("allow_local_source_hidden_folders", false)
fun extensionRepos() = preferenceStore.getStringSet("extension_repos", emptySet()) fun extensionRepos() = preferenceStore.getStringSet("extension_repos", emptySet())
fun bottomBarLabels() = preferenceStore.getBoolean("pref_show_bottom_bar_labels", true)
fun showNavUpdates() = preferenceStore.getBoolean("pref_show_updates_button", true)
fun showNavHistory() = preferenceStore.getBoolean("pref_show_history_button", true)
} }

View File

@ -0,0 +1,26 @@
package eu.kanade.domain.base
import android.content.Context
import eu.kanade.tachiyomi.core.preference.PreferenceStore
import eu.kanade.tachiyomi.core.preference.getEnum
import eu.kanade.tachiyomi.data.preference.PreferenceValues
import eu.kanade.tachiyomi.util.system.DeviceUtil
class BasePreferences(
val context: Context,
private val preferenceStore: PreferenceStore,
) {
fun confirmExit() = preferenceStore.getBoolean("pref_confirm_exit", false)
fun downloadedOnly() = preferenceStore.getBoolean("pref_downloaded_only", false)
fun incognitoMode() = preferenceStore.getBoolean("incognito_mode", false)
fun automaticExtUpdates() = preferenceStore.getBoolean("automatic_ext_updates", true)
fun extensionInstaller() = preferenceStore.getEnum(
"extension_installer",
if (DeviceUtil.isMiui) PreferenceValues.ExtensionInstaller.LEGACY else PreferenceValues.ExtensionInstaller.PACKAGEINSTALLER,
)
}

View File

@ -110,6 +110,8 @@ class LibraryPreferences(
sortChapterByAscendingOrDescending().set(if (manga.sortDescending()) Manga.CHAPTER_SORT_DESC else Manga.CHAPTER_SORT_ASC) sortChapterByAscendingOrDescending().set(if (manga.sortDescending()) Manga.CHAPTER_SORT_DESC else Manga.CHAPTER_SORT_ASC)
} }
fun autoClearChapterCache() = preferenceStore.getBoolean("auto_clear_chapter_cache", false)
// endregion // endregion
// SY --> // SY -->

View File

@ -2,10 +2,10 @@ package eu.kanade.domain.manga.model
import eu.kanade.data.listOfStringsAdapter import eu.kanade.data.listOfStringsAdapter
import eu.kanade.data.listOfStringsAndAdapter import eu.kanade.data.listOfStringsAndAdapter
import eu.kanade.domain.base.BasePreferences
import eu.kanade.tachiyomi.data.cache.CoverCache import eu.kanade.tachiyomi.data.cache.CoverCache
import eu.kanade.tachiyomi.data.database.models.MangaImpl import eu.kanade.tachiyomi.data.database.models.MangaImpl
import eu.kanade.tachiyomi.data.library.CustomMangaManager import eu.kanade.tachiyomi.data.library.CustomMangaManager
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.source.LocalSource import eu.kanade.tachiyomi.source.LocalSource
import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.widget.ExtendedNavigationView import eu.kanade.tachiyomi.widget.ExtendedNavigationView
@ -112,7 +112,7 @@ data class Manga(
} }
fun forceDownloaded(): Boolean { fun forceDownloaded(): Boolean {
return favorite && Injekt.get<PreferencesHelper>().downloadedOnly().get() return favorite && Injekt.get<BasePreferences>().downloadedOnly().get()
} }
fun sortDescending(): Boolean { fun sortDescending(): Boolean {

View File

@ -1,9 +1,9 @@
package eu.kanade.domain.source.interactor package eu.kanade.domain.source.interactor
import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.domain.UnsortedPreferences
import eu.kanade.tachiyomi.util.preference.plusAssign import eu.kanade.tachiyomi.util.preference.plusAssign
class CreateSourceRepo(private val preferences: PreferencesHelper) { class CreateSourceRepo(private val preferences: UnsortedPreferences) {
fun await(name: String): Result { fun await(name: String): Result {
// Do not allow duplicate repos. // Do not allow duplicate repos.

View File

@ -1,8 +1,8 @@
package eu.kanade.domain.source.interactor package eu.kanade.domain.source.interactor
import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.domain.UnsortedPreferences
class DeleteSourceRepos(private val preferences: PreferencesHelper) { class DeleteSourceRepos(private val preferences: UnsortedPreferences) {
fun await(repos: List<String>) { fun await(repos: List<String>) {
preferences.extensionRepos().set( preferences.extensionRepos().set(

View File

@ -1,12 +1,12 @@
package eu.kanade.domain.source.interactor package eu.kanade.domain.source.interactor
import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.domain.ui.UiPreferences
import eu.kanade.tachiyomi.ui.browse.source.SourcesController import eu.kanade.tachiyomi.ui.browse.source.SourcesController
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
class GetShowLatest( class GetShowLatest(
private val preferences: PreferencesHelper, private val preferences: UiPreferences,
) { ) {
fun subscribe(mode: SourcesController.Mode): Flow<Boolean> { fun subscribe(mode: SourcesController.Mode): Flow<Boolean> {

View File

@ -1,10 +1,10 @@
package eu.kanade.domain.source.interactor package eu.kanade.domain.source.interactor
import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.domain.UnsortedPreferences
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
class GetSourceRepos(private val preferences: PreferencesHelper) { class GetSourceRepos(private val preferences: UnsortedPreferences) {
fun subscribe(): Flow<List<String>> { fun subscribe(): Flow<List<String>> {
return preferences.extensionRepos().changes().map { it.sortedWith(String.CASE_INSENSITIVE_ORDER) } return preferences.extensionRepos().changes().map { it.sortedWith(String.CASE_INSENSITIVE_ORDER) }

View File

@ -0,0 +1,65 @@
package eu.kanade.domain.ui
import android.os.Build
import eu.kanade.domain.ui.model.AppTheme
import eu.kanade.domain.ui.model.TabletUiMode
import eu.kanade.domain.ui.model.ThemeMode
import eu.kanade.tachiyomi.core.preference.PreferenceStore
import eu.kanade.tachiyomi.core.preference.getEnum
import eu.kanade.tachiyomi.util.system.DeviceUtil
import eu.kanade.tachiyomi.util.system.isDynamicColorAvailable
import java.text.DateFormat
import java.text.SimpleDateFormat
import java.util.Locale
class UiPreferences(
private val preferenceStore: PreferenceStore,
) {
fun sideNavIconAlignment() = preferenceStore.getInt("pref_side_nav_icon_alignment", 0)
fun themeMode() = preferenceStore.getEnum(
"pref_theme_mode_key",
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { ThemeMode.SYSTEM } else { ThemeMode.LIGHT },
)
fun appTheme() = preferenceStore.getEnum(
"pref_app_theme",
if (DeviceUtil.isDynamicColorAvailable) { AppTheme.MONET } else { AppTheme.DEFAULT },
)
fun themeDarkAmoled() = preferenceStore.getBoolean("pref_theme_dark_amoled_key", false)
fun relativeTime() = preferenceStore.getInt("relative_time", 7)
fun dateFormat() = preferenceStore.getString("app_date_format", "")
fun tabletUiMode() = preferenceStore.getEnum("tablet_ui_mode", TabletUiMode.AUTOMATIC)
// SY -->
fun expandFilters() = preferenceStore.getBoolean("eh_expand_filters", false)
fun feedTabInFront() = preferenceStore.getBoolean("latest_tab_position", false)
fun recommendsInOverflow() = preferenceStore.getBoolean("recommends_in_overflow", false)
fun mergeInOverflow() = preferenceStore.getBoolean("merge_in_overflow", false)
fun useNewSourceNavigation() = preferenceStore.getBoolean("use_new_source_navigation", true)
fun bottomBarLabels() = preferenceStore.getBoolean("pref_show_bottom_bar_labels", true)
fun showNavUpdates() = preferenceStore.getBoolean("pref_show_updates_button", true)
fun showNavHistory() = preferenceStore.getBoolean("pref_show_history_button", true)
// SY <--
companion object {
fun dateFormat(format: String): DateFormat = when (format) {
"" -> DateFormat.getDateInstance(DateFormat.SHORT)
else -> SimpleDateFormat(format, Locale.getDefault())
}
}
}

View File

@ -0,0 +1,26 @@
package eu.kanade.domain.ui.model
import eu.kanade.tachiyomi.R
enum class AppTheme(val titleResId: Int?) {
DEFAULT(R.string.label_default),
MONET(R.string.theme_monet),
GREEN_APPLE(R.string.theme_greenapple),
LAVENDER(R.string.theme_lavender),
MIDNIGHT_DUSK(R.string.theme_midnightdusk),
STRAWBERRY_DAIQUIRI(R.string.theme_strawberrydaiquiri),
TAKO(R.string.theme_tako),
TEALTURQUOISE(R.string.theme_tealturquoise),
TIDAL_WAVE(R.string.theme_tidalwave),
YINYANG(R.string.theme_yinyang),
YOTSUBA(R.string.theme_yotsuba),
// Deprecated
DARK_BLUE(null),
HOT_PINK(null),
BLUE(null),
// SY -->
PURE_RED(null),
// SY <--
}

View File

@ -0,0 +1,10 @@
package eu.kanade.domain.ui.model
import eu.kanade.tachiyomi.R
enum class TabletUiMode(val titleResId: Int) {
AUTOMATIC(R.string.automatic_background),
ALWAYS(R.string.lock_always),
LANDSCAPE(R.string.landscape),
NEVER(R.string.lock_never),
}

View File

@ -0,0 +1,7 @@
package eu.kanade.domain.ui.model
enum class ThemeMode {
LIGHT,
DARK,
SYSTEM,
}

View File

@ -15,6 +15,7 @@ import androidx.compose.ui.graphics.Brush
import androidx.paging.compose.LazyPagingItems import androidx.paging.compose.LazyPagingItems
import androidx.paging.compose.items import androidx.paging.compose.items
import eu.kanade.domain.history.model.HistoryWithRelations import eu.kanade.domain.history.model.HistoryWithRelations
import eu.kanade.domain.ui.UiPreferences
import eu.kanade.presentation.components.RelativeDateHeader import eu.kanade.presentation.components.RelativeDateHeader
import eu.kanade.presentation.components.ScrollbarLazyColumn import eu.kanade.presentation.components.ScrollbarLazyColumn
import eu.kanade.presentation.history.HistoryUiModel import eu.kanade.presentation.history.HistoryUiModel
@ -22,7 +23,6 @@ import eu.kanade.presentation.util.bottomNavPaddingValues
import eu.kanade.presentation.util.plus import eu.kanade.presentation.util.plus
import eu.kanade.presentation.util.shimmerGradient import eu.kanade.presentation.util.shimmerGradient
import eu.kanade.presentation.util.topPaddingValues import eu.kanade.presentation.util.topPaddingValues
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get import uy.kohesive.injekt.api.get
import java.text.DateFormat import java.text.DateFormat
@ -34,10 +34,10 @@ fun HistoryContent(
onClickCover: (HistoryWithRelations) -> Unit, onClickCover: (HistoryWithRelations) -> Unit,
onClickResume: (HistoryWithRelations) -> Unit, onClickResume: (HistoryWithRelations) -> Unit,
onClickDelete: (HistoryWithRelations) -> Unit, onClickDelete: (HistoryWithRelations) -> Unit,
preferences: PreferencesHelper = Injekt.get(), preferences: UiPreferences = Injekt.get(),
) { ) {
val relativeTime: Int = remember { preferences.relativeTime().get() } val relativeTime: Int = remember { preferences.relativeTime().get() }
val dateFormat: DateFormat = remember { preferences.dateFormat() } val dateFormat: DateFormat = remember { UiPreferences.dateFormat(preferences.dateFormat().get()) }
ScrollbarLazyColumn( ScrollbarLazyColumn(
contentPadding = contentPadding + bottomNavPaddingValues + topPaddingValues, contentPadding = contentPadding + bottomNavPaddingValues + topPaddingValues,

View File

@ -42,6 +42,9 @@ import com.ms_square.debugoverlay.modules.FpsModule
import eu.kanade.data.DatabaseHandler import eu.kanade.data.DatabaseHandler
import eu.kanade.domain.DomainModule import eu.kanade.domain.DomainModule
import eu.kanade.domain.SYDomainModule import eu.kanade.domain.SYDomainModule
import eu.kanade.domain.base.BasePreferences
import eu.kanade.domain.ui.UiPreferences
import eu.kanade.domain.ui.model.ThemeMode
import eu.kanade.tachiyomi.data.coil.DomainMangaKeyer import eu.kanade.tachiyomi.data.coil.DomainMangaKeyer
import eu.kanade.tachiyomi.data.coil.MangaCoverFetcher import eu.kanade.tachiyomi.data.coil.MangaCoverFetcher
import eu.kanade.tachiyomi.data.coil.MangaCoverKeyer import eu.kanade.tachiyomi.data.coil.MangaCoverKeyer
@ -50,8 +53,6 @@ import eu.kanade.tachiyomi.data.coil.PagePreviewFetcher
import eu.kanade.tachiyomi.data.coil.PagePreviewKeyer import eu.kanade.tachiyomi.data.coil.PagePreviewKeyer
import eu.kanade.tachiyomi.data.coil.TachiyomiImageDecoder import eu.kanade.tachiyomi.data.coil.TachiyomiImageDecoder
import eu.kanade.tachiyomi.data.notification.Notifications import eu.kanade.tachiyomi.data.notification.Notifications
import eu.kanade.tachiyomi.data.preference.PreferenceValues
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.glance.UpdatesGridGlanceWidget import eu.kanade.tachiyomi.glance.UpdatesGridGlanceWidget
import eu.kanade.tachiyomi.network.NetworkHelper import eu.kanade.tachiyomi.network.NetworkHelper
import eu.kanade.tachiyomi.network.NetworkPreferences import eu.kanade.tachiyomi.network.NetworkPreferences
@ -88,7 +89,8 @@ import kotlin.time.Duration.Companion.days
class App : Application(), DefaultLifecycleObserver, ImageLoaderFactory { class App : Application(), DefaultLifecycleObserver, ImageLoaderFactory {
private val preferences: PreferencesHelper by injectLazy() private val basePreferences: BasePreferences by injectLazy()
private val uiPreferences: UiPreferences by injectLazy()
private val networkPreferences: NetworkPreferences by injectLazy() private val networkPreferences: NetworkPreferences by injectLazy()
private val disableIncognitoReceiver = DisableIncognitoReceiver() private val disableIncognitoReceiver = DisableIncognitoReceiver()
@ -128,7 +130,7 @@ class App : Application(), DefaultLifecycleObserver, ImageLoaderFactory {
ProcessLifecycleOwner.get().lifecycle.addObserver(this) ProcessLifecycleOwner.get().lifecycle.addObserver(this)
// Show notification to disable Incognito Mode when it's enabled // Show notification to disable Incognito Mode when it's enabled
preferences.incognitoMode().changes() basePreferences.incognitoMode().changes()
.onEach { enabled -> .onEach { enabled ->
val notificationManager = NotificationManagerCompat.from(this) val notificationManager = NotificationManagerCompat.from(this)
if (enabled) { if (enabled) {
@ -155,13 +157,13 @@ class App : Application(), DefaultLifecycleObserver, ImageLoaderFactory {
} }
.launchIn(ProcessLifecycleOwner.get().lifecycleScope) .launchIn(ProcessLifecycleOwner.get().lifecycleScope)
preferences.themeMode() uiPreferences.themeMode()
.asHotFlow { .asHotFlow {
AppCompatDelegate.setDefaultNightMode( AppCompatDelegate.setDefaultNightMode(
when (it) { when (it) {
PreferenceValues.ThemeMode.light -> AppCompatDelegate.MODE_NIGHT_NO ThemeMode.LIGHT -> AppCompatDelegate.MODE_NIGHT_NO
PreferenceValues.ThemeMode.dark -> AppCompatDelegate.MODE_NIGHT_YES ThemeMode.DARK -> AppCompatDelegate.MODE_NIGHT_YES
PreferenceValues.ThemeMode.system -> AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM ThemeMode.SYSTEM -> AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM
}, },
) )
}.launchIn(ProcessLifecycleOwner.get().lifecycleScope) }.launchIn(ProcessLifecycleOwner.get().lifecycleScope)
@ -346,7 +348,7 @@ class App : Application(), DefaultLifecycleObserver, ImageLoaderFactory {
private var registered = false private var registered = false
override fun onReceive(context: Context, intent: Intent) { override fun onReceive(context: Context, intent: Intent) {
preferences.incognitoMode().set(false) basePreferences.incognitoMode().set(false)
} }
fun register() { fun register() {

View File

@ -16,11 +16,14 @@ import eu.kanade.data.dateAdapter
import eu.kanade.data.listOfLongsAdapter import eu.kanade.data.listOfLongsAdapter
import eu.kanade.data.listOfStringsAdapter import eu.kanade.data.listOfStringsAdapter
import eu.kanade.data.listOfStringsAndAdapter import eu.kanade.data.listOfStringsAndAdapter
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.domain.backup.service.BackupPreferences import eu.kanade.domain.backup.service.BackupPreferences
import eu.kanade.domain.base.BasePreferences
import eu.kanade.domain.download.service.DownloadPreferences import eu.kanade.domain.download.service.DownloadPreferences
import eu.kanade.domain.library.service.LibraryPreferences import eu.kanade.domain.library.service.LibraryPreferences
import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.domain.track.service.TrackPreferences import eu.kanade.domain.track.service.TrackPreferences
import eu.kanade.domain.ui.UiPreferences
import eu.kanade.tachiyomi.core.preference.AndroidPreferenceStore import eu.kanade.tachiyomi.core.preference.AndroidPreferenceStore
import eu.kanade.tachiyomi.core.preference.PreferenceStore import eu.kanade.tachiyomi.core.preference.PreferenceStore
import eu.kanade.tachiyomi.core.provider.AndroidBackupFolderProvider import eu.kanade.tachiyomi.core.provider.AndroidBackupFolderProvider
@ -31,7 +34,6 @@ import eu.kanade.tachiyomi.data.cache.CoverCache
import eu.kanade.tachiyomi.data.cache.PagePreviewCache import eu.kanade.tachiyomi.data.cache.PagePreviewCache
import eu.kanade.tachiyomi.data.download.DownloadManager import eu.kanade.tachiyomi.data.download.DownloadManager
import eu.kanade.tachiyomi.data.library.CustomMangaManager import eu.kanade.tachiyomi.data.library.CustomMangaManager
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.saver.ImageSaver import eu.kanade.tachiyomi.data.saver.ImageSaver
import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.data.track.TrackManager
import eu.kanade.tachiyomi.data.track.job.DelayedTrackingStore import eu.kanade.tachiyomi.data.track.job.DelayedTrackingStore
@ -209,10 +211,10 @@ class PreferenceModule(val application: Application) : InjektModule {
) )
} }
addSingletonFactory { addSingletonFactory {
PreferencesHelper( UiPreferences(get())
context = application, }
preferenceStore = get(), addSingletonFactory {
) BasePreferences(application, get())
} }
} }
} }
@ -226,6 +228,10 @@ class SYPreferenceModule(val application: Application) : InjektModule {
preferenceStore = get(), preferenceStore = get(),
) )
} }
addSingletonFactory {
UnsortedPreferences(get())
}
} }
} }
// SY <-- // SY <--

View File

@ -5,14 +5,16 @@ import android.os.Build
import androidx.core.content.edit import androidx.core.content.edit
import androidx.preference.PreferenceManager import androidx.preference.PreferenceManager
import eu.kanade.domain.backup.service.BackupPreferences import eu.kanade.domain.backup.service.BackupPreferences
import eu.kanade.domain.base.BasePreferences
import eu.kanade.domain.library.service.LibraryPreferences import eu.kanade.domain.library.service.LibraryPreferences
import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.domain.ui.UiPreferences
import eu.kanade.tachiyomi.core.preference.PreferenceStore
import eu.kanade.tachiyomi.core.security.SecurityPreferences import eu.kanade.tachiyomi.core.security.SecurityPreferences
import eu.kanade.tachiyomi.data.backup.BackupCreatorJob import eu.kanade.tachiyomi.data.backup.BackupCreatorJob
import eu.kanade.tachiyomi.data.library.LibraryUpdateJob import eu.kanade.tachiyomi.data.library.LibraryUpdateJob
import eu.kanade.tachiyomi.data.preference.MANGA_NON_COMPLETED import eu.kanade.tachiyomi.data.preference.MANGA_NON_COMPLETED
import eu.kanade.tachiyomi.data.preference.PreferenceValues import eu.kanade.tachiyomi.data.preference.PreferenceValues
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.data.track.TrackManager
import eu.kanade.tachiyomi.data.updater.AppUpdateJob import eu.kanade.tachiyomi.data.updater.AppUpdateJob
import eu.kanade.tachiyomi.extension.ExtensionUpdateJob import eu.kanade.tachiyomi.extension.ExtensionUpdateJob
@ -41,7 +43,9 @@ object Migrations {
*/ */
fun upgrade( fun upgrade(
context: Context, context: Context,
preferences: PreferencesHelper, preferenceStore: PreferenceStore,
basePreferences: BasePreferences,
uiPreferences: UiPreferences,
networkPreferences: NetworkPreferences, networkPreferences: NetworkPreferences,
sourcePreferences: SourcePreferences, sourcePreferences: SourcePreferences,
securityPreferences: SecurityPreferences, securityPreferences: SecurityPreferences,
@ -49,9 +53,10 @@ object Migrations {
readerPreferences: ReaderPreferences, readerPreferences: ReaderPreferences,
backupPreferences: BackupPreferences, backupPreferences: BackupPreferences,
): Boolean { ): Boolean {
val oldVersion = preferences.lastVersionCode().get() val lastVersionCode = preferenceStore.getInt("last_version_code", 0)
val oldVersion = lastVersionCode.get()
if (oldVersion < BuildConfig.VERSION_CODE) { if (oldVersion < BuildConfig.VERSION_CODE) {
preferences.lastVersionCode().set(BuildConfig.VERSION_CODE) lastVersionCode.set(BuildConfig.VERSION_CODE)
// Always set up background tasks to ensure they're running // Always set up background tasks to ensure they're running
if (BuildConfig.INCLUDE_UPDATER) { if (BuildConfig.INCLUDE_UPDATER) {
@ -266,8 +271,8 @@ object Migrations {
if (oldSecureScreen) { if (oldSecureScreen) {
securityPreferences.secureScreen().set(SecurityPreferences.SecureScreenMode.ALWAYS) securityPreferences.secureScreen().set(SecurityPreferences.SecureScreenMode.ALWAYS)
} }
if (DeviceUtil.isMiui && preferences.extensionInstaller().get() == PreferenceValues.ExtensionInstaller.PACKAGEINSTALLER) { if (DeviceUtil.isMiui && basePreferences.extensionInstaller().get() == PreferenceValues.ExtensionInstaller.PACKAGEINSTALLER) {
preferences.extensionInstaller().set(PreferenceValues.ExtensionInstaller.LEGACY) basePreferences.extensionInstaller().set(PreferenceValues.ExtensionInstaller.LEGACY)
} }
} }
if (oldVersion < 76) { if (oldVersion < 76) {
@ -329,6 +334,14 @@ object Migrations {
} }
} }
} }
if (oldVersion < 86) {
if (uiPreferences.themeMode().isSet()) {
prefs.edit {
val themeMode = prefs.getString(uiPreferences.themeMode().key(), null) ?: return@edit
putString(uiPreferences.themeMode().key(), themeMode.uppercase())
}
}
}
return true return true
} }

View File

@ -7,6 +7,7 @@ import android.os.IBinder
import android.os.PowerManager import android.os.PowerManager
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import eu.kanade.data.chapter.NoChaptersException import eu.kanade.data.chapter.NoChaptersException
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.domain.category.interactor.GetCategories import eu.kanade.domain.category.interactor.GetCategories
import eu.kanade.domain.category.model.Category import eu.kanade.domain.category.model.Category
import eu.kanade.domain.chapter.interactor.GetChapterByMangaId import eu.kanade.domain.chapter.interactor.GetChapterByMangaId
@ -44,7 +45,6 @@ import eu.kanade.tachiyomi.data.notification.Notifications
import eu.kanade.tachiyomi.data.preference.MANGA_HAS_UNREAD import eu.kanade.tachiyomi.data.preference.MANGA_HAS_UNREAD
import eu.kanade.tachiyomi.data.preference.MANGA_NON_COMPLETED import eu.kanade.tachiyomi.data.preference.MANGA_NON_COMPLETED
import eu.kanade.tachiyomi.data.preference.MANGA_NON_READ import eu.kanade.tachiyomi.data.preference.MANGA_NON_READ
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.track.EnhancedTrackService import eu.kanade.tachiyomi.data.track.EnhancedTrackService
import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.data.track.TrackManager
import eu.kanade.tachiyomi.data.track.TrackService import eu.kanade.tachiyomi.data.track.TrackService
@ -702,7 +702,7 @@ class LibraryUpdateService(
* filter all follows from Mangadex and only add reading or rereading manga to library * filter all follows from Mangadex and only add reading or rereading manga to library
*/ */
private suspend fun syncFollows() { private suspend fun syncFollows() {
val preferences = Injekt.get<PreferencesHelper>() val preferences = Injekt.get<UnsortedPreferences>()
var count = 0 var count = 0
val mangaDex = MdUtil.getEnabledMangaDex(preferences, sourceManager = sourceManager) ?: return val mangaDex = MdUtil.getEnabledMangaDex(preferences, sourceManager = sourceManager) ?: return
val syncFollowStatusInts = preferences.mangadexSyncToLibraryIndexes().get().map { it.toInt() } val syncFollowStatusInts = preferences.mangadexSyncToLibraryIndexes().get().map { it.toInt() }

View File

@ -1,9 +0,0 @@
package eu.kanade.tachiyomi.data.preference
/**
* This class stores the keys for the preferences in the application.
*/
object PreferenceKeys {
const val dateFormat = "app_date_format"
}

View File

@ -16,42 +16,6 @@ const val MANGA_NON_READ = "manga_started"
*/ */
object PreferenceValues { object PreferenceValues {
/* ktlint-disable experimental:enum-entry-name-case */
// Keys are lowercase to match legacy string values
/* ktlint-disable enum-entry-name-case */
enum class ThemeMode {
light,
dark,
system,
}
/* ktlint-enable enum-entry-name-case */
/* ktlint-enable experimental:enum-entry-name-case */
enum class AppTheme(val titleResId: Int?) {
DEFAULT(R.string.label_default),
MONET(R.string.theme_monet),
GREEN_APPLE(R.string.theme_greenapple),
LAVENDER(R.string.theme_lavender),
MIDNIGHT_DUSK(R.string.theme_midnightdusk),
STRAWBERRY_DAIQUIRI(R.string.theme_strawberrydaiquiri),
TAKO(R.string.theme_tako),
TEALTURQUOISE(R.string.theme_tealturquoise),
TIDAL_WAVE(R.string.theme_tidalwave),
YINYANG(R.string.theme_yinyang),
YOTSUBA(R.string.theme_yotsuba),
// Deprecated
DARK_BLUE(null),
HOT_PINK(null),
BLUE(null),
// SY -->
PURE_RED(null),
// SY <--
}
enum class TappingInvertMode(val shouldInvertHorizontal: Boolean = false, val shouldInvertVertical: Boolean = false) { enum class TappingInvertMode(val shouldInvertHorizontal: Boolean = false, val shouldInvertVertical: Boolean = false) {
NONE, NONE,
HORIZONTAL(shouldInvertHorizontal = true), HORIZONTAL(shouldInvertHorizontal = true),
@ -66,13 +30,6 @@ object PreferenceValues {
LOWEST(47), LOWEST(47),
} }
enum class TabletUiMode(val titleResId: Int) {
AUTOMATIC(R.string.automatic_background),
ALWAYS(R.string.lock_always),
LANDSCAPE(R.string.landscape),
NEVER(R.string.lock_never),
}
enum class ExtensionInstaller(val titleResId: Int) { enum class ExtensionInstaller(val titleResId: Int) {
LEGACY(R.string.ext_installer_legacy), LEGACY(R.string.ext_installer_legacy),
PACKAGEINSTALLER(R.string.ext_installer_packageinstaller), PACKAGEINSTALLER(R.string.ext_installer_packageinstaller),

View File

@ -4,9 +4,9 @@ import androidx.annotation.CallSuper
import androidx.annotation.ColorInt import androidx.annotation.ColorInt
import androidx.annotation.DrawableRes import androidx.annotation.DrawableRes
import androidx.annotation.StringRes import androidx.annotation.StringRes
import eu.kanade.domain.base.BasePreferences
import eu.kanade.domain.track.service.TrackPreferences import eu.kanade.domain.track.service.TrackPreferences
import eu.kanade.tachiyomi.data.database.models.Track import eu.kanade.tachiyomi.data.database.models.Track
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.track.model.TrackSearch import eu.kanade.tachiyomi.data.track.model.TrackSearch
import eu.kanade.tachiyomi.network.NetworkHelper import eu.kanade.tachiyomi.network.NetworkHelper
import okhttp3.OkHttpClient import okhttp3.OkHttpClient
@ -14,7 +14,7 @@ import uy.kohesive.injekt.injectLazy
abstract class TrackService(val id: Long) { abstract class TrackService(val id: Long) {
val preferences: PreferencesHelper by injectLazy() val preferences: BasePreferences by injectLazy()
val trackPreferences: TrackPreferences by injectLazy() val trackPreferences: TrackPreferences by injectLazy()
val networkService: NetworkHelper by injectLazy() val networkService: NetworkHelper by injectLazy()

View File

@ -2,7 +2,8 @@ package eu.kanade.tachiyomi.data.updater
import android.content.Context import android.content.Context
import eu.kanade.tachiyomi.BuildConfig import eu.kanade.tachiyomi.BuildConfig
import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.core.preference.Preference
import eu.kanade.tachiyomi.core.preference.PreferenceStore
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.NetworkHelper import eu.kanade.tachiyomi.network.NetworkHelper
import eu.kanade.tachiyomi.network.await import eu.kanade.tachiyomi.network.await
@ -17,11 +18,14 @@ import java.util.concurrent.TimeUnit
class AppUpdateChecker { class AppUpdateChecker {
private val networkService: NetworkHelper by injectLazy() private val networkService: NetworkHelper by injectLazy()
private val preferences: PreferencesHelper by injectLazy() private val preferenceStore: PreferenceStore by injectLazy()
private val lastAppCheck: Preference<Long> by lazy {
preferenceStore.getLong("last_app_check", 0)
}
suspend fun checkForUpdate(context: Context, isUserPrompt: Boolean = false): AppUpdateResult { suspend fun checkForUpdate(context: Context, isUserPrompt: Boolean = false): AppUpdateResult {
// Limit checks to once a day at most // Limit checks to once a day at most
if (isUserPrompt.not() && Date().time < preferences.lastAppCheck().get() + TimeUnit.DAYS.toMillis(1)) { if (isUserPrompt.not() && Date().time < lastAppCheck.get() + TimeUnit.DAYS.toMillis(1)) {
return AppUpdateResult.NoNewUpdate return AppUpdateResult.NoNewUpdate
} }
@ -31,7 +35,7 @@ class AppUpdateChecker {
.await() .await()
.parseAs<GithubRelease>() .parseAs<GithubRelease>()
.let { .let {
preferences.lastAppCheck().set(Date().time) lastAppCheck.set(Date().time)
// Check if latest version is different from current version // Check if latest version is different from current version
if (/* SY --> */ isNewVersionSY(it.version) /* SY <-- */) { if (/* SY --> */ isNewVersionSY(it.version) /* SY <-- */) {

View File

@ -10,10 +10,10 @@ import androidx.work.NetworkType
import androidx.work.PeriodicWorkRequestBuilder import androidx.work.PeriodicWorkRequestBuilder
import androidx.work.WorkManager import androidx.work.WorkManager
import androidx.work.WorkerParameters import androidx.work.WorkerParameters
import eu.kanade.domain.base.BasePreferences
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.notification.NotificationReceiver import eu.kanade.tachiyomi.data.notification.NotificationReceiver
import eu.kanade.tachiyomi.data.notification.Notifications import eu.kanade.tachiyomi.data.notification.Notifications
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.extension.api.ExtensionGithubApi import eu.kanade.tachiyomi.extension.api.ExtensionGithubApi
import eu.kanade.tachiyomi.util.system.logcat import eu.kanade.tachiyomi.util.system.logcat
import eu.kanade.tachiyomi.util.system.notification import eu.kanade.tachiyomi.util.system.notification
@ -68,7 +68,7 @@ class ExtensionUpdateJob(private val context: Context, workerParams: WorkerParam
private const val TAG = "ExtensionUpdate" private const val TAG = "ExtensionUpdate"
fun setupTask(context: Context, forceAutoUpdateJob: Boolean? = null) { fun setupTask(context: Context, forceAutoUpdateJob: Boolean? = null) {
val preferences = Injekt.get<PreferencesHelper>() val preferences = Injekt.get<BasePreferences>()
val autoUpdateJob = forceAutoUpdateJob ?: preferences.automaticExtUpdates().get() val autoUpdateJob = forceAutoUpdateJob ?: preferences.automaticExtUpdates().get()
if (autoUpdateJob) { if (autoUpdateJob) {
val constraints = Constraints.Builder() val constraints = Constraints.Builder()

View File

@ -1,8 +1,10 @@
package eu.kanade.tachiyomi.extension.api package eu.kanade.tachiyomi.extension.api
import android.content.Context import android.content.Context
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.core.preference.Preference
import eu.kanade.tachiyomi.core.preference.PreferenceStore
import eu.kanade.tachiyomi.extension.ExtensionManager import eu.kanade.tachiyomi.extension.ExtensionManager
import eu.kanade.tachiyomi.extension.model.AvailableSources import eu.kanade.tachiyomi.extension.model.AvailableSources
import eu.kanade.tachiyomi.extension.model.Extension import eu.kanade.tachiyomi.extension.model.Extension
@ -24,11 +26,15 @@ import java.util.concurrent.TimeUnit
internal class ExtensionGithubApi { internal class ExtensionGithubApi {
private val networkService: NetworkHelper by injectLazy() private val networkService: NetworkHelper by injectLazy()
private val preferences: PreferencesHelper by injectLazy() private val preferenceStore: PreferenceStore by injectLazy()
private val lastExtCheck: Preference<Long> by lazy {
preferenceStore.getLong("last_ext_check", 0)
}
private val extensionManager: ExtensionManager by injectLazy() private val extensionManager: ExtensionManager by injectLazy()
// SY --> // SY -->
private val sourcePreferences: SourcePreferences by injectLazy() private val sourcePreferences: SourcePreferences by injectLazy()
private val unsortedPreferences: UnsortedPreferences by injectLazy()
// SY <-- // SY <--
private var requiresFallbackSource = false private var requiresFallbackSource = false
@ -57,7 +63,7 @@ internal class ExtensionGithubApi {
val extensions = response val extensions = response
.parseAs<List<ExtensionJsonObject>>() .parseAs<List<ExtensionJsonObject>>()
.toExtensions() /* SY --> */ + preferences.extensionRepos() .toExtensions() /* SY --> */ + unsortedPreferences.extensionRepos()
.get() .get()
.flatMap { repoPath -> .flatMap { repoPath ->
val url = if (requiresFallbackSource) { val url = if (requiresFallbackSource) {
@ -85,14 +91,14 @@ internal class ExtensionGithubApi {
suspend fun checkForUpdates(context: Context, fromAvailableExtensionList: Boolean = false): List<Extension.Installed>? { suspend fun checkForUpdates(context: Context, fromAvailableExtensionList: Boolean = false): List<Extension.Installed>? {
// Limit checks to once a day at most // Limit checks to once a day at most
if (fromAvailableExtensionList.not() && Date().time < preferences.lastExtCheck().get() + TimeUnit.DAYS.toMillis(1)) { if (fromAvailableExtensionList.not() && Date().time < lastExtCheck.get() + TimeUnit.DAYS.toMillis(1)) {
return null return null
} }
val extensions = if (fromAvailableExtensionList) { val extensions = if (fromAvailableExtensionList) {
extensionManager.availableExtensions extensionManager.availableExtensions
} else { } else {
findExtensions().also { preferences.lastExtCheck().set(Date().time) } findExtensions().also { lastExtCheck.set(Date().time) }
} }
// SY --> // SY -->

View File

@ -11,8 +11,8 @@ import androidx.core.content.ContextCompat
import androidx.core.content.getSystemService import androidx.core.content.getSystemService
import androidx.core.net.toUri import androidx.core.net.toUri
import com.jakewharton.rxrelay.PublishRelay import com.jakewharton.rxrelay.PublishRelay
import eu.kanade.domain.base.BasePreferences
import eu.kanade.tachiyomi.data.preference.PreferenceValues import eu.kanade.tachiyomi.data.preference.PreferenceValues
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.extension.installer.Installer import eu.kanade.tachiyomi.extension.installer.Installer
import eu.kanade.tachiyomi.extension.model.Extension import eu.kanade.tachiyomi.extension.model.Extension
import eu.kanade.tachiyomi.extension.model.InstallStep import eu.kanade.tachiyomi.extension.model.InstallStep
@ -54,7 +54,7 @@ internal class ExtensionInstaller(private val context: Context) {
*/ */
private val downloadsRelay = PublishRelay.create<Pair<Long, InstallStep>>() private val downloadsRelay = PublishRelay.create<Pair<Long, InstallStep>>()
private val installerPref = Injekt.get<PreferencesHelper>().extensionInstaller() private val extensionInstaller = Injekt.get<BasePreferences>().extensionInstaller()
/** /**
* Adds the given extension to the downloads queue and returns an observable containing its * Adds the given extension to the downloads queue and returns an observable containing its
@ -133,7 +133,7 @@ internal class ExtensionInstaller(private val context: Context) {
* @param uri The uri of the extension to install. * @param uri The uri of the extension to install.
*/ */
fun installApk(downloadId: Long, uri: Uri) { fun installApk(downloadId: Long, uri: Uri) {
when (val installer = installerPref.get()) { when (val installer = extensionInstaller.get()) {
PreferenceValues.ExtensionInstaller.LEGACY -> { PreferenceValues.ExtensionInstaller.LEGACY -> {
val intent = Intent(context, ExtensionInstallActivity::class.java) val intent = Intent(context, ExtensionInstallActivity::class.java)
.setDataAndType(uri, APK_MIME) .setDataAndType(uri, APK_MIME)

View File

@ -3,9 +3,9 @@ package eu.kanade.tachiyomi.source
import android.content.Context import android.content.Context
import com.github.junrar.Archive import com.github.junrar.Archive
import com.hippo.unifile.UniFile import com.hippo.unifile.UniFile
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.domain.manga.model.ComicInfo import eu.kanade.domain.manga.model.ComicInfo
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.source.model.Filter import eu.kanade.tachiyomi.source.model.Filter
import eu.kanade.tachiyomi.source.model.FilterList import eu.kanade.tachiyomi.source.model.FilterList
import eu.kanade.tachiyomi.source.model.MangasPage import eu.kanade.tachiyomi.source.model.MangasPage
@ -43,7 +43,7 @@ class LocalSource(
private val xml: XML by injectLazy() private val xml: XML by injectLazy()
// SY --> // SY -->
private val preferences: PreferencesHelper by injectLazy() private val preferences: UnsortedPreferences by injectLazy()
// SY <-- // SY <--
override val name: String = context.getString(R.string.local_source) override val name: String = context.getString(R.string.local_source)

View File

@ -1,11 +1,11 @@
package eu.kanade.tachiyomi.source package eu.kanade.tachiyomi.source
import android.content.Context import android.content.Context
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.domain.source.model.SourceData import eu.kanade.domain.source.model.SourceData
import eu.kanade.domain.source.repository.SourceDataRepository import eu.kanade.domain.source.repository.SourceDataRepository
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.download.DownloadManager import eu.kanade.tachiyomi.data.download.DownloadManager
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.extension.ExtensionManager import eu.kanade.tachiyomi.extension.ExtensionManager
import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SChapter
@ -72,7 +72,7 @@ class SourceManager(
val onlineSources: Flow<List<HttpSource>> = catalogueSources.map { sources -> sources.filterIsInstance<HttpSource>() } val onlineSources: Flow<List<HttpSource>> = catalogueSources.map { sources -> sources.filterIsInstance<HttpSource>() }
// SY --> // SY -->
private val preferences: PreferencesHelper by injectLazy() private val preferences: UnsortedPreferences by injectLazy()
// SY <-- // SY <--
init { init {

View File

@ -5,9 +5,9 @@ import android.graphics.Bitmap
import android.graphics.BitmapFactory import android.graphics.BitmapFactory
import android.net.Uri import android.net.Uri
import androidx.core.net.toUri import androidx.core.net.toUri
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.data.database.models.MangaImpl import eu.kanade.tachiyomi.data.database.models.MangaImpl
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.asObservableSuccess import eu.kanade.tachiyomi.network.asObservableSuccess
import eu.kanade.tachiyomi.network.await import eu.kanade.tachiyomi.network.await
@ -117,7 +117,7 @@ class EHentai(
override val lang = "all" override val lang = "all"
override val supportsLatest = true override val supportsLatest = true
private val preferences: PreferencesHelper by injectLazy() private val preferences: UnsortedPreferences by injectLazy()
private val updateHelper: EHentaiUpdateHelper by injectLazy() private val updateHelper: EHentaiUpdateHelper by injectLazy()
/** /**

View File

@ -3,7 +3,7 @@ package eu.kanade.tachiyomi.ui.base.activity
import android.content.Context import android.content.Context
import android.os.Bundle import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.domain.base.BasePreferences
import eu.kanade.tachiyomi.ui.base.delegate.SecureActivityDelegate import eu.kanade.tachiyomi.ui.base.delegate.SecureActivityDelegate
import eu.kanade.tachiyomi.ui.base.delegate.SecureActivityDelegateImpl import eu.kanade.tachiyomi.ui.base.delegate.SecureActivityDelegateImpl
import eu.kanade.tachiyomi.ui.base.delegate.ThemingDelegate import eu.kanade.tachiyomi.ui.base.delegate.ThemingDelegate
@ -16,7 +16,7 @@ open class BaseActivity :
SecureActivityDelegate by SecureActivityDelegateImpl(), SecureActivityDelegate by SecureActivityDelegateImpl(),
ThemingDelegate by ThemingDelegateImpl() { ThemingDelegate by ThemingDelegateImpl() {
protected val preferences: PreferencesHelper by injectLazy() protected val preferences: BasePreferences by injectLazy()
override fun attachBaseContext(newBase: Context) { override fun attachBaseContext(newBase: Context) {
super.attachBaseContext(newBase.prepareTabletUiContext()) super.attachBaseContext(newBase.prepareTabletUiContext())

View File

@ -2,7 +2,7 @@ package eu.kanade.tachiyomi.ui.base.activity
import android.content.Context import android.content.Context
import android.os.Bundle import android.os.Bundle
import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.domain.base.BasePreferences
import eu.kanade.tachiyomi.ui.base.delegate.SecureActivityDelegate import eu.kanade.tachiyomi.ui.base.delegate.SecureActivityDelegate
import eu.kanade.tachiyomi.ui.base.delegate.SecureActivityDelegateImpl import eu.kanade.tachiyomi.ui.base.delegate.SecureActivityDelegateImpl
import eu.kanade.tachiyomi.ui.base.delegate.ThemingDelegate import eu.kanade.tachiyomi.ui.base.delegate.ThemingDelegate
@ -17,7 +17,7 @@ open class BaseRxActivity<P : BasePresenter<*>> :
SecureActivityDelegate by SecureActivityDelegateImpl(), SecureActivityDelegate by SecureActivityDelegateImpl(),
ThemingDelegate by ThemingDelegateImpl() { ThemingDelegate by ThemingDelegateImpl() {
protected val preferences: PreferencesHelper by injectLazy() protected val preferences: BasePreferences by injectLazy()
override fun attachBaseContext(newBase: Context) { override fun attachBaseContext(newBase: Context) {
super.attachBaseContext(newBase.prepareTabletUiContext()) super.attachBaseContext(newBase.prepareTabletUiContext())

View File

@ -5,8 +5,8 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.DefaultLifecycleObserver import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import eu.kanade.domain.base.BasePreferences
import eu.kanade.tachiyomi.core.security.SecurityPreferences import eu.kanade.tachiyomi.core.security.SecurityPreferences
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.ui.base.delegate.SecureActivityDelegate.Companion.LOCK_ALL_DAYS import eu.kanade.tachiyomi.ui.base.delegate.SecureActivityDelegate.Companion.LOCK_ALL_DAYS
import eu.kanade.tachiyomi.ui.base.delegate.SecureActivityDelegate.Companion.LOCK_FRIDAY import eu.kanade.tachiyomi.ui.base.delegate.SecureActivityDelegate.Companion.LOCK_FRIDAY
import eu.kanade.tachiyomi.ui.base.delegate.SecureActivityDelegate.Companion.LOCK_MONDAY import eu.kanade.tachiyomi.ui.base.delegate.SecureActivityDelegate.Companion.LOCK_MONDAY
@ -93,7 +93,7 @@ class SecureActivityDelegateImpl : SecureActivityDelegate, DefaultLifecycleObser
private lateinit var activity: AppCompatActivity private lateinit var activity: AppCompatActivity
private val preferences: PreferencesHelper by injectLazy() private val preferences: BasePreferences by injectLazy()
private val securityPreferences: SecurityPreferences by injectLazy() private val securityPreferences: SecurityPreferences by injectLazy()
override fun registerSecureActivity(activity: AppCompatActivity) { override fun registerSecureActivity(activity: AppCompatActivity) {

View File

@ -1,9 +1,9 @@
package eu.kanade.tachiyomi.ui.base.delegate package eu.kanade.tachiyomi.ui.base.delegate
import android.app.Activity import android.app.Activity
import eu.kanade.domain.ui.UiPreferences
import eu.kanade.domain.ui.model.AppTheme
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferenceValues
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get import uy.kohesive.injekt.api.get
@ -11,37 +11,37 @@ interface ThemingDelegate {
fun applyAppTheme(activity: Activity) fun applyAppTheme(activity: Activity)
companion object { companion object {
fun getThemeResIds(appTheme: PreferenceValues.AppTheme, isAmoled: Boolean): List<Int> { fun getThemeResIds(appTheme: AppTheme, isAmoled: Boolean): List<Int> {
val resIds = mutableListOf<Int>() val resIds = mutableListOf<Int>()
when (appTheme) { when (appTheme) {
PreferenceValues.AppTheme.MONET -> { AppTheme.MONET -> {
resIds += R.style.Theme_Tachiyomi_Monet resIds += R.style.Theme_Tachiyomi_Monet
} }
PreferenceValues.AppTheme.GREEN_APPLE -> { AppTheme.GREEN_APPLE -> {
resIds += R.style.Theme_Tachiyomi_GreenApple resIds += R.style.Theme_Tachiyomi_GreenApple
} }
PreferenceValues.AppTheme.LAVENDER -> { AppTheme.LAVENDER -> {
resIds += R.style.Theme_Tachiyomi_Lavender resIds += R.style.Theme_Tachiyomi_Lavender
} }
PreferenceValues.AppTheme.MIDNIGHT_DUSK -> { AppTheme.MIDNIGHT_DUSK -> {
resIds += R.style.Theme_Tachiyomi_MidnightDusk resIds += R.style.Theme_Tachiyomi_MidnightDusk
} }
PreferenceValues.AppTheme.STRAWBERRY_DAIQUIRI -> { AppTheme.STRAWBERRY_DAIQUIRI -> {
resIds += R.style.Theme_Tachiyomi_StrawberryDaiquiri resIds += R.style.Theme_Tachiyomi_StrawberryDaiquiri
} }
PreferenceValues.AppTheme.TAKO -> { AppTheme.TAKO -> {
resIds += R.style.Theme_Tachiyomi_Tako resIds += R.style.Theme_Tachiyomi_Tako
} }
PreferenceValues.AppTheme.TEALTURQUOISE -> { AppTheme.TEALTURQUOISE -> {
resIds += R.style.Theme_Tachiyomi_TealTurquoise resIds += R.style.Theme_Tachiyomi_TealTurquoise
} }
PreferenceValues.AppTheme.YINYANG -> { AppTheme.YINYANG -> {
resIds += R.style.Theme_Tachiyomi_YinYang resIds += R.style.Theme_Tachiyomi_YinYang
} }
PreferenceValues.AppTheme.YOTSUBA -> { AppTheme.YOTSUBA -> {
resIds += R.style.Theme_Tachiyomi_Yotsuba resIds += R.style.Theme_Tachiyomi_Yotsuba
} }
PreferenceValues.AppTheme.TIDAL_WAVE -> { AppTheme.TIDAL_WAVE -> {
resIds += R.style.Theme_Tachiyomi_TidalWave resIds += R.style.Theme_Tachiyomi_TidalWave
} }
else -> { else -> {
@ -60,8 +60,8 @@ interface ThemingDelegate {
class ThemingDelegateImpl : ThemingDelegate { class ThemingDelegateImpl : ThemingDelegate {
override fun applyAppTheme(activity: Activity) { override fun applyAppTheme(activity: Activity) {
val preferences = Injekt.get<PreferencesHelper>() val uiPreferences = Injekt.get<UiPreferences>()
ThemingDelegate.getThemeResIds(preferences.appTheme().get(), preferences.themeDarkAmoled().get()) ThemingDelegate.getThemeResIds(uiPreferences.appTheme().get(), uiPreferences.themeDarkAmoled().get())
.forEach { activity.setTheme(it) } .forEach { activity.setTheme(it) }
} }
} }

View File

@ -2,7 +2,8 @@ package eu.kanade.tachiyomi.ui.browse
import android.os.Bundle import android.os.Bundle
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.domain.base.BasePreferences
import eu.kanade.domain.ui.UiPreferences
import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter
import eu.kanade.tachiyomi.ui.browse.extension.ExtensionsPresenter import eu.kanade.tachiyomi.ui.browse.extension.ExtensionsPresenter
import eu.kanade.tachiyomi.ui.browse.feed.FeedPresenter import eu.kanade.tachiyomi.ui.browse.feed.FeedPresenter
@ -13,14 +14,17 @@ import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get import uy.kohesive.injekt.api.get
class BrowsePresenter( class BrowsePresenter(
preferences: PreferencesHelper = Injekt.get(), preferences: BasePreferences = Injekt.get(),
// SY -->
uiPreferences: UiPreferences = Injekt.get(),
// SY <--
) : BasePresenter<BrowseController>() { ) : BasePresenter<BrowseController>() {
val isDownloadOnly: Boolean by preferences.downloadedOnly().asState() val isDownloadOnly: Boolean by preferences.downloadedOnly().asState()
val isIncognitoMode: Boolean by preferences.incognitoMode().asState() val isIncognitoMode: Boolean by preferences.incognitoMode().asState()
// SY --> // SY -->
val feedTabInFront = preferences.feedTabInFront().get() val feedTabInFront = uiPreferences.feedTabInFront().get()
// SY <-- // SY <--
// SY --> // SY -->

View File

@ -20,7 +20,6 @@ import eu.kanade.presentation.browse.FeedState
import eu.kanade.presentation.browse.FeedStateImpl import eu.kanade.presentation.browse.FeedStateImpl
import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.data.database.models.toDomainManga import eu.kanade.tachiyomi.data.database.models.toDomainManga
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.source.CatalogueSource import eu.kanade.tachiyomi.source.CatalogueSource
import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.source.SourceManager
import eu.kanade.tachiyomi.source.model.FilterList import eu.kanade.tachiyomi.source.model.FilterList
@ -55,16 +54,11 @@ import eu.kanade.domain.manga.model.Manga as DomainManga
/** /**
* Presenter of [feedTab] * Presenter of [feedTab]
* Function calls should be done from here. UI calls should be done from the controller.
*
* @param sourceManager manages the different sources.
* @param preferences manages the preference calls.
*/ */
open class FeedPresenter( open class FeedPresenter(
private val presenterScope: CoroutineScope, private val presenterScope: CoroutineScope,
private val state: FeedStateImpl = FeedState() as FeedStateImpl, private val state: FeedStateImpl = FeedState() as FeedStateImpl,
val sourceManager: SourceManager = Injekt.get(), val sourceManager: SourceManager = Injekt.get(),
val preferences: PreferencesHelper = Injekt.get(),
val sourcePreferences: SourcePreferences = Injekt.get(), val sourcePreferences: SourcePreferences = Injekt.get(),
private val getManga: GetManga = Injekt.get(), private val getManga: GetManga = Injekt.get(),
private val insertManga: InsertManga = Injekt.get(), private val insertManga: InsertManga = Injekt.get(),

View File

@ -11,9 +11,9 @@ import android.widget.RadioGroup
import android.widget.Toast import android.widget.Toast
import androidx.core.view.isVisible import androidx.core.view.isVisible
import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.android.material.bottomsheet.BottomSheetBehavior
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.core.preference.Preference import eu.kanade.tachiyomi.core.preference.Preference
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.databinding.MigrationBottomSheetBinding import eu.kanade.tachiyomi.databinding.MigrationBottomSheetBinding
import eu.kanade.tachiyomi.ui.browse.migration.MigrationFlags import eu.kanade.tachiyomi.ui.browse.migration.MigrationFlags
import eu.kanade.tachiyomi.util.system.toInt import eu.kanade.tachiyomi.util.system.toInt
@ -22,7 +22,7 @@ import eu.kanade.tachiyomi.widget.sheet.BaseBottomSheetDialog
import uy.kohesive.injekt.injectLazy import uy.kohesive.injekt.injectLazy
class MigrationBottomSheetDialog(private val activity: Activity, private val listener: StartMigrationListener) : BaseBottomSheetDialog(activity) { class MigrationBottomSheetDialog(private val activity: Activity, private val listener: StartMigrationListener) : BaseBottomSheetDialog(activity) {
private val preferences: PreferencesHelper by injectLazy() private val preferences: UnsortedPreferences by injectLazy()
lateinit var binding: MigrationBottomSheetBinding lateinit var binding: MigrationBottomSheetBinding

View File

@ -3,7 +3,6 @@ package eu.kanade.tachiyomi.ui.browse.migration.advanced.design
import android.os.Bundle import android.os.Bundle
import eu.davidea.flexibleadapter.FlexibleAdapter import eu.davidea.flexibleadapter.FlexibleAdapter
import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.source.SourceManager
import uy.kohesive.injekt.injectLazy import uy.kohesive.injekt.injectLazy
@ -14,7 +13,6 @@ class MigrationSourceAdapter(
controllerPre, controllerPre,
true, true,
) { ) {
val preferences: PreferencesHelper by injectLazy()
val sourceManager: SourceManager by injectLazy() val sourceManager: SourceManager by injectLazy()
// SY _-> // SY _->

View File

@ -39,13 +39,13 @@ import androidx.core.view.updatePadding
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import com.bluelinelabs.conductor.Router import com.bluelinelabs.conductor.Router
import eu.davidea.flexibleadapter.FlexibleAdapter import eu.davidea.flexibleadapter.FlexibleAdapter
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.presentation.components.AppBar import eu.kanade.presentation.components.AppBar
import eu.kanade.presentation.components.DropdownMenu import eu.kanade.presentation.components.DropdownMenu
import eu.kanade.presentation.components.ExtendedFloatingActionButton import eu.kanade.presentation.components.ExtendedFloatingActionButton
import eu.kanade.presentation.components.Scaffold import eu.kanade.presentation.components.Scaffold
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.databinding.PreMigrationListBinding import eu.kanade.tachiyomi.databinding.PreMigrationListBinding
import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.source.SourceManager
import eu.kanade.tachiyomi.source.online.HttpSource import eu.kanade.tachiyomi.source.online.HttpSource
@ -69,7 +69,7 @@ class PreMigrationController(bundle: Bundle? = null) :
) )
private val sourceManager: SourceManager by injectLazy() private val sourceManager: SourceManager by injectLazy()
private val prefs: PreferencesHelper by injectLazy() private val prefs: UnsortedPreferences by injectLazy()
private val sourcePreferences: SourcePreferences by injectLazy() private val sourcePreferences: SourcePreferences by injectLazy()
private var adapter: MigrationSourceAdapter? = null private var adapter: MigrationSourceAdapter? = null

View File

@ -2,6 +2,7 @@ package eu.kanade.tachiyomi.ui.browse.migration.advanced.process
import android.os.Bundle import android.os.Bundle
import android.widget.Toast import android.widget.Toast
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.domain.category.interactor.GetCategories import eu.kanade.domain.category.interactor.GetCategories
import eu.kanade.domain.category.interactor.SetMangaCategories import eu.kanade.domain.category.interactor.SetMangaCategories
import eu.kanade.domain.chapter.interactor.GetChapterByMangaId import eu.kanade.domain.chapter.interactor.GetChapterByMangaId
@ -26,7 +27,6 @@ import eu.kanade.domain.track.interactor.InsertTrack
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.cache.CoverCache import eu.kanade.tachiyomi.data.cache.CoverCache
import eu.kanade.tachiyomi.data.database.models.toDomainManga import eu.kanade.tachiyomi.data.database.models.toDomainManga
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.source.CatalogueSource import eu.kanade.tachiyomi.source.CatalogueSource
import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.Source
import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.source.SourceManager
@ -60,7 +60,7 @@ import java.util.concurrent.atomic.AtomicInteger
class MigrationListPresenter( class MigrationListPresenter(
private val config: MigrationProcedureConfig, private val config: MigrationProcedureConfig,
private val preferences: PreferencesHelper = Injekt.get(), private val preferences: UnsortedPreferences = Injekt.get(),
private val sourceManager: SourceManager = Injekt.get(), private val sourceManager: SourceManager = Injekt.get(),
private val coverCache: CoverCache = Injekt.get(), private val coverCache: CoverCache = Injekt.get(),
private val getManga: GetManga = Injekt.get(), private val getManga: GetManga = Injekt.get(),

View File

@ -3,8 +3,8 @@ package eu.kanade.tachiyomi.ui.browse.migration.manga
import android.os.Bundle import android.os.Bundle
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.core.os.bundleOf import androidx.core.os.bundleOf
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.presentation.browse.MigrateMangaScreen import eu.kanade.presentation.browse.MigrateMangaScreen
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.ui.base.controller.FullComposeController import eu.kanade.tachiyomi.ui.base.controller.FullComposeController
import eu.kanade.tachiyomi.ui.base.controller.pushController import eu.kanade.tachiyomi.ui.base.controller.pushController
import eu.kanade.tachiyomi.ui.browse.migration.advanced.design.PreMigrationController import eu.kanade.tachiyomi.ui.browse.migration.advanced.design.PreMigrationController
@ -40,7 +40,7 @@ class MigrationMangaController : FullComposeController<MigrateMangaPresenter> {
presenter = presenter, presenter = presenter,
onClickItem = { onClickItem = {
PreMigrationController.navigateToMigration( PreMigrationController.navigateToMigration(
Injekt.get<PreferencesHelper>().skipPreMigration().get(), Injekt.get<UnsortedPreferences>().skipPreMigration().get(),
router, router,
listOf(it.id), listOf(it.id),
) )

View File

@ -6,12 +6,12 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.platform.LocalUriHandler
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import com.bluelinelabs.conductor.Router import com.bluelinelabs.conductor.Router
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.domain.manga.interactor.GetFavorites import eu.kanade.domain.manga.interactor.GetFavorites
import eu.kanade.presentation.browse.MigrateSourceScreen import eu.kanade.presentation.browse.MigrateSourceScreen
import eu.kanade.presentation.components.AppBar import eu.kanade.presentation.components.AppBar
import eu.kanade.presentation.components.TabContent import eu.kanade.presentation.components.TabContent
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.ui.base.controller.pushController import eu.kanade.tachiyomi.ui.base.controller.pushController
import eu.kanade.tachiyomi.ui.browse.migration.advanced.design.PreMigrationController import eu.kanade.tachiyomi.ui.browse.migration.advanced.design.PreMigrationController
import eu.kanade.tachiyomi.ui.browse.migration.manga.MigrationMangaController import eu.kanade.tachiyomi.ui.browse.migration.manga.MigrationMangaController
@ -59,7 +59,7 @@ fun migrateSourcesTab(
withUIContext { withUIContext {
if (router != null) { if (router != null) {
PreMigrationController.navigateToMigration( PreMigrationController.navigateToMigration(
Injekt.get<PreferencesHelper>().skipPreMigration().get(), Injekt.get<UnsortedPreferences>().skipPreMigration().get(),
router, router,
sourceMangas, sourceMangas,
) )

View File

@ -1,5 +1,6 @@
package eu.kanade.tachiyomi.ui.browse.source package eu.kanade.tachiyomi.ui.browse.source
import eu.kanade.domain.base.BasePreferences
import eu.kanade.domain.source.interactor.GetEnabledSources import eu.kanade.domain.source.interactor.GetEnabledSources
import eu.kanade.domain.source.interactor.GetShowLatest import eu.kanade.domain.source.interactor.GetShowLatest
import eu.kanade.domain.source.interactor.GetSourceCategories import eu.kanade.domain.source.interactor.GetSourceCategories
@ -10,10 +11,10 @@ import eu.kanade.domain.source.interactor.ToggleSourcePin
import eu.kanade.domain.source.model.Pin import eu.kanade.domain.source.model.Pin
import eu.kanade.domain.source.model.Source import eu.kanade.domain.source.model.Source
import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.domain.ui.UiPreferences
import eu.kanade.presentation.browse.SourceUiModel import eu.kanade.presentation.browse.SourceUiModel
import eu.kanade.presentation.browse.SourcesState import eu.kanade.presentation.browse.SourcesState
import eu.kanade.presentation.browse.SourcesStateImpl import eu.kanade.presentation.browse.SourcesStateImpl
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.util.system.logcat import eu.kanade.tachiyomi.util.system.logcat
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
@ -32,12 +33,13 @@ import java.util.TreeMap
class SourcesPresenter( class SourcesPresenter(
private val presenterScope: CoroutineScope, private val presenterScope: CoroutineScope,
private val state: SourcesStateImpl = SourcesState() as SourcesStateImpl, private val state: SourcesStateImpl = SourcesState() as SourcesStateImpl,
private val preferences: PreferencesHelper = Injekt.get(), private val preferences: BasePreferences = Injekt.get(),
private val sourcePreferences: SourcePreferences = Injekt.get(), private val sourcePreferences: SourcePreferences = Injekt.get(),
private val getEnabledSources: GetEnabledSources = Injekt.get(), private val getEnabledSources: GetEnabledSources = Injekt.get(),
private val toggleSource: ToggleSource = Injekt.get(), private val toggleSource: ToggleSource = Injekt.get(),
private val toggleSourcePin: ToggleSourcePin = Injekt.get(), private val toggleSourcePin: ToggleSourcePin = Injekt.get(),
// SY --> // SY -->
private val uiPreferences: UiPreferences = Injekt.get(),
private val getSourceCategories: GetSourceCategories = Injekt.get(), private val getSourceCategories: GetSourceCategories = Injekt.get(),
private val getShowLatest: GetShowLatest = Injekt.get(), private val getShowLatest: GetShowLatest = Injekt.get(),
private val toggleExcludeFromDataSaver: ToggleExcludeFromDataSaver = Injekt.get(), private val toggleExcludeFromDataSaver: ToggleExcludeFromDataSaver = Injekt.get(),
@ -50,7 +52,7 @@ class SourcesPresenter(
private val _events = Channel<Event>(Int.MAX_VALUE) private val _events = Channel<Event>(Int.MAX_VALUE)
val events = _events.receiveAsFlow() val events = _events.receiveAsFlow()
val useNewSourceNavigation = preferences.useNewSourceNavigation().get() val useNewSourceNavigation = uiPreferences.useNewSourceNavigation().get()
fun onCreate() { fun onCreate() {
// SY --> // SY -->

View File

@ -19,6 +19,8 @@ import androidx.paging.map
import eu.davidea.flexibleadapter.items.IFlexible import eu.davidea.flexibleadapter.items.IFlexible
import eu.kanade.core.prefs.CheckboxState import eu.kanade.core.prefs.CheckboxState
import eu.kanade.core.prefs.mapAsCheckboxState import eu.kanade.core.prefs.mapAsCheckboxState
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.domain.base.BasePreferences
import eu.kanade.domain.category.interactor.GetCategories import eu.kanade.domain.category.interactor.GetCategories
import eu.kanade.domain.category.interactor.SetMangaCategories import eu.kanade.domain.category.interactor.SetMangaCategories
import eu.kanade.domain.chapter.interactor.GetChapterByMangaId import eu.kanade.domain.chapter.interactor.GetChapterByMangaId
@ -45,7 +47,6 @@ import eu.kanade.presentation.browse.BrowseSourceStateImpl
import eu.kanade.tachiyomi.data.cache.CoverCache import eu.kanade.tachiyomi.data.cache.CoverCache
import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.data.database.models.toDomainManga import eu.kanade.tachiyomi.data.database.models.toDomainManga
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.track.EnhancedTrackService import eu.kanade.tachiyomi.data.track.EnhancedTrackService
import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.data.track.TrackManager
import eu.kanade.tachiyomi.data.track.TrackService import eu.kanade.tachiyomi.data.track.TrackService
@ -112,8 +113,8 @@ open class BrowseSourcePresenter(
// SY <-- // SY <--
private val state: BrowseSourceStateImpl = BrowseSourceState(searchQuery) as BrowseSourceStateImpl, private val state: BrowseSourceStateImpl = BrowseSourceState(searchQuery) as BrowseSourceStateImpl,
private val sourceManager: SourceManager = Injekt.get(), private val sourceManager: SourceManager = Injekt.get(),
private val preferences: PreferencesHelper = Injekt.get(), preferences: BasePreferences = Injekt.get(),
private val sourcePreferences: SourcePreferences = Injekt.get(), sourcePreferences: SourcePreferences = Injekt.get(),
private val libraryPreferences: LibraryPreferences = Injekt.get(), private val libraryPreferences: LibraryPreferences = Injekt.get(),
private val coverCache: CoverCache = Injekt.get(), private val coverCache: CoverCache = Injekt.get(),
private val getRemoteManga: GetRemoteManga = Injekt.get(), private val getRemoteManga: GetRemoteManga = Injekt.get(),
@ -129,6 +130,7 @@ open class BrowseSourcePresenter(
private val syncChaptersWithTrackServiceTwoWay: SyncChaptersWithTrackServiceTwoWay = Injekt.get(), private val syncChaptersWithTrackServiceTwoWay: SyncChaptersWithTrackServiceTwoWay = Injekt.get(),
// SY --> // SY -->
unsortedPreferences: UnsortedPreferences = Injekt.get(),
private val getFlatMetadataById: GetFlatMetadataById = Injekt.get(), private val getFlatMetadataById: GetFlatMetadataById = Injekt.get(),
private val deleteSavedSearchById: DeleteSavedSearchById = Injekt.get(), private val deleteSavedSearchById: DeleteSavedSearchById = Injekt.get(),
private val insertSavedSearch: InsertSavedSearch = Injekt.get(), private val insertSavedSearch: InsertSavedSearch = Injekt.get(),
@ -144,7 +146,7 @@ open class BrowseSourcePresenter(
val isIncognitoMode: Boolean by preferences.incognitoMode().asState() val isIncognitoMode: Boolean by preferences.incognitoMode().asState()
// SY --> // SY -->
val ehentaiBrowseDisplayMode by preferences.enhancedEHentaiView().asState() val ehentaiBrowseDisplayMode by unsortedPreferences.enhancedEHentaiView().asState()
// SY <-- // SY <--
@Composable @Composable

View File

@ -5,6 +5,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.State import androidx.compose.runtime.State
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.produceState import androidx.compose.runtime.produceState
import eu.kanade.domain.base.BasePreferences
import eu.kanade.domain.manga.interactor.GetManga import eu.kanade.domain.manga.interactor.GetManga
import eu.kanade.domain.manga.interactor.InsertManga import eu.kanade.domain.manga.interactor.InsertManga
import eu.kanade.domain.manga.interactor.UpdateManga import eu.kanade.domain.manga.interactor.UpdateManga
@ -21,7 +22,6 @@ import eu.kanade.presentation.browse.SourceFeedStateImpl
import eu.kanade.presentation.browse.SourceFeedUI import eu.kanade.presentation.browse.SourceFeedUI
import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.data.database.models.toDomainManga import eu.kanade.tachiyomi.data.database.models.toDomainManga
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.source.CatalogueSource import eu.kanade.tachiyomi.source.CatalogueSource
import eu.kanade.tachiyomi.source.model.FilterList import eu.kanade.tachiyomi.source.model.FilterList
import eu.kanade.tachiyomi.source.model.MangasPage import eu.kanade.tachiyomi.source.model.MangasPage
@ -59,7 +59,7 @@ import eu.kanade.domain.manga.model.Manga as DomainManga
open class SourceFeedPresenter( open class SourceFeedPresenter(
private val state: SourceFeedStateImpl = SourceFeedState() as SourceFeedStateImpl, private val state: SourceFeedStateImpl = SourceFeedState() as SourceFeedStateImpl,
val source: CatalogueSource, val source: CatalogueSource,
val preferences: PreferencesHelper = Injekt.get(), private val preferences: BasePreferences = Injekt.get(),
private val getManga: GetManga = Injekt.get(), private val getManga: GetManga = Injekt.get(),
private val insertManga: InsertManga = Injekt.get(), private val insertManga: InsertManga = Injekt.get(),
private val updateManga: UpdateManga = Injekt.get(), private val updateManga: UpdateManga = Injekt.get(),

View File

@ -9,8 +9,8 @@ import eu.davidea.flexibleadapter.items.AbstractExpandableHeaderItem
import eu.davidea.flexibleadapter.items.IFlexible import eu.davidea.flexibleadapter.items.IFlexible
import eu.davidea.flexibleadapter.items.ISectionable import eu.davidea.flexibleadapter.items.ISectionable
import eu.davidea.viewholders.ExpandableViewHolder import eu.davidea.viewholders.ExpandableViewHolder
import eu.kanade.domain.ui.UiPreferences
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.source.model.Filter import eu.kanade.tachiyomi.source.model.Filter
import eu.kanade.tachiyomi.util.view.setVectorCompat import eu.kanade.tachiyomi.util.view.setVectorCompat
import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.Injekt
@ -20,7 +20,7 @@ class GroupItem(val filter: Filter.Group<*>) : AbstractExpandableHeaderItem<Grou
init { init {
// --> EH // --> EH
isExpanded = Injekt.get<PreferencesHelper>().expandFilters().get() isExpanded = Injekt.get<UiPreferences>().expandFilters().get()
// <-- EH // <-- EH
} }

View File

@ -10,10 +10,10 @@ import androidx.appcompat.widget.SearchView
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import dev.chrisbanes.insetter.applyInsetter import dev.chrisbanes.insetter.applyInsetter
import eu.kanade.domain.base.BasePreferences
import eu.kanade.domain.manga.model.Manga import eu.kanade.domain.manga.model.Manga
import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.databinding.GlobalSearchControllerBinding import eu.kanade.tachiyomi.databinding.GlobalSearchControllerBinding
import eu.kanade.tachiyomi.source.CatalogueSource import eu.kanade.tachiyomi.source.CatalogueSource
import eu.kanade.tachiyomi.ui.base.controller.SearchableNucleusController import eu.kanade.tachiyomi.ui.base.controller.SearchableNucleusController
@ -35,7 +35,7 @@ open class GlobalSearchController(
GlobalSearchCardAdapter.OnMangaClickListener, GlobalSearchCardAdapter.OnMangaClickListener,
GlobalSearchAdapter.OnTitleClickListener { GlobalSearchAdapter.OnTitleClickListener {
private val preferences: PreferencesHelper by injectLazy() private val preferences: BasePreferences by injectLazy()
private val sourcePreferences: SourcePreferences by injectLazy() private val sourcePreferences: SourcePreferences by injectLazy()
/** /**

View File

@ -1,6 +1,7 @@
package eu.kanade.tachiyomi.ui.browse.source.globalsearch package eu.kanade.tachiyomi.ui.browse.source.globalsearch
import android.os.Bundle import android.os.Bundle
import eu.kanade.domain.base.BasePreferences
import eu.kanade.domain.manga.interactor.GetManga import eu.kanade.domain.manga.interactor.GetManga
import eu.kanade.domain.manga.interactor.InsertManga import eu.kanade.domain.manga.interactor.InsertManga
import eu.kanade.domain.manga.interactor.UpdateManga import eu.kanade.domain.manga.interactor.UpdateManga
@ -9,7 +10,6 @@ import eu.kanade.domain.manga.model.toMangaUpdate
import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.data.database.models.toDomainManga import eu.kanade.tachiyomi.data.database.models.toDomainManga
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.extension.ExtensionManager import eu.kanade.tachiyomi.extension.ExtensionManager
import eu.kanade.tachiyomi.source.CatalogueSource import eu.kanade.tachiyomi.source.CatalogueSource
import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.Source
@ -36,7 +36,7 @@ open class GlobalSearchPresenter(
private val initialExtensionFilter: String? = null, private val initialExtensionFilter: String? = null,
private val sourcesToUse: List<CatalogueSource>? = null, private val sourcesToUse: List<CatalogueSource>? = null,
val sourceManager: SourceManager = Injekt.get(), val sourceManager: SourceManager = Injekt.get(),
val preferences: PreferencesHelper = Injekt.get(), val preferences: BasePreferences = Injekt.get(),
val sourcePreferences: SourcePreferences = Injekt.get(), val sourcePreferences: SourcePreferences = Injekt.get(),
private val getManga: GetManga = Injekt.get(), private val getManga: GetManga = Injekt.get(),
private val insertManga: InsertManga = Injekt.get(), private val insertManga: InsertManga = Injekt.get(),

View File

@ -12,6 +12,7 @@ import com.bluelinelabs.conductor.ControllerChangeHandler
import com.bluelinelabs.conductor.ControllerChangeType import com.bluelinelabs.conductor.ControllerChangeType
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import eu.kanade.core.prefs.CheckboxState import eu.kanade.core.prefs.CheckboxState
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.domain.library.model.LibraryGroup import eu.kanade.domain.library.model.LibraryGroup
import eu.kanade.domain.manga.model.Manga import eu.kanade.domain.manga.model.Manga
import eu.kanade.domain.manga.model.isLocal import eu.kanade.domain.manga.model.isLocal
@ -22,7 +23,6 @@ import eu.kanade.presentation.library.LibraryScreen
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.database.models.toDomainManga import eu.kanade.tachiyomi.data.database.models.toDomainManga
import eu.kanade.tachiyomi.data.library.LibraryUpdateService import eu.kanade.tachiyomi.data.library.LibraryUpdateService
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.ui.base.controller.FullComposeController import eu.kanade.tachiyomi.ui.base.controller.FullComposeController
import eu.kanade.tachiyomi.ui.base.controller.RootController import eu.kanade.tachiyomi.ui.base.controller.RootController
import eu.kanade.tachiyomi.ui.base.controller.pushController import eu.kanade.tachiyomi.ui.base.controller.pushController
@ -120,7 +120,7 @@ class LibraryController(
presenter.clearSelection() presenter.clearSelection()
if (selectedMangaIds.isNotEmpty()) { if (selectedMangaIds.isNotEmpty()) {
PreMigrationController.navigateToMigration( PreMigrationController.navigateToMigration(
Injekt.get<PreferencesHelper>().skipPreMigration().get(), Injekt.get<UnsortedPreferences>().skipPreMigration().get(),
router, router,
selectedMangaIds, selectedMangaIds,
) )
@ -134,7 +134,7 @@ class LibraryController(
}, },
onClickSyncExh = { onClickSyncExh = {
// TODO // TODO
if (Injekt.get<PreferencesHelper>().exhShowSyncIntro().get()) { if (Injekt.get<UnsortedPreferences>().exhShowSyncIntro().get()) {
activity?.let { FavoritesIntroDialog().show(it) } activity?.let { FavoritesIntroDialog().show(it) }
} else { } else {
MaterialAlertDialogBuilder(activity!!) MaterialAlertDialogBuilder(activity!!)

View File

@ -18,6 +18,8 @@ import eu.kanade.core.prefs.PreferenceMutableState
import eu.kanade.core.util.asFlow import eu.kanade.core.util.asFlow
import eu.kanade.core.util.asObservable import eu.kanade.core.util.asObservable
import eu.kanade.data.DatabaseHandler import eu.kanade.data.DatabaseHandler
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.domain.base.BasePreferences
import eu.kanade.domain.category.interactor.GetCategories import eu.kanade.domain.category.interactor.GetCategories
import eu.kanade.domain.category.interactor.SetMangaCategories import eu.kanade.domain.category.interactor.SetMangaCategories
import eu.kanade.domain.category.model.Category import eu.kanade.domain.category.model.Category
@ -54,7 +56,6 @@ import eu.kanade.tachiyomi.data.database.models.LibraryManga
import eu.kanade.tachiyomi.data.database.models.toDomainManga import eu.kanade.tachiyomi.data.database.models.toDomainManga
import eu.kanade.tachiyomi.data.download.DownloadManager import eu.kanade.tachiyomi.data.download.DownloadManager
import eu.kanade.tachiyomi.data.library.CustomMangaManager import eu.kanade.tachiyomi.data.library.CustomMangaManager
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.data.track.TrackManager
import eu.kanade.tachiyomi.data.track.TrackStatus import eu.kanade.tachiyomi.data.track.TrackStatus
import eu.kanade.tachiyomi.source.LocalSource import eu.kanade.tachiyomi.source.LocalSource
@ -131,13 +132,14 @@ class LibraryPresenter(
private val setReadStatus: SetReadStatus = Injekt.get(), private val setReadStatus: SetReadStatus = Injekt.get(),
private val updateManga: UpdateManga = Injekt.get(), private val updateManga: UpdateManga = Injekt.get(),
private val setMangaCategories: SetMangaCategories = Injekt.get(), private val setMangaCategories: SetMangaCategories = Injekt.get(),
private val preferences: PreferencesHelper = Injekt.get(), private val preferences: BasePreferences = Injekt.get(),
private val libraryPreferences: LibraryPreferences = Injekt.get(), private val libraryPreferences: LibraryPreferences = Injekt.get(),
private val coverCache: CoverCache = Injekt.get(), private val coverCache: CoverCache = Injekt.get(),
private val sourceManager: SourceManager = Injekt.get(), private val sourceManager: SourceManager = Injekt.get(),
private val downloadManager: DownloadManager = Injekt.get(), private val downloadManager: DownloadManager = Injekt.get(),
private val trackManager: TrackManager = Injekt.get(), private val trackManager: TrackManager = Injekt.get(),
// SY --> // SY -->
private val unsortedPreferences: UnsortedPreferences = Injekt.get(),
private val sourcePreferences: SourcePreferences = Injekt.get(), private val sourcePreferences: SourcePreferences = Injekt.get(),
private val searchEngine: SearchEngine = SearchEngine(), private val searchEngine: SearchEngine = SearchEngine(),
private val customMangaManager: CustomMangaManager = Injekt.get(), private val customMangaManager: CustomMangaManager = Injekt.get(),
@ -205,9 +207,9 @@ class LibraryPresenter(
// SY --> // SY -->
combine( combine(
preferences.isHentaiEnabled().changes(), unsortedPreferences.isHentaiEnabled().changes(),
sourcePreferences.disabledSources().changes(), sourcePreferences.disabledSources().changes(),
preferences.enableExhentai().changes(), unsortedPreferences.enableExhentai().changes(),
) { isHentaiEnabled, disabledSources, enableExhentai -> ) { isHentaiEnabled, disabledSources, enableExhentai ->
state.showSyncExh = isHentaiEnabled && (EH_SOURCE_ID.toString() !in disabledSources || enableExhentai) state.showSyncExh = isHentaiEnabled && (EH_SOURCE_ID.toString() !in disabledSources || enableExhentai)
}.flowOn(Dispatchers.IO).launchIn(presenterScope) }.flowOn(Dispatchers.IO).launchIn(presenterScope)
@ -806,7 +808,7 @@ class LibraryPresenter(
fun syncMangaToDex(mangaList: List<DbManga>) { fun syncMangaToDex(mangaList: List<DbManga>) {
launchIO { launchIO {
MdUtil.getEnabledMangaDex(preferences, sourcePreferences, sourceManager)?.let { mdex -> MdUtil.getEnabledMangaDex(unsortedPreferences, sourcePreferences, sourceManager)?.let { mdex ->
mangaList.forEach { mangaList.forEach {
mdex.updateFollowStatus(MdUtil.getMangaId(it.url), FollowStatus.READING) mdex.updateFollowStatus(MdUtil.getMangaId(it.url), FollowStatus.READING)
} }

View File

@ -4,6 +4,7 @@ import android.content.Context
import android.util.AttributeSet import android.util.AttributeSet
import android.view.View import android.view.View
import com.bluelinelabs.conductor.Router import com.bluelinelabs.conductor.Router
import eu.kanade.domain.base.BasePreferences
import eu.kanade.domain.category.interactor.GetCategories import eu.kanade.domain.category.interactor.GetCategories
import eu.kanade.domain.category.interactor.SetDisplayModeForCategory import eu.kanade.domain.category.interactor.SetDisplayModeForCategory
import eu.kanade.domain.category.interactor.SetSortModeForCategory import eu.kanade.domain.category.interactor.SetSortModeForCategory
@ -15,7 +16,6 @@ import eu.kanade.domain.library.model.display
import eu.kanade.domain.library.model.sort import eu.kanade.domain.library.model.sort
import eu.kanade.domain.library.service.LibraryPreferences import eu.kanade.domain.library.service.LibraryPreferences
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.data.track.TrackManager
import eu.kanade.tachiyomi.data.track.TrackService import eu.kanade.tachiyomi.data.track.TrackService
import eu.kanade.tachiyomi.util.lang.launchIO import eu.kanade.tachiyomi.util.lang.launchIO
@ -563,7 +563,7 @@ class LibrarySettingsSheet(
open inner class Settings(context: Context, attrs: AttributeSet?) : open inner class Settings(context: Context, attrs: AttributeSet?) :
ExtendedNavigationView(context, attrs) { ExtendedNavigationView(context, attrs) {
val preferences: PreferencesHelper by injectLazy() val preferences: BasePreferences by injectLazy()
val libraryPreferences: LibraryPreferences by injectLazy() val libraryPreferences: LibraryPreferences by injectLazy()
lateinit var adapter: Adapter lateinit var adapter: Adapter

View File

@ -33,8 +33,10 @@ import com.bluelinelabs.conductor.RouterTransaction
import com.google.android.material.navigation.NavigationBarView import com.google.android.material.navigation.NavigationBarView
import com.google.android.material.transition.platform.MaterialContainerTransformSharedElementCallback import com.google.android.material.transition.platform.MaterialContainerTransformSharedElementCallback
import dev.chrisbanes.insetter.applyInsetter import dev.chrisbanes.insetter.applyInsetter
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.domain.library.service.LibraryPreferences import eu.kanade.domain.library.service.LibraryPreferences
import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.domain.ui.UiPreferences
import eu.kanade.tachiyomi.BuildConfig import eu.kanade.tachiyomi.BuildConfig
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.cache.ChapterCache import eu.kanade.tachiyomi.data.cache.ChapterCache
@ -90,6 +92,11 @@ class MainActivity : BaseActivity() {
private val sourcePreferences: SourcePreferences by injectLazy() private val sourcePreferences: SourcePreferences by injectLazy()
private val libraryPreferences: LibraryPreferences by injectLazy() private val libraryPreferences: LibraryPreferences by injectLazy()
private val uiPreferences: UiPreferences by injectLazy()
// SY -->
private val unsortedPreferences: UnsortedPreferences by injectLazy()
// SY <--
lateinit var binding: MainActivityBinding lateinit var binding: MainActivityBinding
@ -142,7 +149,9 @@ class MainActivity : BaseActivity() {
val didMigration = if (savedInstanceState == null) { val didMigration = if (savedInstanceState == null) {
EXHMigrations.upgrade( EXHMigrations.upgrade(
context = applicationContext, context = applicationContext,
preferences = preferences, basePreferences = preferences,
uiPreferences = uiPreferences,
preferenceStore = Injekt.get(),
networkPreferences = Injekt.get(), networkPreferences = Injekt.get(),
sourcePreferences = sourcePreferences, sourcePreferences = sourcePreferences,
securityPreferences = Injekt.get(), securityPreferences = Injekt.get(),
@ -181,7 +190,7 @@ class MainActivity : BaseActivity() {
setSplashScreenExitAnimation(splashScreen) setSplashScreenExitAnimation(splashScreen)
if (binding.sideNav != null) { if (binding.sideNav != null) {
preferences.sideNavIconAlignment() uiPreferences.sideNavIconAlignment()
.asHotFlow { .asHotFlow {
binding.sideNav?.menuGravity = when (it) { binding.sideNav?.menuGravity = when (it) {
1 -> Gravity.CENTER 1 -> Gravity.CENTER
@ -285,8 +294,8 @@ class MainActivity : BaseActivity() {
// SY --> // SY -->
initWhenIdle { initWhenIdle {
// Upload settings // Upload settings
if (preferences.enableExhentai().get() && if (unsortedPreferences.enableExhentai().get() &&
preferences.exhShowSettingsUploadWarning().get() unsortedPreferences.exhShowSettingsUploadWarning().get()
) { ) {
WarnConfigureDialogController.uploadSettings(router) WarnConfigureDialogController.uploadSettings(router)
} }
@ -302,7 +311,7 @@ class MainActivity : BaseActivity() {
} }
} }
// SY --> // SY -->
if (!preferences.isHentaiEnabled().get()) { if (!unsortedPreferences.isHentaiEnabled().get()) {
BlacklistedSources.HIDDEN_SOURCES += EH_SOURCE_ID BlacklistedSources.HIDDEN_SOURCES += EH_SOURCE_ID
BlacklistedSources.HIDDEN_SOURCES += EXH_SOURCE_ID BlacklistedSources.HIDDEN_SOURCES += EXH_SOURCE_ID
} }
@ -337,7 +346,7 @@ class MainActivity : BaseActivity() {
.launchIn(lifecycleScope) .launchIn(lifecycleScope)
// SY --> // SY -->
preferences.bottomBarLabels() uiPreferences.bottomBarLabels()
.asHotFlow { setNavLabelVisibility() } .asHotFlow { setNavLabelVisibility() }
.launchIn(lifecycleScope) .launchIn(lifecycleScope)
// SY <-- // SY <--
@ -564,7 +573,7 @@ class MainActivity : BaseActivity() {
lifecycleScope.launchUI { resetExitConfirmation() } lifecycleScope.launchUI { resetExitConfirmation() }
} else if (backstackSize == 1 || !router.handleBack()) { } else if (backstackSize == 1 || !router.handleBack()) {
// Regular back (i.e. closing the app) // Regular back (i.e. closing the app)
if (preferences.autoClearChapterCache().get()) { if (libraryPreferences.autoClearChapterCache().get()) {
chapterCache.clear() chapterCache.clear()
} }
super.onBackPressed() super.onBackPressed()
@ -709,8 +718,8 @@ class MainActivity : BaseActivity() {
// SY --> // SY -->
private fun updateNavMenu(menu: Menu) { private fun updateNavMenu(menu: Menu) {
menu.findItem(R.id.nav_updates).isVisible = preferences.showNavUpdates().get() menu.findItem(R.id.nav_updates).isVisible = uiPreferences.showNavUpdates().get()
menu.findItem(R.id.nav_history).isVisible = preferences.showNavHistory().get() menu.findItem(R.id.nav_history).isVisible = uiPreferences.showNavHistory().get()
} }
// SY <-- // SY <--
@ -719,7 +728,7 @@ class MainActivity : BaseActivity() {
// SY --> // SY -->
private fun setNavLabelVisibility() { private fun setNavLabelVisibility() {
if (preferences.bottomBarLabels().get()) { if (uiPreferences.bottomBarLabels().get()) {
nav.labelVisibilityMode = NavigationBarView.LABEL_VISIBILITY_LABELED nav.labelVisibilityMode = NavigationBarView.LABEL_VISIBILITY_LABELED
} else { } else {
nav.labelVisibilityMode = NavigationBarView.LABEL_VISIBILITY_SELECTED nav.labelVisibilityMode = NavigationBarView.LABEL_VISIBILITY_SELECTED

View File

@ -19,6 +19,7 @@ import com.bluelinelabs.conductor.ControllerChangeHandler
import com.bluelinelabs.conductor.ControllerChangeType import com.bluelinelabs.conductor.ControllerChangeType
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import eu.kanade.data.chapter.NoChaptersException import eu.kanade.data.chapter.NoChaptersException
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.domain.manga.model.toDbManga import eu.kanade.domain.manga.model.toDbManga
import eu.kanade.presentation.components.ChangeCategoryDialog import eu.kanade.presentation.components.ChangeCategoryDialog
import eu.kanade.presentation.components.ChapterDownloadAction import eu.kanade.presentation.components.ChapterDownloadAction
@ -32,7 +33,6 @@ import eu.kanade.presentation.util.calculateWindowWidthSizeClass
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.download.DownloadService import eu.kanade.tachiyomi.data.download.DownloadService
import eu.kanade.tachiyomi.data.download.model.Download import eu.kanade.tachiyomi.data.download.model.Download
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.track.model.TrackSearch import eu.kanade.tachiyomi.data.track.model.TrackSearch
import eu.kanade.tachiyomi.network.HttpException import eu.kanade.tachiyomi.network.HttpException
import eu.kanade.tachiyomi.source.CatalogueSource import eu.kanade.tachiyomi.source.CatalogueSource
@ -523,7 +523,7 @@ class MangaController : FullComposeController<MangaPresenter> {
val manga = presenter.manga ?: return val manga = presenter.manga ?: return
// SY --> // SY -->
PreMigrationController.navigateToMigration( PreMigrationController.navigateToMigration(
Injekt.get<PreferencesHelper>().skipPreMigration().get(), Injekt.get<UnsortedPreferences>().skipPreMigration().get(),
router, router,
listOf(manga.id), listOf(manga.id),
) )

View File

@ -6,6 +6,7 @@ import android.os.Bundle
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import eu.kanade.core.prefs.CheckboxState import eu.kanade.core.prefs.CheckboxState
import eu.kanade.core.prefs.mapAsCheckboxState import eu.kanade.core.prefs.mapAsCheckboxState
import eu.kanade.domain.base.BasePreferences
import eu.kanade.domain.category.interactor.GetCategories import eu.kanade.domain.category.interactor.GetCategories
import eu.kanade.domain.category.interactor.SetMangaCategories import eu.kanade.domain.category.interactor.SetMangaCategories
import eu.kanade.domain.category.model.Category import eu.kanade.domain.category.model.Category
@ -45,13 +46,13 @@ import eu.kanade.domain.track.interactor.GetTracks
import eu.kanade.domain.track.interactor.InsertTrack import eu.kanade.domain.track.interactor.InsertTrack
import eu.kanade.domain.track.model.toDbTrack import eu.kanade.domain.track.model.toDbTrack
import eu.kanade.domain.track.model.toDomainTrack import eu.kanade.domain.track.model.toDomainTrack
import eu.kanade.domain.ui.UiPreferences
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.database.models.Track import eu.kanade.tachiyomi.data.database.models.Track
import eu.kanade.tachiyomi.data.database.models.toDomainManga import eu.kanade.tachiyomi.data.database.models.toDomainManga
import eu.kanade.tachiyomi.data.download.DownloadManager import eu.kanade.tachiyomi.data.download.DownloadManager
import eu.kanade.tachiyomi.data.download.model.Download import eu.kanade.tachiyomi.data.download.model.Download
import eu.kanade.tachiyomi.data.library.CustomMangaManager import eu.kanade.tachiyomi.data.library.CustomMangaManager
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.track.EnhancedTrackService import eu.kanade.tachiyomi.data.track.EnhancedTrackService
import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.data.track.TrackManager
import eu.kanade.tachiyomi.data.track.TrackService import eu.kanade.tachiyomi.data.track.TrackService
@ -127,7 +128,8 @@ class MangaPresenter(
val mangaId: Long, val mangaId: Long,
val isFromSource: Boolean, val isFromSource: Boolean,
val smartSearched: Boolean, val smartSearched: Boolean,
private val preferences: PreferencesHelper = Injekt.get(), private val basePreferences: BasePreferences = Injekt.get(),
private val uiPreferences: UiPreferences = Injekt.get(),
private val downloadPreferences: DownloadPreferences = Injekt.get(), private val downloadPreferences: DownloadPreferences = Injekt.get(),
private val libraryPreferences: LibraryPreferences = Injekt.get(), private val libraryPreferences: LibraryPreferences = Injekt.get(),
private val trackManager: TrackManager = Injekt.get(), private val trackManager: TrackManager = Injekt.get(),
@ -267,8 +269,8 @@ class MangaPresenter(
isDownloadedOnlyMode = downloadedOnlyMode, isDownloadedOnlyMode = downloadedOnlyMode,
dialog = null, dialog = null,
// SY --> // SY -->
showRecommendationsInOverflow = preferences.recommendsInOverflow().get(), showRecommendationsInOverflow = uiPreferences.recommendsInOverflow().get(),
showMergeInOverflow = preferences.mergeInOverflow().get(), showMergeInOverflow = uiPreferences.mergeInOverflow().get(),
showMergeWithAnother = smartSearched, showMergeWithAnother = smartSearched,
mergedData = null, mergedData = null,
meta = null, meta = null,
@ -355,11 +357,11 @@ class MangaPresenter(
context = view?.activity ?: Injekt.get<Application>(), context = view?.activity ?: Injekt.get<Application>(),
manga = manga, manga = manga,
// SY --> // SY -->
dateRelativeTime = if (manga.isEhBasedManga()) 0 else preferences.relativeTime().get(), dateRelativeTime = if (manga.isEhBasedManga()) 0 else uiPreferences.relativeTime().get(),
dateFormat = if (manga.isEhBasedManga()) { dateFormat = if (manga.isEhBasedManga()) {
MetadataUtil.EX_DATE_FORMAT MetadataUtil.EX_DATE_FORMAT
} else { } else {
preferences.dateFormat() UiPreferences.dateFormat(uiPreferences.dateFormat().get())
}, },
mergedData = mergedData, mergedData = mergedData,
alwaysShowReadingProgress = readerPreferences.preserveReadingPosition().get() && manga.isEhBasedManga(), alwaysShowReadingProgress = readerPreferences.preserveReadingPosition().get() && manga.isEhBasedManga(),
@ -390,11 +392,11 @@ class MangaPresenter(
} }
} }
preferences.incognitoMode() basePreferences.incognitoMode()
.asHotFlow { incognitoMode = it } .asHotFlow { incognitoMode = it }
.launchIn(presenterScope) .launchIn(presenterScope)
preferences.downloadedOnly() basePreferences.downloadedOnly()
.asHotFlow { downloadedOnlyMode = it } .asHotFlow { downloadedOnlyMode = it }
.launchIn(presenterScope) .launchIn(presenterScope)
} }

View File

@ -3,8 +3,8 @@ package eu.kanade.tachiyomi.ui.manga.track
import android.annotation.SuppressLint import android.annotation.SuppressLint
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import eu.kanade.domain.ui.UiPreferences
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.databinding.TrackItemBinding import eu.kanade.tachiyomi.databinding.TrackItemBinding
import eu.kanade.tachiyomi.util.view.popupMenu import eu.kanade.tachiyomi.util.view.popupMenu
import uy.kohesive.injekt.injectLazy import uy.kohesive.injekt.injectLazy
@ -12,10 +12,10 @@ import java.text.DateFormat
class TrackHolder(private val binding: TrackItemBinding, adapter: TrackAdapter) : RecyclerView.ViewHolder(binding.root) { class TrackHolder(private val binding: TrackItemBinding, adapter: TrackAdapter) : RecyclerView.ViewHolder(binding.root) {
private val preferences: PreferencesHelper by injectLazy() private val preferences: UiPreferences by injectLazy()
private val dateFormat: DateFormat by lazy { private val dateFormat: DateFormat by lazy {
preferences.dateFormat() UiPreferences.dateFormat(preferences.dateFormat().get())
} }
private val listener = adapter.rowClickListener private val listener = adapter.rowClickListener

View File

@ -1,10 +1,10 @@
package eu.kanade.tachiyomi.ui.more package eu.kanade.tachiyomi.ui.more
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import eu.kanade.domain.ui.UiPreferences
import eu.kanade.presentation.more.about.AboutScreen import eu.kanade.presentation.more.about.AboutScreen
import eu.kanade.tachiyomi.BuildConfig import eu.kanade.tachiyomi.BuildConfig
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.updater.AppUpdateChecker import eu.kanade.tachiyomi.data.updater.AppUpdateChecker
import eu.kanade.tachiyomi.data.updater.AppUpdateResult import eu.kanade.tachiyomi.data.updater.AppUpdateResult
import eu.kanade.tachiyomi.ui.base.controller.BasicFullComposeController import eu.kanade.tachiyomi.ui.base.controller.BasicFullComposeController
@ -24,7 +24,7 @@ import java.util.TimeZone
class AboutController : BasicFullComposeController() { class AboutController : BasicFullComposeController() {
private val preferences: PreferencesHelper by injectLazy() private val preferences: UiPreferences by injectLazy()
private val updateChecker by lazy { AppUpdateChecker() } private val updateChecker by lazy { AppUpdateChecker() }
@Composable @Composable
@ -84,7 +84,7 @@ class AboutController : BasicFullComposeController() {
) )
outputDf.timeZone = TimeZone.getDefault() outputDf.timeZone = TimeZone.getDefault()
buildTime!!.toDateTimestampString(preferences.dateFormat()) buildTime!!.toDateTimestampString(UiPreferences.dateFormat(preferences.dateFormat().get()))
} catch (e: Exception) { } catch (e: Exception) {
BuildConfig.BUILD_TIME BuildConfig.BUILD_TIME
} }

View File

@ -1,9 +1,10 @@
package eu.kanade.tachiyomi.ui.more package eu.kanade.tachiyomi.ui.more
import android.os.Bundle import android.os.Bundle
import eu.kanade.domain.base.BasePreferences
import eu.kanade.domain.ui.UiPreferences
import eu.kanade.tachiyomi.data.download.DownloadManager import eu.kanade.tachiyomi.data.download.DownloadManager
import eu.kanade.tachiyomi.data.download.DownloadService import eu.kanade.tachiyomi.data.download.DownloadService
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter
import eu.kanade.tachiyomi.util.lang.launchIO import eu.kanade.tachiyomi.util.lang.launchIO
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
@ -18,15 +19,18 @@ import uy.kohesive.injekt.api.get
class MorePresenter( class MorePresenter(
private val downloadManager: DownloadManager = Injekt.get(), private val downloadManager: DownloadManager = Injekt.get(),
preferences: PreferencesHelper = Injekt.get(), preferences: BasePreferences = Injekt.get(),
// SY -->
uiPreferences: UiPreferences = Injekt.get(),
// SY <--
) : BasePresenter<MoreController>() { ) : BasePresenter<MoreController>() {
val downloadedOnly = preferences.downloadedOnly().asState() val downloadedOnly = preferences.downloadedOnly().asState()
val incognitoMode = preferences.incognitoMode().asState() val incognitoMode = preferences.incognitoMode().asState()
// SY --> // SY -->
val showNavUpdates = preferences.showNavUpdates().asState() val showNavUpdates = uiPreferences.showNavUpdates().asState()
val showNavHistory = preferences.showNavHistory().asState() val showNavHistory = uiPreferences.showNavHistory().asState()
// SY <-- // SY <--
private var _state: MutableStateFlow<DownloadQueueState> = MutableStateFlow(DownloadQueueState.Stopped) private var _state: MutableStateFlow<DownloadQueueState> = MutableStateFlow(DownloadQueueState.Stopped)

View File

@ -6,6 +6,7 @@ import android.net.Uri
import android.os.Bundle import android.os.Bundle
import androidx.annotation.ColorInt import androidx.annotation.ColorInt
import com.jakewharton.rxrelay.BehaviorRelay import com.jakewharton.rxrelay.BehaviorRelay
import eu.kanade.domain.base.BasePreferences
import eu.kanade.domain.chapter.interactor.GetChapterByMangaId import eu.kanade.domain.chapter.interactor.GetChapterByMangaId
import eu.kanade.domain.chapter.interactor.UpdateChapter import eu.kanade.domain.chapter.interactor.UpdateChapter
import eu.kanade.domain.chapter.model.ChapterUpdate import eu.kanade.domain.chapter.model.ChapterUpdate
@ -24,12 +25,12 @@ import eu.kanade.domain.track.interactor.GetTracks
import eu.kanade.domain.track.interactor.InsertTrack import eu.kanade.domain.track.interactor.InsertTrack
import eu.kanade.domain.track.model.toDbTrack import eu.kanade.domain.track.model.toDbTrack
import eu.kanade.domain.track.service.TrackPreferences import eu.kanade.domain.track.service.TrackPreferences
import eu.kanade.domain.ui.UiPreferences
import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.data.database.models.toDomainChapter import eu.kanade.tachiyomi.data.database.models.toDomainChapter
import eu.kanade.tachiyomi.data.database.models.toDomainManga import eu.kanade.tachiyomi.data.database.models.toDomainManga
import eu.kanade.tachiyomi.data.download.DownloadManager import eu.kanade.tachiyomi.data.download.DownloadManager
import eu.kanade.tachiyomi.data.download.model.Download import eu.kanade.tachiyomi.data.download.model.Download
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.saver.Image import eu.kanade.tachiyomi.data.saver.Image
import eu.kanade.tachiyomi.data.saver.ImageSaver import eu.kanade.tachiyomi.data.saver.ImageSaver
import eu.kanade.tachiyomi.data.saver.Location import eu.kanade.tachiyomi.data.saver.Location
@ -100,7 +101,7 @@ import eu.kanade.tachiyomi.data.database.models.Chapter as DbChapter
class ReaderPresenter( class ReaderPresenter(
private val sourceManager: SourceManager = Injekt.get(), private val sourceManager: SourceManager = Injekt.get(),
private val downloadManager: DownloadManager = Injekt.get(), private val downloadManager: DownloadManager = Injekt.get(),
private val preferences: PreferencesHelper = Injekt.get(), preferences: BasePreferences = Injekt.get(),
private val downloadPreferences: DownloadPreferences = Injekt.get(), private val downloadPreferences: DownloadPreferences = Injekt.get(),
private val readerPreferences: ReaderPreferences = Injekt.get(), private val readerPreferences: ReaderPreferences = Injekt.get(),
private val trackPreferences: TrackPreferences = Injekt.get(), private val trackPreferences: TrackPreferences = Injekt.get(),
@ -113,6 +114,7 @@ class ReaderPresenter(
private val updateChapter: UpdateChapter = Injekt.get(), private val updateChapter: UpdateChapter = Injekt.get(),
private val setMangaViewerFlags: SetMangaViewerFlags = Injekt.get(), private val setMangaViewerFlags: SetMangaViewerFlags = Injekt.get(),
// SY --> // SY -->
private val uiPreferences: UiPreferences = Injekt.get(),
private val getFlatMetadataById: GetFlatMetadataById = Injekt.get(), private val getFlatMetadataById: GetFlatMetadataById = Injekt.get(),
private val getMergedManga: GetMergedManga = Injekt.get(), private val getMergedManga: GetMergedManga = Injekt.get(),
private val getMergedReferencesById: GetMergedReferencesById = Injekt.get(), private val getMergedReferencesById: GetMergedReferencesById = Injekt.get(),
@ -379,7 +381,7 @@ class ReaderPresenter(
manga!!.toDomainManga()!!, manga!!.toDomainManga()!!,
it.chapter.id == currentChapter?.chapter?.id, it.chapter.id == currentChapter?.chapter?.id,
context, context,
preferences.dateFormat(), UiPreferences.dateFormat(uiPreferences.dateFormat().get()),
decimalFormat, decimalFormat,
) )
} }

View File

@ -13,6 +13,7 @@ import androidx.paging.compose.LazyPagingItems
import androidx.paging.compose.collectAsLazyPagingItems import androidx.paging.compose.collectAsLazyPagingItems
import androidx.paging.insertSeparators import androidx.paging.insertSeparators
import androidx.paging.map import androidx.paging.map
import eu.kanade.domain.base.BasePreferences
import eu.kanade.domain.chapter.model.Chapter import eu.kanade.domain.chapter.model.Chapter
import eu.kanade.domain.history.interactor.DeleteHistoryTable import eu.kanade.domain.history.interactor.DeleteHistoryTable
import eu.kanade.domain.history.interactor.GetHistory import eu.kanade.domain.history.interactor.GetHistory
@ -22,7 +23,6 @@ import eu.kanade.domain.history.interactor.RemoveHistoryByMangaId
import eu.kanade.domain.history.model.HistoryWithRelations import eu.kanade.domain.history.model.HistoryWithRelations
import eu.kanade.presentation.history.HistoryUiModel import eu.kanade.presentation.history.HistoryUiModel
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter
import eu.kanade.tachiyomi.util.lang.launchIO import eu.kanade.tachiyomi.util.lang.launchIO
import eu.kanade.tachiyomi.util.lang.toDateKey import eu.kanade.tachiyomi.util.lang.toDateKey
@ -46,7 +46,7 @@ class HistoryPresenter(
private val deleteHistoryTable: DeleteHistoryTable = Injekt.get(), private val deleteHistoryTable: DeleteHistoryTable = Injekt.get(),
private val removeHistoryById: RemoveHistoryById = Injekt.get(), private val removeHistoryById: RemoveHistoryById = Injekt.get(),
private val removeHistoryByMangaId: RemoveHistoryByMangaId = Injekt.get(), private val removeHistoryByMangaId: RemoveHistoryByMangaId = Injekt.get(),
preferences: PreferencesHelper = Injekt.get(), preferences: BasePreferences = Injekt.get(),
) : BasePresenter<HistoryController>(), HistoryState by state { ) : BasePresenter<HistoryController>(), HistoryState by state {
private val _events: Channel<Event> = Channel(Int.MAX_VALUE) private val _events: Channel<Event> = Channel(Int.MAX_VALUE)

View File

@ -4,6 +4,7 @@ import android.os.Bundle
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import eu.kanade.domain.base.BasePreferences
import eu.kanade.domain.chapter.interactor.GetChapter import eu.kanade.domain.chapter.interactor.GetChapter
import eu.kanade.domain.chapter.interactor.SetReadStatus import eu.kanade.domain.chapter.interactor.SetReadStatus
import eu.kanade.domain.chapter.interactor.UpdateChapter import eu.kanade.domain.chapter.interactor.UpdateChapter
@ -11,6 +12,7 @@ import eu.kanade.domain.chapter.model.ChapterUpdate
import eu.kanade.domain.chapter.model.toDbChapter import eu.kanade.domain.chapter.model.toDbChapter
import eu.kanade.domain.library.service.LibraryPreferences import eu.kanade.domain.library.service.LibraryPreferences
import eu.kanade.domain.manga.interactor.GetManga import eu.kanade.domain.manga.interactor.GetManga
import eu.kanade.domain.ui.UiPreferences
import eu.kanade.domain.updates.interactor.GetUpdates import eu.kanade.domain.updates.interactor.GetUpdates
import eu.kanade.domain.updates.model.UpdatesWithRelations import eu.kanade.domain.updates.model.UpdatesWithRelations
import eu.kanade.presentation.components.ChapterDownloadAction import eu.kanade.presentation.components.ChapterDownloadAction
@ -19,7 +21,6 @@ import eu.kanade.presentation.updates.UpdatesStateImpl
import eu.kanade.tachiyomi.data.download.DownloadManager import eu.kanade.tachiyomi.data.download.DownloadManager
import eu.kanade.tachiyomi.data.download.DownloadService import eu.kanade.tachiyomi.data.download.DownloadService
import eu.kanade.tachiyomi.data.download.model.Download import eu.kanade.tachiyomi.data.download.model.Download
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.source.SourceManager
import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter
import eu.kanade.tachiyomi.util.lang.launchIO import eu.kanade.tachiyomi.util.lang.launchIO
@ -32,6 +33,7 @@ import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.catch import kotlinx.coroutines.flow.catch
import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.receiveAsFlow import kotlinx.coroutines.flow.receiveAsFlow
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import logcat.LogPriority import logcat.LogPriority
@ -50,17 +52,18 @@ class UpdatesPresenter(
private val sourceManager: SourceManager = Injekt.get(), private val sourceManager: SourceManager = Injekt.get(),
private val downloadManager: DownloadManager = Injekt.get(), private val downloadManager: DownloadManager = Injekt.get(),
private val getChapter: GetChapter = Injekt.get(), private val getChapter: GetChapter = Injekt.get(),
preferences: PreferencesHelper = Injekt.get(), basePreferences: BasePreferences = Injekt.get(),
uiPreferences: UiPreferences = Injekt.get(),
libraryPreferences: LibraryPreferences = Injekt.get(), libraryPreferences: LibraryPreferences = Injekt.get(),
) : BasePresenter<UpdatesController>(), UpdatesState by state { ) : BasePresenter<UpdatesController>(), UpdatesState by state {
val isDownloadOnly: Boolean by preferences.downloadedOnly().asState() val isDownloadOnly: Boolean by basePreferences.downloadedOnly().asState()
val isIncognitoMode: Boolean by preferences.incognitoMode().asState() val isIncognitoMode: Boolean by basePreferences.incognitoMode().asState()
val lastUpdated by libraryPreferences.libraryUpdateLastTimestamp().asState() val lastUpdated by libraryPreferences.libraryUpdateLastTimestamp().asState()
val relativeTime: Int by preferences.relativeTime().asState() val relativeTime: Int by uiPreferences.relativeTime().asState()
val dateFormat: DateFormat by mutableStateOf(preferences.dateFormat()) val dateFormat: DateFormat by mutableStateOf(UiPreferences.dateFormat(uiPreferences.dateFormat().get()))
private val _events: Channel<Event> = Channel(Int.MAX_VALUE) private val _events: Channel<Event> = Channel(Int.MAX_VALUE)
val events: Flow<Event> = _events.receiveAsFlow() val events: Flow<Event> = _events.receiveAsFlow()

View File

@ -14,11 +14,15 @@ import androidx.core.net.toUri
import androidx.core.text.HtmlCompat import androidx.core.text.HtmlCompat
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.domain.chapter.interactor.GetChapterByMangaId import eu.kanade.domain.chapter.interactor.GetChapterByMangaId
import eu.kanade.domain.chapter.model.toDbChapter import eu.kanade.domain.chapter.model.toDbChapter
import eu.kanade.domain.library.service.LibraryPreferences
import eu.kanade.domain.manga.interactor.GetAllManga import eu.kanade.domain.manga.interactor.GetAllManga
import eu.kanade.domain.manga.repository.MangaRepository import eu.kanade.domain.manga.repository.MangaRepository
import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.domain.ui.UiPreferences
import eu.kanade.domain.ui.model.TabletUiMode
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.cache.ChapterCache import eu.kanade.tachiyomi.data.cache.ChapterCache
import eu.kanade.tachiyomi.data.cache.PagePreviewCache import eu.kanade.tachiyomi.data.cache.PagePreviewCache
@ -92,8 +96,11 @@ class SettingsAdvancedController(
private val chapterCache: ChapterCache by injectLazy() private val chapterCache: ChapterCache by injectLazy()
private val trackManager: TrackManager by injectLazy() private val trackManager: TrackManager by injectLazy()
private val networkPreferences: NetworkPreferences by injectLazy() private val networkPreferences: NetworkPreferences by injectLazy()
private val libraryPreferences: LibraryPreferences by injectLazy()
private val uiPreferences: UiPreferences by injectLazy()
private val sourcePreferences: SourcePreferences by injectLazy() private val sourcePreferences: SourcePreferences by injectLazy()
private val delegateSourcePreferences: DelegateSourcePreferences by injectLazy() private val delegateSourcePreferences: DelegateSourcePreferences by injectLazy()
private val unsortedPreferences: UnsortedPreferences by injectLazy()
private val getAllManga: GetAllManga by injectLazy() private val getAllManga: GetAllManga by injectLazy()
private val getChapterByMangaId: GetChapterByMangaId by injectLazy() private val getChapterByMangaId: GetChapterByMangaId by injectLazy()
private val pagePreviewCache: PagePreviewCache by injectLazy() private val pagePreviewCache: PagePreviewCache by injectLazy()
@ -183,7 +190,7 @@ class SettingsAdvancedController(
} }
// SY <-- // SY <--
switchPreference { switchPreference {
bindTo(preferences.autoClearChapterCache()) bindTo(libraryPreferences.autoClearChapterCache())
titleRes = R.string.pref_auto_clear_chapter_cache titleRes = R.string.pref_auto_clear_chapter_cache
} }
preference { preference {
@ -354,11 +361,11 @@ class SettingsAdvancedController(
titleRes = R.string.pref_category_display titleRes = R.string.pref_category_display
listPreference { listPreference {
bindTo(preferences.tabletUiMode()) bindTo(uiPreferences.tabletUiMode())
titleRes = R.string.pref_tablet_ui_mode titleRes = R.string.pref_tablet_ui_mode
summary = "%s" summary = "%s"
entriesRes = PreferenceValues.TabletUiMode.values().map { it.titleResId }.toTypedArray() entriesRes = TabletUiMode.values().map { it.titleResId }.toTypedArray()
entryValues = PreferenceValues.TabletUiMode.values().map { it.name }.toTypedArray() entryValues = TabletUiMode.values().map { it.name }.toTypedArray()
onChange { onChange {
activity?.toast(R.string.requires_app_restart) activity?.toast(R.string.requires_app_restart)
@ -454,12 +461,12 @@ class SettingsAdvancedController(
isPersistent = false isPersistent = false
switchPreference { switchPreference {
bindTo(preferences.isHentaiEnabled()) bindTo(unsortedPreferences.isHentaiEnabled())
titleRes = R.string.toggle_hentai_features titleRes = R.string.toggle_hentai_features
summaryRes = R.string.toggle_hentai_features_summary summaryRes = R.string.toggle_hentai_features_summary
onChange { onChange {
if (preferences.isHentaiEnabled().get()) { if (unsortedPreferences.isHentaiEnabled().get()) {
BlacklistedSources.HIDDEN_SOURCES += EH_SOURCE_ID BlacklistedSources.HIDDEN_SOURCES += EH_SOURCE_ID
BlacklistedSources.HIDDEN_SOURCES += EXH_SOURCE_ID BlacklistedSources.HIDDEN_SOURCES += EXH_SOURCE_ID
} else { } else {
@ -477,7 +484,7 @@ class SettingsAdvancedController(
} }
intListPreference { intListPreference {
bindTo(preferences.logLevel()) bindTo(unsortedPreferences.logLevel())
titleRes = R.string.log_level titleRes = R.string.log_level
entries = EHLogLevel.values().map { entries = EHLogLevel.values().map {

View File

@ -5,9 +5,11 @@ import android.os.Bundle
import android.view.View import android.view.View
import androidx.core.app.ActivityCompat import androidx.core.app.ActivityCompat
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import eu.kanade.domain.ui.UiPreferences
import eu.kanade.domain.ui.model.AppTheme
import eu.kanade.domain.ui.model.ThemeMode
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.util.preference.bindTo import eu.kanade.tachiyomi.util.preference.bindTo
import eu.kanade.tachiyomi.util.preference.defaultValue
import eu.kanade.tachiyomi.util.preference.entriesRes import eu.kanade.tachiyomi.util.preference.entriesRes
import eu.kanade.tachiyomi.util.preference.initThenAdd import eu.kanade.tachiyomi.util.preference.initThenAdd
import eu.kanade.tachiyomi.util.preference.intListPreference import eu.kanade.tachiyomi.util.preference.intListPreference
@ -20,13 +22,13 @@ import eu.kanade.tachiyomi.util.system.DeviceUtil
import eu.kanade.tachiyomi.util.system.isDynamicColorAvailable import eu.kanade.tachiyomi.util.system.isDynamicColorAvailable
import eu.kanade.tachiyomi.util.system.isTablet import eu.kanade.tachiyomi.util.system.isTablet
import eu.kanade.tachiyomi.widget.preference.ThemesPreference import eu.kanade.tachiyomi.widget.preference.ThemesPreference
import uy.kohesive.injekt.injectLazy
import java.util.Date import java.util.Date
import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys
import eu.kanade.tachiyomi.data.preference.PreferenceValues as Values
class SettingsAppearanceController : SettingsController() { class SettingsAppearanceController : SettingsController() {
private var themesPreference: ThemesPreference? = null private var themesPreference: ThemesPreference? = null
private val uiPreferences: UiPreferences by injectLazy()
override fun setupPreferenceScreen(screen: PreferenceScreen) = screen.apply { override fun setupPreferenceScreen(screen: PreferenceScreen) = screen.apply {
titleRes = R.string.pref_category_appearance titleRes = R.string.pref_category_appearance
@ -35,7 +37,7 @@ class SettingsAppearanceController : SettingsController() {
titleRes = R.string.pref_category_theme titleRes = R.string.pref_category_theme
listPreference { listPreference {
bindTo(preferences.themeMode()) bindTo(uiPreferences.themeMode())
titleRes = R.string.pref_theme_mode titleRes = R.string.pref_theme_mode
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
@ -45,9 +47,9 @@ class SettingsAppearanceController : SettingsController() {
R.string.theme_dark, R.string.theme_dark,
) )
entryValues = arrayOf( entryValues = arrayOf(
Values.ThemeMode.system.name, ThemeMode.SYSTEM.name,
Values.ThemeMode.light.name, ThemeMode.LIGHT.name,
Values.ThemeMode.dark.name, ThemeMode.DARK.name,
) )
} else { } else {
entriesRes = arrayOf( entriesRes = arrayOf(
@ -55,19 +57,19 @@ class SettingsAppearanceController : SettingsController() {
R.string.theme_dark, R.string.theme_dark,
) )
entryValues = arrayOf( entryValues = arrayOf(
Values.ThemeMode.light.name, ThemeMode.LIGHT.name,
Values.ThemeMode.dark.name, ThemeMode.DARK.name,
) )
} }
summary = "%s" summary = "%s"
} }
themesPreference = initThenAdd(ThemesPreference(context)) { themesPreference = initThenAdd(ThemesPreference(context)) {
bindTo(preferences.appTheme()) bindTo(uiPreferences.appTheme())
titleRes = R.string.pref_app_theme titleRes = R.string.pref_app_theme
val appThemes = Values.AppTheme.values().filter { val appThemes = AppTheme.values().filter {
val monetFilter = if (it == Values.AppTheme.MONET) { val monetFilter = if (it == AppTheme.MONET) {
DeviceUtil.isDynamicColorAvailable DeviceUtil.isDynamicColorAvailable
} else { } else {
true true
@ -82,10 +84,10 @@ class SettingsAppearanceController : SettingsController() {
} }
} }
switchPreference { switchPreference {
bindTo(preferences.themeDarkAmoled()) bindTo(uiPreferences.themeDarkAmoled())
titleRes = R.string.pref_dark_theme_pure_black titleRes = R.string.pref_dark_theme_pure_black
visibleIf(preferences.themeMode()) { it != Values.ThemeMode.light } visibleIf(uiPreferences.themeMode()) { it != ThemeMode.LIGHT }
onChange { onChange {
activity?.let { ActivityCompat.recreate(it) } activity?.let { ActivityCompat.recreate(it) }
@ -99,7 +101,7 @@ class SettingsAppearanceController : SettingsController() {
titleRes = R.string.pref_category_navigation titleRes = R.string.pref_category_navigation
intListPreference { intListPreference {
bindTo(preferences.sideNavIconAlignment()) bindTo(uiPreferences.sideNavIconAlignment())
titleRes = R.string.pref_side_nav_icon_alignment titleRes = R.string.pref_side_nav_icon_alignment
entriesRes = arrayOf( entriesRes = arrayOf(
R.string.alignment_top, R.string.alignment_top,
@ -116,7 +118,7 @@ class SettingsAppearanceController : SettingsController() {
titleRes = R.string.pref_category_timestamps titleRes = R.string.pref_category_timestamps
intListPreference { intListPreference {
bindTo(preferences.relativeTime()) bindTo(uiPreferences.relativeTime())
titleRes = R.string.pref_relative_format titleRes = R.string.pref_relative_format
val values = arrayOf("0", "2", "7") val values = arrayOf("0", "2", "7")
entryValues = values entryValues = values
@ -131,13 +133,13 @@ class SettingsAppearanceController : SettingsController() {
} }
listPreference { listPreference {
key = Keys.dateFormat bindTo(uiPreferences.dateFormat())
titleRes = R.string.pref_date_format titleRes = R.string.pref_date_format
entryValues = arrayOf("", "MM/dd/yy", "dd/MM/yy", "yyyy-MM-dd", "dd MMM yyyy", "MMM dd, yyyy") entryValues = arrayOf("", "MM/dd/yy", "dd/MM/yy", "yyyy-MM-dd", "dd MMM yyyy", "MMM dd, yyyy")
val now = Date().time val now = Date().time
entries = entryValues.map { value -> entries = entryValues.map { value ->
val formattedDate = preferences.dateFormat(value.toString()).format(now) val formattedDate = UiPreferences.dateFormat(value.toString()).format(now)
if (value == "") { if (value == "") {
"${context.getString(R.string.label_default)} ($formattedDate)" "${context.getString(R.string.label_default)} ($formattedDate)"
} else { } else {
@ -145,7 +147,6 @@ class SettingsAppearanceController : SettingsController() {
} }
}.toTypedArray() }.toTypedArray()
defaultValue = ""
summary = "%s" summary = "%s"
} }
} }
@ -154,15 +155,15 @@ class SettingsAppearanceController : SettingsController() {
titleRes = R.string.pref_category_navbar titleRes = R.string.pref_category_navbar
switchPreference { switchPreference {
bindTo(preferences.showNavUpdates()) bindTo(uiPreferences.showNavUpdates())
titleRes = R.string.pref_hide_updates_button titleRes = R.string.pref_hide_updates_button
} }
switchPreference { switchPreference {
bindTo(preferences.showNavHistory()) bindTo(uiPreferences.showNavHistory())
titleRes = R.string.pref_hide_history_button titleRes = R.string.pref_hide_history_button
} }
switchPreference { switchPreference {
bindTo(preferences.bottomBarLabels()) bindTo(uiPreferences.bottomBarLabels())
titleRes = R.string.pref_show_bottom_bar_labels titleRes = R.string.pref_show_bottom_bar_labels
} }
} }

View File

@ -2,7 +2,9 @@ package eu.kanade.tachiyomi.ui.setting
import androidx.fragment.app.FragmentActivity import androidx.fragment.app.FragmentActivity
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.domain.ui.UiPreferences
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.extension.ExtensionUpdateJob import eu.kanade.tachiyomi.extension.ExtensionUpdateJob
import eu.kanade.tachiyomi.ui.base.controller.pushController import eu.kanade.tachiyomi.ui.base.controller.pushController
@ -25,6 +27,11 @@ class SettingsBrowseController : SettingsController() {
private val sourcePreferences: SourcePreferences by injectLazy() private val sourcePreferences: SourcePreferences by injectLazy()
// SY -->
private val uiPreferences: UiPreferences by injectLazy()
private val unsortedPreferences: UnsortedPreferences by injectLazy()
// SY <--
override fun setupPreferenceScreen(screen: PreferenceScreen) = screen.apply { override fun setupPreferenceScreen(screen: PreferenceScreen) = screen.apply {
titleRes = R.string.browse titleRes = R.string.browse
@ -49,12 +56,12 @@ class SettingsBrowseController : SettingsController() {
summaryRes = R.string.pref_source_source_filtering_summery summaryRes = R.string.pref_source_source_filtering_summery
} }
switchPreference { switchPreference {
bindTo(preferences.useNewSourceNavigation()) bindTo(uiPreferences.useNewSourceNavigation())
titleRes = R.string.pref_source_navigation titleRes = R.string.pref_source_navigation
summaryRes = R.string.pref_source_navigation_summery summaryRes = R.string.pref_source_navigation_summery
} }
switchPreference { switchPreference {
bindTo(preferences.allowLocalSourceHiddenFolders()) bindTo(unsortedPreferences.allowLocalSourceHiddenFolders())
titleRes = R.string.pref_local_source_hidden_folders titleRes = R.string.pref_local_source_hidden_folders
summaryRes = R.string.pref_local_source_hidden_folders_summery summaryRes = R.string.pref_local_source_hidden_folders_summery
} }
@ -64,7 +71,7 @@ class SettingsBrowseController : SettingsController() {
titleRes = R.string.feed titleRes = R.string.feed
switchPreference { switchPreference {
bindTo(preferences.feedTabInFront()) bindTo(uiPreferences.feedTabInFront())
titleRes = R.string.pref_feed_position titleRes = R.string.pref_feed_position
summaryRes = R.string.pref_feed_position_summery summaryRes = R.string.pref_feed_position_summery
} }
@ -99,7 +106,7 @@ class SettingsBrowseController : SettingsController() {
key = "pref_edit_extension_repos" key = "pref_edit_extension_repos"
titleRes = R.string.action_edit_repos titleRes = R.string.action_edit_repos
val catCount = preferences.extensionRepos().get().count() val catCount = unsortedPreferences.extensionRepos().get().count()
summary = context.resources.getQuantityString(R.plurals.num_repos, catCount, catCount) summary = context.resources.getQuantityString(R.plurals.num_repos, catCount, catCount)
onClick { onClick {

View File

@ -19,8 +19,8 @@ import androidx.preference.PreferenceScreen
import com.bluelinelabs.conductor.ControllerChangeHandler import com.bluelinelabs.conductor.ControllerChangeHandler
import com.bluelinelabs.conductor.ControllerChangeType import com.bluelinelabs.conductor.ControllerChangeType
import dev.chrisbanes.insetter.applyInsetter import dev.chrisbanes.insetter.applyInsetter
import eu.kanade.domain.base.BasePreferences
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.util.preference.asHotFlow import eu.kanade.tachiyomi.util.preference.asHotFlow
import eu.kanade.tachiyomi.util.system.getResourceColor import eu.kanade.tachiyomi.util.system.getResourceColor
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
@ -33,7 +33,7 @@ import uy.kohesive.injekt.api.get
abstract class SettingsController : PreferenceController() { abstract class SettingsController : PreferenceController() {
var preferenceKey: String? = null var preferenceKey: String? = null
val preferences: PreferencesHelper = Injekt.get() val preferences: BasePreferences = Injekt.get()
val viewScope: CoroutineScope = MainScope() val viewScope: CoroutineScope = MainScope()
private var themedContext: Context? = null private var themedContext: Context? = null

View File

@ -13,6 +13,7 @@ import androidx.core.content.getSystemService
import androidx.core.widget.doAfterTextChanged import androidx.core.widget.doAfterTextChanged
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.domain.manga.interactor.DeleteFavoriteEntries import eu.kanade.domain.manga.interactor.DeleteFavoriteEntries
import eu.kanade.domain.manga.interactor.GetExhFavoriteMangaWithMetadata import eu.kanade.domain.manga.interactor.GetExhFavoriteMangaWithMetadata
import eu.kanade.domain.manga.interactor.GetFlatMetadataById import eu.kanade.domain.manga.interactor.GetFlatMetadataById
@ -69,6 +70,7 @@ import kotlin.time.Duration.Companion.seconds
*/ */
class SettingsEhController : SettingsController() { class SettingsEhController : SettingsController() {
val unsortedPreferences: UnsortedPreferences by injectLazy()
private val getFlatMetadataById: GetFlatMetadataById by injectLazy() private val getFlatMetadataById: GetFlatMetadataById by injectLazy()
private val deleteFavoriteEntries: DeleteFavoriteEntries by injectLazy() private val deleteFavoriteEntries: DeleteFavoriteEntries by injectLazy()
private val getExhFavoriteMangaWithMetadata: GetExhFavoriteMangaWithMetadata by injectLazy() private val getExhFavoriteMangaWithMetadata: GetExhFavoriteMangaWithMetadata by injectLazy()
@ -94,11 +96,11 @@ class SettingsEhController : SettingsController() {
titleRes = R.string.ehentai_prefs_account_settings titleRes = R.string.ehentai_prefs_account_settings
switchPreference { switchPreference {
bindTo(preferences.enableExhentai()) bindTo(unsortedPreferences.enableExhentai())
titleRes = R.string.enable_exhentai titleRes = R.string.enable_exhentai
summaryOff = context.getString(R.string.requires_login) summaryOff = context.getString(R.string.requires_login)
isPersistent = false isPersistent = false
preferences.enableExhentai() unsortedPreferences.enableExhentai()
.changes() .changes()
.onEach { .onEach {
isChecked = it isChecked = it
@ -108,7 +110,7 @@ class SettingsEhController : SettingsController() {
onChange { newVal -> onChange { newVal ->
newVal as Boolean newVal as Boolean
if (!newVal) { if (!newVal) {
preferences.enableExhentai().set(false) unsortedPreferences.enableExhentai().set(false)
true true
} else { } else {
startActivityForResult(EhLoginActivity.newIntent(activity!!), LOGIN_RESULT) startActivityForResult(EhLoginActivity.newIntent(activity!!), LOGIN_RESULT)
@ -118,7 +120,7 @@ class SettingsEhController : SettingsController() {
} }
intListPreference { intListPreference {
bindTo(preferences.useHentaiAtHome()) bindTo(unsortedPreferences.useHentaiAtHome())
titleRes = R.string.use_hentai_at_home titleRes = R.string.use_hentai_at_home
summaryRes = R.string.use_hentai_at_home_summary summaryRes = R.string.use_hentai_at_home_summary
entriesRes = arrayOf( entriesRes = arrayOf(
@ -127,31 +129,31 @@ class SettingsEhController : SettingsController() {
) )
entryValues = arrayOf("0", "1") entryValues = arrayOf("0", "1")
onChange { preferences.useHentaiAtHome().reconfigure() } onChange { unsortedPreferences.useHentaiAtHome().reconfigure() }
visibleIf(preferences.enableExhentai()) { it } visibleIf(unsortedPreferences.enableExhentai()) { it }
} }
switchPreference { switchPreference {
bindTo(preferences.useJapaneseTitle()) bindTo(unsortedPreferences.useJapaneseTitle())
titleRes = R.string.show_japanese_titles titleRes = R.string.show_japanese_titles
summaryOn = context.getString(R.string.show_japanese_titles_option_1) summaryOn = context.getString(R.string.show_japanese_titles_option_1)
summaryOff = context.getString(R.string.show_japanese_titles_option_2) summaryOff = context.getString(R.string.show_japanese_titles_option_2)
onChange { preferences.useJapaneseTitle().reconfigure() } onChange { unsortedPreferences.useJapaneseTitle().reconfigure() }
visibleIf(preferences.enableExhentai()) { it } visibleIf(unsortedPreferences.enableExhentai()) { it }
} }
switchPreference { switchPreference {
bindTo(preferences.exhUseOriginalImages()) bindTo(unsortedPreferences.exhUseOriginalImages())
titleRes = R.string.use_original_images titleRes = R.string.use_original_images
summaryOn = context.getString(R.string.use_original_images_on) summaryOn = context.getString(R.string.use_original_images_on)
summaryOff = context.getString(R.string.use_original_images_off) summaryOff = context.getString(R.string.use_original_images_off)
onChange { preferences.exhUseOriginalImages().reconfigure() } onChange { unsortedPreferences.exhUseOriginalImages().reconfigure() }
visibleIf(preferences.enableExhentai()) { it } visibleIf(unsortedPreferences.enableExhentai()) { it }
} }
preference { preference {
@ -159,7 +161,7 @@ class SettingsEhController : SettingsController() {
titleRes = R.string.watched_tags titleRes = R.string.watched_tags
summaryRes = R.string.watched_tags_summary summaryRes = R.string.watched_tags_summary
onClick { onClick {
val intent = if (preferences.enableExhentai().get()) { val intent = if (unsortedPreferences.enableExhentai().get()) {
WebViewActivity.newIntent(activity!!, url = "https://exhentai.org/mytags", title = context.getString(R.string.watched_tags_exh)) WebViewActivity.newIntent(activity!!, url = "https://exhentai.org/mytags", title = context.getString(R.string.watched_tags_exh))
} else { } else {
WebViewActivity.newIntent(activity!!, url = "https://e-hentai.org/mytags", title = context.getString(R.string.watched_tags_eh)) WebViewActivity.newIntent(activity!!, url = "https://e-hentai.org/mytags", title = context.getString(R.string.watched_tags_eh))
@ -167,16 +169,16 @@ class SettingsEhController : SettingsController() {
startActivity(intent) startActivity(intent)
} }
visibleIf(preferences.enableExhentai()) { it } visibleIf(unsortedPreferences.enableExhentai()) { it }
} }
preference { preference {
bindTo(preferences.ehTagFilterValue()) bindTo(unsortedPreferences.ehTagFilterValue())
titleRes = R.string.tag_filtering_threshold titleRes = R.string.tag_filtering_threshold
summary = context.getString(R.string.tag_filtering_threshhold_summary, preferences.ehTagFilterValue().get()) summary = context.getString(R.string.tag_filtering_threshhold_summary, unsortedPreferences.ehTagFilterValue().get())
onClick { onClick {
var value: Int? = preferences.ehTagFilterValue().get() var value: Int? = unsortedPreferences.ehTagFilterValue().get()
MaterialAlertDialogBuilder(activity!!) MaterialAlertDialogBuilder(activity!!)
.setTitle(R.string.tag_filtering_threshold) .setTitle(R.string.tag_filtering_threshold)
.let { builder -> .let { builder ->
@ -201,24 +203,24 @@ class SettingsEhController : SettingsController() {
builder.setView(binding.root) builder.setView(binding.root)
} }
.setPositiveButton(android.R.string.ok) { _, _ -> .setPositiveButton(android.R.string.ok) { _, _ ->
preferences.ehTagFilterValue().set(value ?: return@setPositiveButton) unsortedPreferences.ehTagFilterValue().set(value ?: return@setPositiveButton)
summary = context.getString(R.string.tag_filtering_threshhold_summary, preferences.ehTagFilterValue().get()) summary = context.getString(R.string.tag_filtering_threshhold_summary, unsortedPreferences.ehTagFilterValue().get())
preferences.ehTagFilterValue().reconfigure() unsortedPreferences.ehTagFilterValue().reconfigure()
} }
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
.show() .show()
} }
visibleIf(preferences.enableExhentai()) { it } visibleIf(unsortedPreferences.enableExhentai()) { it }
} }
preference { preference {
bindTo(preferences.ehTagWatchingValue()) bindTo(unsortedPreferences.ehTagWatchingValue())
titleRes = R.string.tag_watching_threshhold titleRes = R.string.tag_watching_threshhold
summary = context.getString(R.string.tag_watching_threshhold_summary, preferences.ehTagWatchingValue().get()) summary = context.getString(R.string.tag_watching_threshhold_summary, unsortedPreferences.ehTagWatchingValue().get())
onClick { onClick {
var value: Int? = preferences.ehTagWatchingValue().get() var value: Int? = unsortedPreferences.ehTagWatchingValue().get()
MaterialAlertDialogBuilder(activity!!) MaterialAlertDialogBuilder(activity!!)
.setTitle(R.string.tag_watching_threshhold) .setTitle(R.string.tag_watching_threshhold)
.let { builder -> .let { builder ->
@ -244,19 +246,19 @@ class SettingsEhController : SettingsController() {
builder.setView(binding.root) builder.setView(binding.root)
} }
.setPositiveButton(android.R.string.ok) { _, _ -> .setPositiveButton(android.R.string.ok) { _, _ ->
preferences.ehTagWatchingValue().set(value ?: return@setPositiveButton) unsortedPreferences.ehTagWatchingValue().set(value ?: return@setPositiveButton)
summary = context.getString(R.string.tag_watching_threshhold_summary, preferences.ehTagWatchingValue().get()) summary = context.getString(R.string.tag_watching_threshhold_summary, unsortedPreferences.ehTagWatchingValue().get())
preferences.ehTagWatchingValue().reconfigure() unsortedPreferences.ehTagWatchingValue().reconfigure()
} }
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
.show() .show()
} }
visibleIf(preferences.enableExhentai()) { it } visibleIf(unsortedPreferences.enableExhentai()) { it }
} }
preference { preference {
bindTo(preferences.exhSettingsLanguages()) bindTo(unsortedPreferences.exhSettingsLanguages())
titleRes = R.string.language_filtering titleRes = R.string.language_filtering
summaryRes = R.string.language_filtering_summary summaryRes = R.string.language_filtering_summary
@ -266,11 +268,11 @@ class SettingsEhController : SettingsController() {
dialog.showDialog(router) dialog.showDialog(router)
} }
visibleIf(preferences.enableExhentai()) { it } visibleIf(unsortedPreferences.enableExhentai()) { it }
} }
preference { preference {
bindTo(preferences.exhEnabledCategories()) bindTo(unsortedPreferences.exhEnabledCategories())
titleRes = R.string.frong_page_categories titleRes = R.string.frong_page_categories
summaryRes = R.string.fromt_page_categories_summary summaryRes = R.string.fromt_page_categories_summary
@ -280,19 +282,19 @@ class SettingsEhController : SettingsController() {
dialog.showDialog(router) dialog.showDialog(router)
} }
visibleIf(preferences.enableExhentai()) { it } visibleIf(unsortedPreferences.enableExhentai()) { it }
} }
switchPreference { switchPreference {
bindTo(preferences.exhWatchedListDefaultState()) bindTo(unsortedPreferences.exhWatchedListDefaultState())
titleRes = R.string.watched_list_default titleRes = R.string.watched_list_default
summaryRes = R.string.watched_list_state_summary summaryRes = R.string.watched_list_state_summary
visibleIf(preferences.enableExhentai()) { it } visibleIf(unsortedPreferences.enableExhentai()) { it }
} }
listPreference { listPreference {
bindTo(preferences.imageQuality()) bindTo(unsortedPreferences.imageQuality())
summaryRes = R.string.eh_image_quality_summary summaryRes = R.string.eh_image_quality_summary
titleRes = R.string.eh_image_quality titleRes = R.string.eh_image_quality
entriesRes = arrayOf( entriesRes = arrayOf(
@ -312,13 +314,13 @@ class SettingsEhController : SettingsController() {
"low", "low",
) )
onChange { preferences.imageQuality().reconfigure() } onChange { unsortedPreferences.imageQuality().reconfigure() }
visibleIf(preferences.enableExhentai()) { it } visibleIf(unsortedPreferences.enableExhentai()) { it }
} }
switchPreference { switchPreference {
bindTo(preferences.enhancedEHentaiView()) bindTo(unsortedPreferences.enhancedEHentaiView())
titleRes = R.string.pref_enhanced_e_hentai_view titleRes = R.string.pref_enhanced_e_hentai_view
summaryRes = R.string.pref_enhanced_e_hentai_view_summary summaryRes = R.string.pref_enhanced_e_hentai_view_summary
} }
@ -328,7 +330,7 @@ class SettingsEhController : SettingsController() {
titleRes = R.string.favorites_sync titleRes = R.string.favorites_sync
switchPreference { switchPreference {
bindTo(preferences.exhReadOnlySync()) bindTo(unsortedPreferences.exhReadOnlySync())
titleRes = R.string.disable_favorites_uploading titleRes = R.string.disable_favorites_uploading
summaryRes = R.string.disable_favorites_uploading_summary summaryRes = R.string.disable_favorites_uploading_summary
} }
@ -346,7 +348,7 @@ class SettingsEhController : SettingsController() {
} }
switchPreference { switchPreference {
bindTo(preferences.exhLenientSync()) bindTo(unsortedPreferences.exhLenientSync())
titleRes = R.string.ignore_sync_errors titleRes = R.string.ignore_sync_errors
summaryRes = R.string.ignore_sync_errors_summary summaryRes = R.string.ignore_sync_errors_summary
} }
@ -381,7 +383,7 @@ class SettingsEhController : SettingsController() {
titleRes = R.string.gallery_update_checker titleRes = R.string.gallery_update_checker
intListPreference { intListPreference {
bindTo(preferences.exhAutoUpdateFrequency()) bindTo(unsortedPreferences.exhAutoUpdateFrequency())
titleRes = R.string.time_between_batches titleRes = R.string.time_between_batches
entriesRes = arrayOf( entriesRes = arrayOf(
R.string.time_between_batches_never, R.string.time_between_batches_never,
@ -395,7 +397,7 @@ class SettingsEhController : SettingsController() {
) )
entryValues = arrayOf("0", "1", "2", "3", "6", "12", "24", "48") entryValues = arrayOf("0", "1", "2", "3", "6", "12", "24", "48")
preferences.exhAutoUpdateFrequency().changes() unsortedPreferences.exhAutoUpdateFrequency().changes()
.onEach { newVal -> .onEach { newVal ->
summary = if (newVal == 0) { summary = if (newVal == 0) {
context.getString(R.string.time_between_batches_summary_1, context.getString(R.string.app_name)) context.getString(R.string.time_between_batches_summary_1, context.getString(R.string.app_name))
@ -413,13 +415,13 @@ class SettingsEhController : SettingsController() {
} }
multiSelectListPreference { multiSelectListPreference {
bindTo(preferences.exhAutoUpdateRequirements()) bindTo(unsortedPreferences.exhAutoUpdateRequirements())
titleRes = R.string.auto_update_restrictions titleRes = R.string.auto_update_restrictions
entriesRes = arrayOf(R.string.connected_to_wifi, R.string.charging) entriesRes = arrayOf(R.string.connected_to_wifi, R.string.charging)
entryValues = arrayOf(DEVICE_ONLY_ON_WIFI, DEVICE_CHARGING) entryValues = arrayOf(DEVICE_ONLY_ON_WIFI, DEVICE_CHARGING)
fun updateSummary() { fun updateSummary() {
val restrictions = preferences.exhAutoUpdateRequirements().get() val restrictions = unsortedPreferences.exhAutoUpdateRequirements().get()
.sorted() .sorted()
.map { .map {
when (it) { when (it) {
@ -437,7 +439,7 @@ class SettingsEhController : SettingsController() {
summary = context.getString(R.string.restrictions, restrictionsText) summary = context.getString(R.string.restrictions, restrictionsText)
} }
visibleIf(preferences.exhAutoUpdateFrequency()) { it > 0 } visibleIf(unsortedPreferences.exhAutoUpdateFrequency()) { it > 0 }
onChange { onChange {
// Post to event looper to allow the preference to be updated. // Post to event looper to allow the preference to be updated.
@ -445,7 +447,7 @@ class SettingsEhController : SettingsController() {
true true
} }
preferences.exhAutoUpdateRequirements().changes() unsortedPreferences.exhAutoUpdateRequirements().changes()
.onEach { updateSummary() } .onEach { updateSummary() }
.launchIn(viewScope) .launchIn(viewScope)
} }
@ -464,7 +466,7 @@ class SettingsEhController : SettingsController() {
viewScope.launch(Dispatchers.IO) { viewScope.launch(Dispatchers.IO) {
val updateInfo = try { val updateInfo = try {
val stats = val stats =
preferences.exhAutoUpdateStats().get().nullIfBlank()?.let { unsortedPreferences.exhAutoUpdateStats().get().nullIfBlank()?.let {
Json.decodeFromString<EHentaiUpdaterStats>(it) Json.decodeFromString<EHentaiUpdaterStats>(it)
} }

View File

@ -6,7 +6,9 @@ import android.provider.Settings
import androidx.appcompat.app.AppCompatDelegate import androidx.appcompat.app.AppCompatDelegate
import androidx.core.os.LocaleListCompat import androidx.core.os.LocaleListCompat
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.domain.library.service.LibraryPreferences import eu.kanade.domain.library.service.LibraryPreferences
import eu.kanade.domain.ui.UiPreferences
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.util.preference.bindTo import eu.kanade.tachiyomi.util.preference.bindTo
import eu.kanade.tachiyomi.util.preference.listPreference import eu.kanade.tachiyomi.util.preference.listPreference
@ -25,6 +27,11 @@ class SettingsGeneralController : SettingsController() {
private val libraryPreferences: LibraryPreferences by injectLazy() private val libraryPreferences: LibraryPreferences by injectLazy()
// SY -->
private val uiPreferences: UiPreferences by injectLazy()
private val unsortedPreferences: UnsortedPreferences by injectLazy()
// SY <--
override fun setupPreferenceScreen(screen: PreferenceScreen) = screen.apply { override fun setupPreferenceScreen(screen: PreferenceScreen) = screen.apply {
titleRes = R.string.pref_category_general titleRes = R.string.pref_category_general
@ -95,24 +102,24 @@ class SettingsGeneralController : SettingsController() {
titleRes = R.string.pref_category_fork titleRes = R.string.pref_category_fork
switchPreference { switchPreference {
bindTo(preferences.expandFilters()) bindTo(uiPreferences.expandFilters())
titleRes = R.string.toggle_expand_search_filters titleRes = R.string.toggle_expand_search_filters
} }
switchPreference { switchPreference {
bindTo(preferences.autoSolveCaptcha()) bindTo(unsortedPreferences.autoSolveCaptcha())
titleRes = R.string.auto_solve_captchas titleRes = R.string.auto_solve_captchas
summaryRes = R.string.auto_solve_captchas_summary summaryRes = R.string.auto_solve_captchas_summary
} }
switchPreference { switchPreference {
bindTo(preferences.recommendsInOverflow()) bindTo(uiPreferences.recommendsInOverflow())
titleRes = R.string.put_recommends_in_overflow titleRes = R.string.put_recommends_in_overflow
summaryRes = R.string.put_recommends_in_overflow_summary summaryRes = R.string.put_recommends_in_overflow_summary
} }
switchPreference { switchPreference {
bindTo(preferences.mergeInOverflow()) bindTo(uiPreferences.mergeInOverflow())
titleRes = R.string.put_merge_in_overflow titleRes = R.string.put_merge_in_overflow
summaryRes = R.string.put_merge_in_overflow_summary summaryRes = R.string.put_merge_in_overflow_summary
} }

View File

@ -7,6 +7,7 @@ import androidx.core.content.ContextCompat
import androidx.core.text.buildSpannedString import androidx.core.text.buildSpannedString
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.domain.category.interactor.GetCategories import eu.kanade.domain.category.interactor.GetCategories
import eu.kanade.domain.category.interactor.ResetCategoryFlags import eu.kanade.domain.category.interactor.ResetCategoryFlags
import eu.kanade.domain.category.model.Category import eu.kanade.domain.category.model.Category
@ -29,7 +30,6 @@ import eu.kanade.tachiyomi.ui.base.controller.pushController
import eu.kanade.tachiyomi.ui.category.CategoryController import eu.kanade.tachiyomi.ui.category.CategoryController
import eu.kanade.tachiyomi.ui.category.genre.SortTagController import eu.kanade.tachiyomi.ui.category.genre.SortTagController
import eu.kanade.tachiyomi.util.preference.bindTo import eu.kanade.tachiyomi.util.preference.bindTo
import eu.kanade.tachiyomi.util.preference.defaultValue
import eu.kanade.tachiyomi.util.preference.entriesRes import eu.kanade.tachiyomi.util.preference.entriesRes
import eu.kanade.tachiyomi.util.preference.intListPreference import eu.kanade.tachiyomi.util.preference.intListPreference
import eu.kanade.tachiyomi.util.preference.listPreference import eu.kanade.tachiyomi.util.preference.listPreference
@ -58,6 +58,10 @@ class SettingsLibraryController : SettingsController() {
private val resetCategoryFlags: ResetCategoryFlags by injectLazy() private val resetCategoryFlags: ResetCategoryFlags by injectLazy()
private val libraryPreferences: LibraryPreferences by injectLazy() private val libraryPreferences: LibraryPreferences by injectLazy()
// SY -->
private val unsortedPreferences: UnsortedPreferences by injectLazy()
// SY <--
override fun setupPreferenceScreen(screen: PreferenceScreen) = screen.apply { override fun setupPreferenceScreen(screen: PreferenceScreen) = screen.apply {
titleRes = R.string.pref_category_library titleRes = R.string.pref_category_library
@ -324,14 +328,14 @@ class SettingsLibraryController : SettingsController() {
} }
} }
if (preferences.skipPreMigration().get() || preferences.migrationSources().get() if (unsortedPreferences.skipPreMigration().get() || unsortedPreferences.migrationSources().get()
.isNotEmpty() .isNotEmpty()
) { ) {
preferenceCategory { preferenceCategory {
titleRes = R.string.migration titleRes = R.string.migration
switchPreference { switchPreference {
bindTo(preferences.skipPreMigration()) bindTo(unsortedPreferences.skipPreMigration())
titleRes = R.string.skip_pre_migration titleRes = R.string.skip_pre_migration
summaryRes = R.string.pref_skip_pre_migration_summary summaryRes = R.string.pref_skip_pre_migration_summary
} }

View File

@ -13,11 +13,11 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.ui.graphics.vector.rememberVectorPainter import androidx.compose.ui.graphics.vector.rememberVectorPainter
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.presentation.more.settings.SettingsMainScreen import eu.kanade.presentation.more.settings.SettingsMainScreen
import eu.kanade.presentation.more.settings.SettingsSection import eu.kanade.presentation.more.settings.SettingsSection
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.ui.base.controller.BasicFullComposeController import eu.kanade.tachiyomi.ui.base.controller.BasicFullComposeController
import eu.kanade.tachiyomi.ui.base.controller.pushController import eu.kanade.tachiyomi.ui.base.controller.pushController
import eu.kanade.tachiyomi.ui.setting.search.SettingsSearchController import eu.kanade.tachiyomi.ui.setting.search.SettingsSearchController
@ -26,7 +26,7 @@ import uy.kohesive.injekt.injectLazy
class SettingsMainController : BasicFullComposeController() { class SettingsMainController : BasicFullComposeController() {
private val preferences: PreferencesHelper by injectLazy() private val preferences: UnsortedPreferences by injectLazy()
// SY --> // SY -->
private val sourcePreferences: SourcePreferences by injectLazy() private val sourcePreferences: SourcePreferences by injectLazy()

View File

@ -2,6 +2,7 @@ package eu.kanade.tachiyomi.ui.setting
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.library.LibraryUpdateService import eu.kanade.tachiyomi.data.library.LibraryUpdateService
@ -23,8 +24,9 @@ class SettingsMangaDexController :
MangadexLoginDialog.Listener, MangadexLoginDialog.Listener,
MangadexLogoutDialog.Listener { MangadexLogoutDialog.Listener {
private val mdex by lazy { MdUtil.getEnabledMangaDex(preferences) }
private val sourcePreferences: SourcePreferences by injectLazy() private val sourcePreferences: SourcePreferences by injectLazy()
private val unsortedPreferences: UnsortedPreferences by injectLazy()
private val mdex by lazy { MdUtil.getEnabledMangaDex(unsortedPreferences, sourcePreferences) }
override fun setupPreferenceScreen(screen: PreferenceScreen) = screen.apply { override fun setupPreferenceScreen(screen: PreferenceScreen) = screen.apply {
titleRes = R.string.mangadex_specific_settings titleRes = R.string.mangadex_specific_settings
@ -48,7 +50,7 @@ class SettingsMangaDexController :
addPreference(sourcePreference) addPreference(sourcePreference)
listPreference { listPreference {
bindTo(preferences.preferredMangaDexId()) bindTo(unsortedPreferences.preferredMangaDexId())
titleRes = R.string.mangadex_preffered_source titleRes = R.string.mangadex_preffered_source
summaryRes = R.string.mangadex_preffered_source_summary summaryRes = R.string.mangadex_preffered_source_summary
val mangaDexs = MdUtil.getEnabledMangaDexs(sourcePreferences) val mangaDexs = MdUtil.getEnabledMangaDexs(sourcePreferences)
@ -78,7 +80,7 @@ class SettingsMangaDexController :
selection[which] = selected selection[which] = selected
} }
.setPositiveButton(android.R.string.ok) { _, _ -> .setPositiveButton(android.R.string.ok) { _, _ ->
preferences.mangadexSyncToLibraryIndexes().set( unsortedPreferences.mangadexSyncToLibraryIndexes().set(
items.filterIndexed { index, _ -> selection[index] } items.filterIndexed { index, _ -> selection[index] }
.mapIndexed { index, _ -> (index + 1).toString() } .mapIndexed { index, _ -> (index + 1).toString() }
.toSet(), .toSet(),

View File

@ -7,8 +7,8 @@ import android.widget.ScrollView
import com.bluelinelabs.conductor.ControllerChangeHandler import com.bluelinelabs.conductor.ControllerChangeHandler
import com.bluelinelabs.conductor.ControllerChangeType import com.bluelinelabs.conductor.ControllerChangeType
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.databinding.EhDialogCategoriesBinding import eu.kanade.tachiyomi.databinding.EhDialogCategoriesBinding
import eu.kanade.tachiyomi.ui.base.controller.DialogController import eu.kanade.tachiyomi.ui.base.controller.DialogController
import eu.kanade.tachiyomi.ui.setting.SettingsEhController import eu.kanade.tachiyomi.ui.setting.SettingsEhController
@ -21,7 +21,7 @@ class FrontPageCategoriesDialog(
var binding: EhDialogCategoriesBinding? = null var binding: EhDialogCategoriesBinding? = null
private set private set
val preferences: PreferencesHelper by injectLazy() val preferences: UnsortedPreferences by injectLazy()
override fun onCreateDialog(savedViewState: Bundle?): Dialog { override fun onCreateDialog(savedViewState: Bundle?): Dialog {
binding = EhDialogCategoriesBinding.inflate(LayoutInflater.from(activity!!)) binding = EhDialogCategoriesBinding.inflate(LayoutInflater.from(activity!!))
@ -80,7 +80,7 @@ class FrontPageCategoriesDialog(
) )
} }
with(targetController as? SettingsEhController ?: return) { with(targetController as? SettingsEhController ?: return) {
preferences.exhSettingsLanguages().reconfigure() unsortedPreferences.exhSettingsLanguages().reconfigure()
} }
} }

View File

@ -7,8 +7,8 @@ import android.widget.ScrollView
import com.bluelinelabs.conductor.ControllerChangeHandler import com.bluelinelabs.conductor.ControllerChangeHandler
import com.bluelinelabs.conductor.ControllerChangeType import com.bluelinelabs.conductor.ControllerChangeType
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.databinding.EhDialogLanguagesBinding import eu.kanade.tachiyomi.databinding.EhDialogLanguagesBinding
import eu.kanade.tachiyomi.ui.base.controller.DialogController import eu.kanade.tachiyomi.ui.base.controller.DialogController
import eu.kanade.tachiyomi.ui.setting.SettingsEhController import eu.kanade.tachiyomi.ui.setting.SettingsEhController
@ -21,7 +21,7 @@ class LanguagesDialog(
var binding: EhDialogLanguagesBinding? = null var binding: EhDialogLanguagesBinding? = null
private set private set
val preferences: PreferencesHelper by injectLazy() val preferences: UnsortedPreferences by injectLazy()
override fun onCreateDialog(savedViewState: Bundle?): Dialog { override fun onCreateDialog(savedViewState: Bundle?): Dialog {
binding = EhDialogLanguagesBinding.inflate(LayoutInflater.from(activity!!)) binding = EhDialogLanguagesBinding.inflate(LayoutInflater.from(activity!!))
@ -170,7 +170,7 @@ class LanguagesDialog(
preferences.exhSettingsLanguages().set(languages) preferences.exhSettingsLanguages().set(languages)
with(targetController as? SettingsEhController ?: return) { with(targetController as? SettingsEhController ?: return) {
preferences.exhSettingsLanguages().reconfigure() unsortedPreferences.exhSettingsLanguages().reconfigure()
} }
} }

View File

@ -9,8 +9,8 @@ import androidx.preference.PreferenceGroup
import androidx.preference.PreferenceManager import androidx.preference.PreferenceManager
import androidx.preference.forEach import androidx.preference.forEach
import androidx.preference.get import androidx.preference.get
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.ui.setting.SettingsAdvancedController import eu.kanade.tachiyomi.ui.setting.SettingsAdvancedController
import eu.kanade.tachiyomi.ui.setting.SettingsAppearanceController import eu.kanade.tachiyomi.ui.setting.SettingsAppearanceController
import eu.kanade.tachiyomi.ui.setting.SettingsBackupController import eu.kanade.tachiyomi.ui.setting.SettingsBackupController
@ -52,7 +52,7 @@ object SettingsSearchHelper {
SettingsSecurityController::class, SettingsSecurityController::class,
SettingsTrackingController::class, SettingsTrackingController::class,
) )
val preferences = Injekt.get<PreferencesHelper>() val preferences = Injekt.get<UnsortedPreferences>()
val sourcePreferences = Injekt.get<SourcePreferences>() val sourcePreferences = Injekt.get<SourcePreferences>()
if (MdUtil.getEnabledMangaDexs(sourcePreferences).isNotEmpty()) { if (MdUtil.getEnabledMangaDexs(sourcePreferences).isNotEmpty()) {
controllers += SettingsMangaDexController::class controllers += SettingsMangaDexController::class

View File

@ -1,7 +1,7 @@
package eu.kanade.tachiyomi.ui.setting.search package eu.kanade.tachiyomi.ui.setting.search
import android.os.Bundle import android.os.Bundle
import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.domain.base.BasePreferences
import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow
@ -10,7 +10,7 @@ import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get import uy.kohesive.injekt.api.get
class SettingsSearchPresenter( class SettingsSearchPresenter(
private val preferences: PreferencesHelper = Injekt.get(), private val preferences: BasePreferences = Injekt.get(),
) : BasePresenter<SettingsSearchController>() { ) : BasePresenter<SettingsSearchController>() {
private val _state: MutableStateFlow<List<SettingsSearchHelper.SettingsSearchResult>> = private val _state: MutableStateFlow<List<SettingsSearchHelper.SettingsSearchResult>> =

View File

@ -36,9 +36,9 @@ import androidx.core.graphics.green
import androidx.core.graphics.red import androidx.core.graphics.red
import androidx.core.net.toUri import androidx.core.net.toUri
import com.hippo.unifile.UniFile import com.hippo.unifile.UniFile
import eu.kanade.domain.ui.UiPreferences
import eu.kanade.domain.ui.model.TabletUiMode
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferenceValues
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.ui.base.delegate.ThemingDelegate import eu.kanade.tachiyomi.ui.base.delegate.ThemingDelegate
import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences
import eu.kanade.tachiyomi.util.lang.truncateCenter import eu.kanade.tachiyomi.util.lang.truncateCenter
@ -262,11 +262,11 @@ fun Context.isTablet(): Boolean {
fun Context.prepareTabletUiContext(): Context { fun Context.prepareTabletUiContext(): Context {
val configuration = resources.configuration val configuration = resources.configuration
val expected = when (Injekt.get<PreferencesHelper>().tabletUiMode().get()) { val expected = when (Injekt.get<UiPreferences>().tabletUiMode().get()) {
PreferenceValues.TabletUiMode.AUTOMATIC -> isTablet() TabletUiMode.AUTOMATIC -> isTablet()
PreferenceValues.TabletUiMode.ALWAYS -> true TabletUiMode.ALWAYS -> true
PreferenceValues.TabletUiMode.LANDSCAPE -> configuration.orientation == Configuration.ORIENTATION_LANDSCAPE TabletUiMode.LANDSCAPE -> configuration.orientation == Configuration.ORIENTATION_LANDSCAPE
PreferenceValues.TabletUiMode.NEVER -> false TabletUiMode.NEVER -> false
} }
if (configuration.smallestScreenWidthDp >= TABLET_UI_MIN_SCREEN_WIDTH_DP != expected) { if (configuration.smallestScreenWidthDp >= TABLET_UI_MIN_SCREEN_WIDTH_DP != expected) {
val overrideConf = Configuration() val overrideConf = Configuration()
@ -295,7 +295,7 @@ fun Context.isNightMode(): Boolean {
* https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:appcompat/appcompat/src/main/java/androidx/appcompat/app/AppCompatDelegateImpl.java;l=348;drc=e28752c96fc3fb4d3354781469a1af3dbded4898 * https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:appcompat/appcompat/src/main/java/androidx/appcompat/app/AppCompatDelegateImpl.java;l=348;drc=e28752c96fc3fb4d3354781469a1af3dbded4898
*/ */
fun Context.createReaderThemeContext(): Context { fun Context.createReaderThemeContext(): Context {
val preferences = Injekt.get<PreferencesHelper>() val preferences = Injekt.get<UiPreferences>()
val readerPreferences = Injekt.get<ReaderPreferences>() val readerPreferences = Injekt.get<ReaderPreferences>()
val isDarkBackground = when (readerPreferences.readerTheme().get()) { val isDarkBackground = when (readerPreferences.readerTheme().get()) {
1, 2 -> true // Black, Gray 1, 2 -> true // Black, Gray

View File

@ -5,8 +5,8 @@ import android.util.AttributeSet
import android.view.inputmethod.EditorInfo import android.view.inputmethod.EditorInfo
import androidx.appcompat.widget.SearchView import androidx.appcompat.widget.SearchView
import androidx.core.view.inputmethod.EditorInfoCompat import androidx.core.view.inputmethod.EditorInfoCompat
import eu.kanade.domain.base.BasePreferences
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.util.preference.asHotFlow import eu.kanade.tachiyomi.util.preference.asHotFlow
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
@ -18,7 +18,7 @@ import uy.kohesive.injekt.api.get
/** /**
* A custom [SearchView] that sets [EditorInfoCompat.IME_FLAG_NO_PERSONALIZED_LEARNING] to imeOptions * A custom [SearchView] that sets [EditorInfoCompat.IME_FLAG_NO_PERSONALIZED_LEARNING] to imeOptions
* if [PreferencesHelper.incognitoMode] is true. Some IMEs may not respect this flag. * if [BasePreferences.incognitoMode] is true. Some IMEs may not respect this flag.
*/ */
class TachiyomiSearchView @JvmOverloads constructor( class TachiyomiSearchView @JvmOverloads constructor(
context: Context, context: Context,
@ -31,7 +31,7 @@ class TachiyomiSearchView @JvmOverloads constructor(
override fun onAttachedToWindow() { override fun onAttachedToWindow() {
super.onAttachedToWindow() super.onAttachedToWindow()
scope = CoroutineScope(SupervisorJob() + Dispatchers.Main) scope = CoroutineScope(SupervisorJob() + Dispatchers.Main)
Injekt.get<PreferencesHelper>().incognitoMode() Injekt.get<BasePreferences>().incognitoMode()
.asHotFlow { .asHotFlow {
imeOptions = if (it) { imeOptions = if (it) {
imeOptions or EditorInfoCompat.IME_FLAG_NO_PERSONALIZED_LEARNING imeOptions or EditorInfoCompat.IME_FLAG_NO_PERSONALIZED_LEARNING

View File

@ -5,8 +5,8 @@ import android.util.AttributeSet
import android.widget.EditText import android.widget.EditText
import androidx.core.view.inputmethod.EditorInfoCompat import androidx.core.view.inputmethod.EditorInfoCompat
import com.google.android.material.textfield.TextInputEditText import com.google.android.material.textfield.TextInputEditText
import eu.kanade.domain.base.BasePreferences
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.util.preference.asHotFlow import eu.kanade.tachiyomi.util.preference.asHotFlow
import eu.kanade.tachiyomi.widget.TachiyomiTextInputEditText.Companion.setIncognito import eu.kanade.tachiyomi.widget.TachiyomiTextInputEditText.Companion.setIncognito
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
@ -19,7 +19,7 @@ import uy.kohesive.injekt.api.get
/** /**
* A custom [TextInputEditText] that sets [EditorInfoCompat.IME_FLAG_NO_PERSONALIZED_LEARNING] to imeOptions * A custom [TextInputEditText] that sets [EditorInfoCompat.IME_FLAG_NO_PERSONALIZED_LEARNING] to imeOptions
* if [PreferencesHelper.incognitoMode] is true. Some IMEs may not respect this flag. * if [BasePreferences.incognitoMode] is true. Some IMEs may not respect this flag.
* *
* @see setIncognito * @see setIncognito
*/ */
@ -46,10 +46,10 @@ class TachiyomiTextInputEditText @JvmOverloads constructor(
companion object { companion object {
/** /**
* Sets Flow to this [EditText] that sets [EditorInfoCompat.IME_FLAG_NO_PERSONALIZED_LEARNING] to imeOptions * Sets Flow to this [EditText] that sets [EditorInfoCompat.IME_FLAG_NO_PERSONALIZED_LEARNING] to imeOptions
* if [PreferencesHelper.incognitoMode] is true. Some IMEs may not respect this flag. * if [BasePreferences.incognitoMode] is true. Some IMEs may not respect this flag.
*/ */
fun EditText.setIncognito(viewScope: CoroutineScope) { fun EditText.setIncognito(viewScope: CoroutineScope) {
Injekt.get<PreferencesHelper>().incognitoMode() Injekt.get<BasePreferences>().incognitoMode()
.asHotFlow { .asHotFlow {
imeOptions = if (it) { imeOptions = if (it) {
imeOptions or EditorInfoCompat.IME_FLAG_NO_PERSONALIZED_LEARNING imeOptions or EditorInfoCompat.IME_FLAG_NO_PERSONALIZED_LEARNING

View File

@ -9,8 +9,8 @@ import com.bluelinelabs.conductor.ControllerChangeHandler
import com.bluelinelabs.conductor.ControllerChangeType import com.bluelinelabs.conductor.ControllerChangeType
import com.dd.processbutton.iml.ActionProcessButton import com.dd.processbutton.iml.ActionProcessButton
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import eu.kanade.domain.base.BasePreferences
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.databinding.PrefAccountLoginBinding import eu.kanade.tachiyomi.databinding.PrefAccountLoginBinding
import eu.kanade.tachiyomi.ui.base.controller.DialogController import eu.kanade.tachiyomi.ui.base.controller.DialogController
import uy.kohesive.injekt.injectLazy import uy.kohesive.injekt.injectLazy
@ -23,7 +23,7 @@ abstract class LoginDialogPreference(
var binding: PrefAccountLoginBinding? = null var binding: PrefAccountLoginBinding? = null
private set private set
val preferences: PreferencesHelper by injectLazy() val preferences: BasePreferences by injectLazy()
override fun onCreateDialog(savedViewState: Bundle?): Dialog { override fun onCreateDialog(savedViewState: Bundle?): Dialog {
binding = PrefAccountLoginBinding.inflate(LayoutInflater.from(activity!!)) binding = PrefAccountLoginBinding.inflate(LayoutInflater.from(activity!!))

View File

@ -6,8 +6,8 @@ import androidx.preference.ListPreference
import androidx.preference.PreferenceViewHolder import androidx.preference.PreferenceViewHolder
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import eu.kanade.domain.ui.model.AppTheme
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferenceValues
import eu.kanade.tachiyomi.util.system.dpToPx import eu.kanade.tachiyomi.util.system.dpToPx
class ThemesPreference @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : class ThemesPreference @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) :
@ -19,7 +19,7 @@ class ThemesPreference @JvmOverloads constructor(context: Context, attrs: Attrib
var lastScrollPosition: Int? = null var lastScrollPosition: Int? = null
var entries: List<PreferenceValues.AppTheme> = emptyList() var entries: List<AppTheme> = emptyList()
set(value) { set(value) {
field = value field = value
adapter.setItems(value) adapter.setItems(value)

View File

@ -5,9 +5,9 @@ import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.appcompat.view.ContextThemeWrapper import androidx.appcompat.view.ContextThemeWrapper
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import eu.kanade.domain.ui.UiPreferences
import eu.kanade.domain.ui.model.AppTheme
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferenceValues
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.databinding.PrefThemeItemBinding import eu.kanade.tachiyomi.databinding.PrefThemeItemBinding
import eu.kanade.tachiyomi.ui.base.delegate.ThemingDelegate import eu.kanade.tachiyomi.ui.base.delegate.ThemingDelegate
import eu.kanade.tachiyomi.util.system.getResourceColor import eu.kanade.tachiyomi.util.system.getResourceColor
@ -16,9 +16,9 @@ import uy.kohesive.injekt.injectLazy
class ThemesPreferenceAdapter(private val clickListener: OnItemClickListener) : class ThemesPreferenceAdapter(private val clickListener: OnItemClickListener) :
RecyclerView.Adapter<ThemesPreferenceAdapter.ThemeViewHolder>() { RecyclerView.Adapter<ThemesPreferenceAdapter.ThemeViewHolder>() {
private val preferences: PreferencesHelper by injectLazy() private val preferences: UiPreferences by injectLazy()
private var themes = emptyList<PreferenceValues.AppTheme>() private var themes = emptyList<AppTheme>()
private lateinit var binding: PrefThemeItemBinding private lateinit var binding: PrefThemeItemBinding
@ -41,7 +41,7 @@ class ThemesPreferenceAdapter(private val clickListener: OnItemClickListener) :
holder.bind(themes[position]) holder.bind(themes[position])
} }
fun setItems(themes: List<PreferenceValues.AppTheme>) { fun setItems(themes: List<AppTheme>) {
this.themes = themes this.themes = themes
notifyDataSetChanged() notifyDataSetChanged()
} }
@ -51,7 +51,7 @@ class ThemesPreferenceAdapter(private val clickListener: OnItemClickListener) :
private val selectedColor = view.context.getResourceColor(R.attr.colorAccent) private val selectedColor = view.context.getResourceColor(R.attr.colorAccent)
private val unselectedColor = view.context.getResourceColor(android.R.attr.divider) private val unselectedColor = view.context.getResourceColor(android.R.attr.divider)
fun bind(appTheme: PreferenceValues.AppTheme) { fun bind(appTheme: AppTheme) {
binding.name.text = view.context.getString(appTheme.titleResId!!) binding.name.text = view.context.getString(appTheme.titleResId!!)
// For rounded corners // For rounded corners

View File

@ -9,6 +9,7 @@ import eu.kanade.data.DatabaseHandler
import eu.kanade.data.category.categoryMapper import eu.kanade.data.category.categoryMapper
import eu.kanade.data.chapter.chapterMapper import eu.kanade.data.chapter.chapterMapper
import eu.kanade.domain.backup.service.BackupPreferences import eu.kanade.domain.backup.service.BackupPreferences
import eu.kanade.domain.base.BasePreferences
import eu.kanade.domain.chapter.interactor.DeleteChapters import eu.kanade.domain.chapter.interactor.DeleteChapters
import eu.kanade.domain.chapter.interactor.UpdateChapter import eu.kanade.domain.chapter.interactor.UpdateChapter
import eu.kanade.domain.chapter.model.ChapterUpdate import eu.kanade.domain.chapter.model.ChapterUpdate
@ -21,14 +22,15 @@ import eu.kanade.domain.manga.model.MangaUpdate
import eu.kanade.domain.source.interactor.InsertFeedSavedSearch import eu.kanade.domain.source.interactor.InsertFeedSavedSearch
import eu.kanade.domain.source.interactor.InsertSavedSearch import eu.kanade.domain.source.interactor.InsertSavedSearch
import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.domain.ui.UiPreferences
import eu.kanade.tachiyomi.BuildConfig import eu.kanade.tachiyomi.BuildConfig
import eu.kanade.tachiyomi.core.preference.PreferenceStore
import eu.kanade.tachiyomi.core.security.SecurityPreferences import eu.kanade.tachiyomi.core.security.SecurityPreferences
import eu.kanade.tachiyomi.data.backup.BackupCreatorJob import eu.kanade.tachiyomi.data.backup.BackupCreatorJob
import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.data.library.LibraryUpdateJob import eu.kanade.tachiyomi.data.library.LibraryUpdateJob
import eu.kanade.tachiyomi.data.preference.MANGA_NON_COMPLETED import eu.kanade.tachiyomi.data.preference.MANGA_NON_COMPLETED
import eu.kanade.tachiyomi.data.preference.PreferenceValues import eu.kanade.tachiyomi.data.preference.PreferenceValues
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.data.track.TrackManager
import eu.kanade.tachiyomi.data.updater.AppUpdateJob import eu.kanade.tachiyomi.data.updater.AppUpdateJob
import eu.kanade.tachiyomi.extension.ExtensionUpdateJob import eu.kanade.tachiyomi.extension.ExtensionUpdateJob
@ -95,7 +97,9 @@ object EXHMigrations {
*/ */
fun upgrade( fun upgrade(
context: Context, context: Context,
preferences: PreferencesHelper, preferenceStore: PreferenceStore,
basePreferences: BasePreferences,
uiPreferences: UiPreferences,
networkPreferences: NetworkPreferences, networkPreferences: NetworkPreferences,
sourcePreferences: SourcePreferences, sourcePreferences: SourcePreferences,
securityPreferences: SecurityPreferences, securityPreferences: SecurityPreferences,
@ -103,10 +107,11 @@ object EXHMigrations {
readerPreferences: ReaderPreferences, readerPreferences: ReaderPreferences,
backupPreferences: BackupPreferences, backupPreferences: BackupPreferences,
): Boolean { ): Boolean {
val oldVersion = preferences.ehLastVersionCode().get() val lastVersionCode = preferenceStore.getInt("eh_last_version_code", 0)
val oldVersion = lastVersionCode.get()
try { try {
if (oldVersion < BuildConfig.VERSION_CODE) { if (oldVersion < BuildConfig.VERSION_CODE) {
preferences.ehLastVersionCode().set(BuildConfig.VERSION_CODE) lastVersionCode.set(BuildConfig.VERSION_CODE)
if (BuildConfig.INCLUDE_UPDATER) { if (BuildConfig.INCLUDE_UPDATER) {
AppUpdateJob.setupTask(context) AppUpdateJob.setupTask(context)
@ -363,8 +368,8 @@ object EXHMigrations {
if (oldSecureScreen) { if (oldSecureScreen) {
securityPreferences.secureScreen().set(SecurityPreferences.SecureScreenMode.ALWAYS) securityPreferences.secureScreen().set(SecurityPreferences.SecureScreenMode.ALWAYS)
} }
if (DeviceUtil.isMiui && preferences.extensionInstaller().get() == PreferenceValues.ExtensionInstaller.PACKAGEINSTALLER) { if (DeviceUtil.isMiui && basePreferences.extensionInstaller().get() == PreferenceValues.ExtensionInstaller.PACKAGEINSTALLER) {
preferences.extensionInstaller().set(PreferenceValues.ExtensionInstaller.LEGACY) basePreferences.extensionInstaller().set(PreferenceValues.ExtensionInstaller.LEGACY)
} }
} }
if (oldVersion under 28) { if (oldVersion under 28) {
@ -492,6 +497,14 @@ object EXHMigrations {
} }
} }
} }
if (oldVersion under 42) {
if (uiPreferences.themeMode().isSet()) {
prefs.edit {
val themeMode = prefs.getString(uiPreferences.themeMode().key(), null) ?: return@edit
putString(uiPreferences.themeMode().key(), themeMode.uppercase())
}
}
}
// if (oldVersion under 1) { } (1 is current release version) // if (oldVersion under 1) { } (1 is current release version)
// do stuff here when releasing changed crap // do stuff here when releasing changed crap

View File

@ -4,6 +4,7 @@ import android.app.Application
import androidx.work.WorkManager import androidx.work.WorkManager
import eu.kanade.data.DatabaseHandler import eu.kanade.data.DatabaseHandler
import eu.kanade.domain.backup.service.BackupPreferences import eu.kanade.domain.backup.service.BackupPreferences
import eu.kanade.domain.base.BasePreferences
import eu.kanade.domain.library.service.LibraryPreferences import eu.kanade.domain.library.service.LibraryPreferences
import eu.kanade.domain.manga.interactor.GetAllManga import eu.kanade.domain.manga.interactor.GetAllManga
import eu.kanade.domain.manga.interactor.GetExhFavoriteMangaWithMetadata import eu.kanade.domain.manga.interactor.GetExhFavoriteMangaWithMetadata
@ -13,8 +14,9 @@ import eu.kanade.domain.manga.interactor.GetSearchMetadata
import eu.kanade.domain.manga.interactor.InsertFlatMetadata import eu.kanade.domain.manga.interactor.InsertFlatMetadata
import eu.kanade.domain.manga.interactor.UpdateManga import eu.kanade.domain.manga.interactor.UpdateManga
import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.domain.ui.UiPreferences
import eu.kanade.tachiyomi.core.preference.PreferenceStore
import eu.kanade.tachiyomi.core.security.SecurityPreferences import eu.kanade.tachiyomi.core.security.SecurityPreferences
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.network.NetworkPreferences import eu.kanade.tachiyomi.network.NetworkPreferences
import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.source.SourceManager
import eu.kanade.tachiyomi.source.online.all.NHentai import eu.kanade.tachiyomi.source.online.all.NHentai
@ -35,7 +37,9 @@ import java.util.UUID
object DebugFunctions { object DebugFunctions {
val app: Application by injectLazy() val app: Application by injectLazy()
val handler: DatabaseHandler by injectLazy() val handler: DatabaseHandler by injectLazy()
val prefs: PreferencesHelper by injectLazy() val prefsStore: PreferenceStore by injectLazy()
val basePrefs: BasePreferences by injectLazy()
val uiPrefs: UiPreferences by injectLazy()
val networkPrefs: NetworkPreferences by injectLazy() val networkPrefs: NetworkPreferences by injectLazy()
val sourcePrefs: SourcePreferences by injectLazy() val sourcePrefs: SourcePreferences by injectLazy()
val securityPrefs: SecurityPreferences by injectLazy() val securityPrefs: SecurityPreferences by injectLazy()
@ -52,13 +56,15 @@ object DebugFunctions {
val getAllManga: GetAllManga by injectLazy() val getAllManga: GetAllManga by injectLazy()
fun forceUpgradeMigration() { fun forceUpgradeMigration() {
prefs.ehLastVersionCode().set(1) val lastVersionCode = prefsStore.getInt("eh_last_version_code", 0)
EXHMigrations.upgrade(app, prefs, networkPrefs, sourcePrefs, securityPrefs, libraryPrefs, readerPrefs, backupPrefs) lastVersionCode.set(1)
EXHMigrations.upgrade(app, prefsStore, basePrefs, uiPrefs, networkPrefs, sourcePrefs, securityPrefs, libraryPrefs, readerPrefs, backupPrefs)
} }
fun forceSetupJobs() { fun forceSetupJobs() {
prefs.ehLastVersionCode().set(0) val lastVersionCode = prefsStore.getInt("eh_last_version_code", 0)
EXHMigrations.upgrade(app, prefs, networkPrefs, sourcePrefs, securityPrefs, libraryPrefs, readerPrefs, backupPrefs) lastVersionCode.set(0)
EXHMigrations.upgrade(app, prefsStore, basePrefs, uiPrefs, networkPrefs, sourcePrefs, securityPrefs, libraryPrefs, readerPrefs, backupPrefs)
} }
fun resetAgedFlagInEXHManga() { fun resetAgedFlagInEXHManga() {

View File

@ -11,6 +11,7 @@ import androidx.work.WorkManager
import androidx.work.WorkerParameters import androidx.work.WorkerParameters
import com.elvishew.xlog.Logger import com.elvishew.xlog.Logger
import com.elvishew.xlog.XLog import com.elvishew.xlog.XLog
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.domain.chapter.interactor.GetChapterByMangaId import eu.kanade.domain.chapter.interactor.GetChapterByMangaId
import eu.kanade.domain.chapter.interactor.SyncChaptersWithSource import eu.kanade.domain.chapter.interactor.SyncChaptersWithSource
import eu.kanade.domain.chapter.model.Chapter import eu.kanade.domain.chapter.model.Chapter
@ -22,7 +23,6 @@ import eu.kanade.domain.manga.model.Manga
import eu.kanade.tachiyomi.data.library.LibraryUpdateNotifier import eu.kanade.tachiyomi.data.library.LibraryUpdateNotifier
import eu.kanade.tachiyomi.data.preference.DEVICE_CHARGING import eu.kanade.tachiyomi.data.preference.DEVICE_CHARGING
import eu.kanade.tachiyomi.data.preference.DEVICE_ONLY_ON_WIFI import eu.kanade.tachiyomi.data.preference.DEVICE_ONLY_ON_WIFI
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.source.SourceManager
import eu.kanade.tachiyomi.source.online.all.EHentai import eu.kanade.tachiyomi.source.online.all.EHentai
import eu.kanade.tachiyomi.util.system.isConnectedToWifi import eu.kanade.tachiyomi.util.system.isConnectedToWifi
@ -45,7 +45,7 @@ import kotlin.time.Duration.Companion.days
class EHentaiUpdateWorker(private val context: Context, workerParams: WorkerParameters) : class EHentaiUpdateWorker(private val context: Context, workerParams: WorkerParameters) :
CoroutineWorker(context, workerParams) { CoroutineWorker(context, workerParams) {
private val prefs: PreferencesHelper by injectLazy() private val preferences: UnsortedPreferences by injectLazy()
private val sourceManager: SourceManager by injectLazy() private val sourceManager: SourceManager by injectLazy()
private val updateHelper: EHentaiUpdateHelper by injectLazy() private val updateHelper: EHentaiUpdateHelper by injectLazy()
private val logger: Logger = xLog() private val logger: Logger = xLog()
@ -60,7 +60,6 @@ class EHentaiUpdateWorker(private val context: Context, workerParams: WorkerPara
override suspend fun doWork(): Result { override suspend fun doWork(): Result {
return try { return try {
val preferences = Injekt.get<PreferencesHelper>()
if (requiresWifiConnection(preferences) && !context.isConnectedToWifi()) { if (requiresWifiConnection(preferences) && !context.isConnectedToWifi()) {
Result.failure() Result.failure()
} else { } else {
@ -179,7 +178,7 @@ class EHentaiUpdateWorker(private val context: Context, workerParams: WorkerPara
updatedThisIteration++ updatedThisIteration++
} }
} finally { } finally {
prefs.exhAutoUpdateStats().set( preferences.exhAutoUpdateStats().set(
Json.encodeToString( Json.encodeToString(
EHentaiUpdaterStats( EHentaiUpdaterStats(
startTime, startTime,
@ -237,7 +236,7 @@ class EHentaiUpdateWorker(private val context: Context, workerParams: WorkerPara
} }
fun scheduleBackground(context: Context, prefInterval: Int? = null) { fun scheduleBackground(context: Context, prefInterval: Int? = null) {
val preferences = Injekt.get<PreferencesHelper>() val preferences = Injekt.get<UnsortedPreferences>()
val interval = prefInterval ?: preferences.exhAutoUpdateFrequency().get() val interval = prefInterval ?: preferences.exhAutoUpdateFrequency().get()
if (interval > 0) { if (interval > 0) {
val restrictions = preferences.exhAutoUpdateRequirements().get() val restrictions = preferences.exhAutoUpdateRequirements().get()
@ -270,7 +269,7 @@ class EHentaiUpdateWorker(private val context: Context, workerParams: WorkerPara
} }
} }
fun requiresWifiConnection(preferences: PreferencesHelper): Boolean { fun requiresWifiConnection(preferences: UnsortedPreferences): Boolean {
val restrictions = preferences.exhAutoUpdateRequirements().get() val restrictions = preferences.exhAutoUpdateRequirements().get()
return DEVICE_ONLY_ON_WIFI in restrictions return DEVICE_ONLY_ON_WIFI in restrictions
} }

View File

@ -3,12 +3,12 @@ package exh.favorites
import android.content.Context import android.content.Context
import androidx.core.text.HtmlCompat import androidx.core.text.HtmlCompat
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import uy.kohesive.injekt.injectLazy import uy.kohesive.injekt.injectLazy
class FavoritesIntroDialog { class FavoritesIntroDialog {
private val prefs: PreferencesHelper by injectLazy() private val prefs: UnsortedPreferences by injectLazy()
fun show(context: Context) = MaterialAlertDialogBuilder(context) fun show(context: Context) = MaterialAlertDialogBuilder(context)
.setTitle(R.string.favorites_sync_notes) .setTitle(R.string.favorites_sync_notes)

View File

@ -3,6 +3,7 @@ package exh.favorites
import android.content.Context import android.content.Context
import android.net.wifi.WifiManager import android.net.wifi.WifiManager
import android.os.PowerManager import android.os.PowerManager
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.domain.category.interactor.CreateCategoryWithName import eu.kanade.domain.category.interactor.CreateCategoryWithName
import eu.kanade.domain.category.interactor.GetCategories import eu.kanade.domain.category.interactor.GetCategories
import eu.kanade.domain.category.interactor.SetMangaCategories import eu.kanade.domain.category.interactor.SetMangaCategories
@ -15,7 +16,6 @@ import eu.kanade.domain.manga.interactor.UpdateManga
import eu.kanade.domain.manga.model.Manga import eu.kanade.domain.manga.model.Manga
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.database.models.toDomainManga import eu.kanade.tachiyomi.data.database.models.toDomainManga
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.network.POST import eu.kanade.tachiyomi.network.POST
import eu.kanade.tachiyomi.network.await import eu.kanade.tachiyomi.network.await
import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.source.SourceManager
@ -56,7 +56,7 @@ class FavoritesSyncHelper(val context: Context) {
private val createCategoryWithName: CreateCategoryWithName by injectLazy() private val createCategoryWithName: CreateCategoryWithName by injectLazy()
private val updateCategory: UpdateCategory by injectLazy() private val updateCategory: UpdateCategory by injectLazy()
private val prefs: PreferencesHelper by injectLazy() private val prefs: UnsortedPreferences by injectLazy()
private val exh by lazy { private val exh by lazy {
Injekt.get<SourceManager>().get(EXH_SOURCE_ID) as? EHentai Injekt.get<SourceManager>().get(EXH_SOURCE_ID) as? EHentai

View File

@ -1,8 +1,8 @@
package exh.md.utils package exh.md.utils
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.domain.track.service.TrackPreferences import eu.kanade.domain.track.service.TrackPreferences
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.track.mdlist.MdList import eu.kanade.tachiyomi.data.track.mdlist.MdList
import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.source.SourceManager
import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SChapter
@ -339,7 +339,7 @@ class MdUtil {
"Bearer " + (sessionToken(preferences, mdList) ?: throw NoSessionException()), "Bearer " + (sessionToken(preferences, mdList) ?: throw NoSessionException()),
).build() ).build()
fun getEnabledMangaDex(preferences: PreferencesHelper, sourcePreferences: SourcePreferences = Injekt.get(), sourceManager: SourceManager = Injekt.get()): MangaDex? { fun getEnabledMangaDex(preferences: UnsortedPreferences, sourcePreferences: SourcePreferences = Injekt.get(), sourceManager: SourceManager = Injekt.get()): MangaDex? {
return getEnabledMangaDexs(sourcePreferences, sourceManager).let { mangadexs -> return getEnabledMangaDexs(sourcePreferences, sourceManager).let { mangadexs ->
preferences.preferredMangaDexId().get().toLongOrNull()?.nullIfZero() preferences.preferredMangaDexId().get().toLongOrNull()?.nullIfZero()
?.let { preferredMangaDexId -> ?.let { preferredMangaDexId ->

View File

@ -1,6 +1,6 @@
package exh.patch package exh.patch
import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.domain.UnsortedPreferences
import okhttp3.OkHttpClient import okhttp3.OkHttpClient
import okhttp3.Request import okhttp3.Request
import okhttp3.Response import okhttp3.Response
@ -20,7 +20,7 @@ fun OkHttpClient.Builder.injectPatches(sourceIdProducer: () -> Long): OkHttpClie
fun findAndApplyPatches(sourceId: Long): EHInterceptor { fun findAndApplyPatches(sourceId: Long): EHInterceptor {
// TODO make it so captcha doesnt auto open in manga eden while applying universal interceptors // TODO make it so captcha doesnt auto open in manga eden while applying universal interceptors
return if (Injekt.get<PreferencesHelper>().autoSolveCaptcha().get()) { return if (Injekt.get<UnsortedPreferences>().autoSolveCaptcha().get()) {
(EH_INTERCEPTORS[sourceId].orEmpty() + EH_INTERCEPTORS[EH_UNIVERSAL_INTERCEPTOR].orEmpty()).merge() (EH_INTERCEPTORS[sourceId].orEmpty() + EH_INTERCEPTORS[EH_UNIVERSAL_INTERCEPTOR].orEmpty()).merge()
} else { } else {
EH_INTERCEPTORS[sourceId].orEmpty().merge() EH_INTERCEPTORS[sourceId].orEmpty().merge()

View File

@ -1,8 +1,8 @@
package exh.uconfig package exh.uconfig
import android.content.Context import android.content.Context
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.network.await import eu.kanade.tachiyomi.network.await
import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.source.SourceManager
import eu.kanade.tachiyomi.source.online.all.EHentai import eu.kanade.tachiyomi.source.online.all.EHentai
@ -18,7 +18,7 @@ import uy.kohesive.injekt.injectLazy
import java.util.Locale import java.util.Locale
class EHConfigurator(val context: Context) { class EHConfigurator(val context: Context) {
private val prefs: PreferencesHelper by injectLazy() private val prefs: UnsortedPreferences by injectLazy()
private val sources: SourceManager by injectLazy() private val sources: SourceManager by injectLazy()
private val configuratorClient = OkHttpClient.Builder() private val configuratorClient = OkHttpClient.Builder()

View File

@ -1,12 +1,12 @@
package exh.uconfig package exh.uconfig
import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.domain.UnsortedPreferences
import okhttp3.FormBody import okhttp3.FormBody
import uy.kohesive.injekt.injectLazy import uy.kohesive.injekt.injectLazy
import java.util.Locale import java.util.Locale
class EhUConfigBuilder { class EhUConfigBuilder {
private val preferences: PreferencesHelper by injectLazy() private val preferences: UnsortedPreferences by injectLazy()
fun build(hathPerks: EHHathPerksResponse): FormBody { fun build(hathPerks: EHHathPerksResponse): FormBody {
val configItems = mutableListOf<ConfigItem>() val configItems = mutableListOf<ConfigItem>()

View File

@ -4,15 +4,15 @@ import android.app.Dialog
import android.os.Bundle import android.os.Bundle
import com.bluelinelabs.conductor.Router import com.bluelinelabs.conductor.Router
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.ui.base.controller.DialogController import eu.kanade.tachiyomi.ui.base.controller.DialogController
import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get import uy.kohesive.injekt.api.get
import uy.kohesive.injekt.injectLazy import uy.kohesive.injekt.injectLazy
class WarnConfigureDialogController : DialogController() { class WarnConfigureDialogController : DialogController() {
private val prefs: PreferencesHelper by injectLazy() private val prefs: UnsortedPreferences by injectLazy()
override fun onCreateDialog(savedViewState: Bundle?): Dialog { override fun onCreateDialog(savedViewState: Bundle?): Dialog {
return MaterialAlertDialogBuilder(activity!!) return MaterialAlertDialogBuilder(activity!!)
.setTitle(R.string.settings_profile_note) .setTitle(R.string.settings_profile_note)
@ -27,7 +27,7 @@ class WarnConfigureDialogController : DialogController() {
companion object { companion object {
fun uploadSettings(router: Router) { fun uploadSettings(router: Router) {
if (Injekt.get<PreferencesHelper>().exhShowSettingsUploadWarning().get()) { if (Injekt.get<UnsortedPreferences>().exhShowSettingsUploadWarning().get()) {
WarnConfigureDialogController().showDialog(router) WarnConfigureDialogController().showDialog(router)
} else { } else {
ConfiguringDialogController().showDialog(router) ConfiguringDialogController().showDialog(router)

View File

@ -1,13 +1,13 @@
package exh.ui.batchadd package exh.ui.batchadd
import android.content.Context import android.content.Context
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter
import eu.kanade.tachiyomi.util.lang.withIOContext import eu.kanade.tachiyomi.util.lang.withIOContext
import exh.GalleryAddEvent import exh.GalleryAddEvent
import exh.GalleryAdder import exh.GalleryAdder
import exh.log.xLogE import exh.log.xLogE
import exh.ui.base.CoroutinePresenter
import exh.util.trimOrNull import exh.util.trimOrNull
import kotlinx.coroutines.CoroutineExceptionHandler import kotlinx.coroutines.CoroutineExceptionHandler
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
@ -17,8 +17,8 @@ import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import uy.kohesive.injekt.injectLazy import uy.kohesive.injekt.injectLazy
class BatchAddPresenter : CoroutinePresenter<BatchAddController>() { class BatchAddPresenter : BasePresenter<BatchAddController>() {
private val preferences: PreferencesHelper by injectLazy() private val preferences: UnsortedPreferences by injectLazy()
private val galleryAdder by lazy { GalleryAdder() } private val galleryAdder by lazy { GalleryAdder() }

View File

@ -12,8 +12,8 @@ import android.webkit.WebChromeClient
import android.webkit.WebView import android.webkit.WebView
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.databinding.EhActivityCaptchaBinding import eu.kanade.tachiyomi.databinding.EhActivityCaptchaBinding
import eu.kanade.tachiyomi.network.NetworkHelper import eu.kanade.tachiyomi.network.NetworkHelper
import eu.kanade.tachiyomi.network.asObservableSuccess import eu.kanade.tachiyomi.network.asObservableSuccess
@ -48,7 +48,7 @@ import java.util.UUID
class BrowserActionActivity : AppCompatActivity() { class BrowserActionActivity : AppCompatActivity() {
private val sourceManager: SourceManager by injectLazy() private val sourceManager: SourceManager by injectLazy()
private val preferencesHelper: PreferencesHelper by injectLazy() private val preferencesHelper: UnsortedPreferences by injectLazy()
private val networkHelper: NetworkHelper by injectLazy() private val networkHelper: NetworkHelper by injectLazy()
val httpClient = networkHelper.client val httpClient = networkHelper.client

View File

@ -8,9 +8,9 @@ import android.webkit.CookieManager
import android.webkit.WebView import android.webkit.WebView
import android.widget.Toast import android.widget.Toast
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.presentation.webview.EhLoginWebViewScreen import eu.kanade.presentation.webview.EhLoginWebViewScreen
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.ui.base.activity.BaseActivity import eu.kanade.tachiyomi.ui.base.activity.BaseActivity
import eu.kanade.tachiyomi.util.system.WebViewUtil import eu.kanade.tachiyomi.util.system.WebViewUtil
import eu.kanade.tachiyomi.util.system.toast import eu.kanade.tachiyomi.util.system.toast
@ -25,7 +25,7 @@ import java.util.Locale
* LoginController * LoginController
*/ */
class EhLoginActivity : BaseActivity() { class EhLoginActivity : BaseActivity() {
private val preferenceManager: PreferencesHelper by injectLazy() private val preferenceManager: UnsortedPreferences by injectLazy()
private var igneous: String? = null private var igneous: String? = null

View File

@ -9,8 +9,8 @@ import com.bluelinelabs.conductor.ControllerChangeHandler
import com.bluelinelabs.conductor.ControllerChangeType import com.bluelinelabs.conductor.ControllerChangeType
import com.dd.processbutton.iml.ActionProcessButton import com.dd.processbutton.iml.ActionProcessButton
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import eu.kanade.domain.UnsortedPreferences
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.databinding.PrefSiteLoginTwoFactorAuthBinding import eu.kanade.tachiyomi.databinding.PrefSiteLoginTwoFactorAuthBinding
import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.Source
import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.source.SourceManager
@ -34,7 +34,7 @@ class MangadexLoginDialog(bundle: Bundle? = null) : DialogController(bundle) {
val source = Injekt.get<SourceManager>().get(args.getLong("key", 0))?.getMainSource() as LoginSource val source = Injekt.get<SourceManager>().get(args.getLong("key", 0))?.getMainSource() as LoginSource
val preferences: PreferencesHelper by injectLazy() val preferences: UnsortedPreferences by injectLazy()
val scope = CoroutineScope(Job() + Dispatchers.Main) val scope = CoroutineScope(Job() + Dispatchers.Main)