Use 1.x preference abstraction (#8020)

* Use 1.x preference abstraction

- Uses SharedPreferences compared to 1.x impl which uses DataStore but it breaks all settings screens currently
- Move PreferencesHelper to new PreferenceStore
  - PreferencesHelper should be split into smaller preference stores and be in core or domain
- Remove flow preferences as new PreferenceStore handles changes for us

Co-authored-by: inorichi <3521738+inorichi@users.noreply.github.com>

* Fix PreferenceMutableState not updating

* Fix changes not emitting on first subscription

Co-authored-by: inorichi <3521738+inorichi@users.noreply.github.com>
(cherry picked from commit 0086743a53)

# Conflicts:
#	app/src/main/java/eu/kanade/domain/source/interactor/GetEnabledSources.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/library/LibraryUpdateNotifier.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt
#	core/src/main/java/eu/kanade/tachiyomi/network/NetworkHelper.kt
This commit is contained in:
Andreas
2022-09-17 17:48:24 +02:00
committed by Jobobby04
parent 432c6fc8a9
commit 41c9c20e26
84 changed files with 879 additions and 483 deletions
+8 -3
View File
@@ -2,6 +2,7 @@
package exh
import android.content.Context
import androidx.core.content.edit
import androidx.preference.PreferenceManager
import eu.kanade.data.DatabaseHandler
@@ -28,6 +29,7 @@ import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.track.TrackManager
import eu.kanade.tachiyomi.data.updater.AppUpdateJob
import eu.kanade.tachiyomi.extension.ExtensionUpdateJob
import eu.kanade.tachiyomi.network.NetworkPreferences
import eu.kanade.tachiyomi.network.PREF_DOH_CLOUDFLARE
import eu.kanade.tachiyomi.source.Source
import eu.kanade.tachiyomi.source.SourceManager
@@ -87,8 +89,11 @@ object EXHMigrations {
* @param preferences Preferences of the application.
* @return true if a migration is performed, false otherwise.
*/
fun upgrade(preferences: PreferencesHelper): Boolean {
val context = preferences.context
fun upgrade(
context: Context,
preferences: PreferencesHelper,
networkPreferences: NetworkPreferences,
): Boolean {
val oldVersion = preferences.ehLastVersionCode().get()
try {
if (oldVersion < BuildConfig.VERSION_CODE) {
@@ -211,7 +216,7 @@ object EXHMigrations {
val wasDohEnabled = prefs.getBoolean("enable_doh", false)
if (wasDohEnabled) {
prefs.edit {
putInt(PreferenceKeys.dohProvider, PREF_DOH_CLOUDFLARE)
putInt(networkPreferences.dohProvider().key(), PREF_DOH_CLOUDFLARE)
remove("enable_doh")
}
}
@@ -11,6 +11,7 @@ import eu.kanade.domain.manga.interactor.GetSearchMetadata
import eu.kanade.domain.manga.interactor.InsertFlatMetadata
import eu.kanade.domain.manga.interactor.UpdateManga
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.network.NetworkPreferences
import eu.kanade.tachiyomi.source.SourceManager
import eu.kanade.tachiyomi.source.online.all.NHentai
import exh.EXHMigrations
@@ -30,6 +31,7 @@ object DebugFunctions {
val app: Application by injectLazy()
val handler: DatabaseHandler by injectLazy()
val prefs: PreferencesHelper by injectLazy()
val networkPrefs: NetworkPreferences by injectLazy()
val sourceManager: SourceManager by injectLazy()
val updateManga: UpdateManga by injectLazy()
val getFavorites: GetFavorites by injectLazy()
@@ -41,12 +43,12 @@ object DebugFunctions {
fun forceUpgradeMigration() {
prefs.ehLastVersionCode().set(1)
EXHMigrations.upgrade(prefs)
EXHMigrations.upgrade(app, prefs, networkPrefs)
}
fun forceSetupJobs() {
prefs.ehLastVersionCode().set(0)
EXHMigrations.upgrade(prefs)
EXHMigrations.upgrade(app, prefs, networkPrefs)
}
fun resetAgedFlagInEXHManga() {
+5 -5
View File
@@ -1,7 +1,7 @@
package exh.debug
import eu.kanade.core.prefs.PreferenceMutableState
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.core.preference.PreferenceStore
import kotlinx.coroutines.CoroutineScope
import uy.kohesive.injekt.injectLazy
import java.util.Locale
@@ -26,14 +26,14 @@ enum class DebugToggles(val default: Boolean) {
private val prefKey = "eh_debug_toggle_${name.lowercase(Locale.US)}"
var enabled: Boolean
get() = prefs.flowPrefs.getBoolean(prefKey, default).get()
get() = preferenceStore.getBoolean(prefKey, default).get()
set(value) {
prefs.flowPrefs.getBoolean(prefKey).set(value)
preferenceStore.getBoolean(prefKey).set(value)
}
fun asPref(scope: CoroutineScope) = PreferenceMutableState(prefs.flowPrefs.getBoolean(prefKey, default), scope)
fun asPref(scope: CoroutineScope) = PreferenceMutableState(preferenceStore.getBoolean(prefKey, default), scope)
companion object {
private val prefs: PreferencesHelper by injectLazy()
private val preferenceStore: PreferenceStore by injectLazy()
}
}
@@ -66,9 +66,9 @@ class MangaDexLoginHelper(authServiceLazy: Lazy<MangaDexAuthService>, val prefer
}
suspend fun login(): Boolean {
val username = preferences.trackUsername(mdList)
val password = preferences.trackPassword(mdList)
if (username.isNullOrBlank() || password.isNullOrBlank()) {
val username = preferences.trackUsername(mdList).get()
val password = preferences.trackPassword(mdList).get()
if (username.isBlank() || password.isBlank()) {
xLogI("No username or password stored, can't login")
return false
}
+1 -1
View File
@@ -1,6 +1,6 @@
package exh.util
import com.fredporciuncula.flow.preferences.Preference
import eu.kanade.tachiyomi.core.preference.Preference
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.source.Source
import eu.kanade.tachiyomi.source.model.Page