Skip to content
Snippets Groups Projects
Verified Commit 24a7d0c6 authored by Janne Mareike Koschinski's avatar Janne Mareike Koschinski
Browse files

Improve settings migration logic

parent 7a1f4af6
No related branches found
No related tags found
No related merge requests found
Pipeline #
......@@ -21,7 +21,6 @@ package de.kuschku.quasseldroid
import android.os.Build
import android.os.StrictMode
import android.support.v7.preference.PreferenceManager
import com.squareup.leakcanary.LeakCanary
import dagger.android.AndroidInjector
import dagger.android.support.DaggerApplication
......@@ -66,7 +65,9 @@ class Quasseldroid : DaggerApplication() {
applicationInjector().inject(this)
// Migrate preferences
SettingsMigrationManager(listOf(
SettingsMigrationManager(
R.xml.preferences,
listOf(
SettingsMigration.migrationOf(0, 1) { prefs, edit ->
// Migrating database
val database = LegacyAccountDatabase.Creator.init(this)
......@@ -148,10 +149,10 @@ class Quasseldroid : DaggerApplication() {
edit.remove("showlag")
}
}
)).migrate(PreferenceManager.getDefaultSharedPreferences(this))
)
).migrate(this)
// Initialize preferences unless already set
PreferenceManager.setDefaultValues(this, R.xml.preferences, false)
/*
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
......
......@@ -20,9 +20,14 @@
package de.kuschku.quasseldroid.settings
import android.annotation.SuppressLint
import android.content.SharedPreferences
import android.content.Context
import android.support.annotation.XmlRes
import android.support.v7.preference.PreferenceManager
import android.support.v7.preference.PreferenceManager.KEY_HAS_SET_DEFAULT_VALUES
import de.kuschku.quasseldroid.R.xml.preferences
class SettingsMigrationManager(
@XmlRes preferences: Int,
migrations: List<SettingsMigration>
) {
private val migrationMap = migrations.associateBy(SettingsMigration::from)
......@@ -30,7 +35,12 @@ class SettingsMigrationManager(
// This runs during initial start and has to run synchronously
@SuppressLint("ApplySharedPref")
fun migrate(preferences: SharedPreferences) {
fun migrate(context: Context) {
val defaultValueSp = context.getSharedPreferences(KEY_HAS_SET_DEFAULT_VALUES,
Context.MODE_PRIVATE)
if (!defaultValueSp.getBoolean(KEY_HAS_SET_DEFAULT_VALUES, false)) {
val preferences = PreferenceManager.getDefaultSharedPreferences(context)
var version = preferences.getInt(SETTINGS_VERSION, 0)
while (version != currentVersion) {
val migration = migrationMap[version]
......@@ -42,6 +52,8 @@ class SettingsMigrationManager(
editor.commit()
}
}
PreferenceManager.setDefaultValues(context, preferences, false)
}
companion object {
private const val SETTINGS_VERSION = "settings_version"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment