From 373acbf8b992b9d2af112ed0dbd966b37f69d9b7 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Sat, 13 Aug 2022 19:22:49 +0200 Subject: [PATCH] migrate preference files --- .../main/java/com/github/libretube/MyApp.kt | 27 ++++++++++++++++ .../libretube/preferences/PreferenceHelper.kt | 31 ++++++++++++++----- .../libretube/preferences/PreferenceKeys.kt | 7 +++++ 3 files changed, 57 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/github/libretube/MyApp.kt b/app/src/main/java/com/github/libretube/MyApp.kt index 11cfacfd7..9c20a075d 100644 --- a/app/src/main/java/com/github/libretube/MyApp.kt +++ b/app/src/main/java/com/github/libretube/MyApp.kt @@ -3,6 +3,7 @@ package com.github.libretube import android.app.Application import android.app.NotificationChannel import android.app.NotificationManager +import android.content.Context import android.os.Build import android.os.StrictMode import android.os.StrictMode.VmPolicy @@ -49,6 +50,11 @@ class MyApp : Application() { val defaultExceptionHandler = Thread.getDefaultUncaughtExceptionHandler() val exceptionHandler = ExceptionHandler(defaultExceptionHandler) Thread.setDefaultUncaughtExceptionHandler(exceptionHandler) + + /** + * legacy preference file migration + */ + prefFileMigration() } /** @@ -93,6 +99,9 @@ class MyApp : Application() { ) } + /** + * Creates a [NotificationChannel] + */ private fun createNotificationChannel( id: String, name: String, @@ -109,4 +118,22 @@ class MyApp : Application() { notificationManager.createNotificationChannel(channel) } } + + /** + * Migration from old preference files to new one + */ + private fun prefFileMigration() { + val legacyUserPrefs = getSharedPreferences("username", Context.MODE_PRIVATE) + val username = legacyUserPrefs.getString("username", "")!! + if (username != "") { + PreferenceHelper.setUsername(username) + legacyUserPrefs.edit().putString("username", "") + } + val legacyTokenPrefs = getSharedPreferences("token", Context.MODE_PRIVATE) + val token = legacyUserPrefs.getString("token", "")!! + if (token != "") { + PreferenceHelper.setToken(token) + legacyTokenPrefs.edit().putString("token", "") + } + } } diff --git a/app/src/main/java/com/github/libretube/preferences/PreferenceHelper.kt b/app/src/main/java/com/github/libretube/preferences/PreferenceHelper.kt index e53f18863..52beac2e3 100644 --- a/app/src/main/java/com/github/libretube/preferences/PreferenceHelper.kt +++ b/app/src/main/java/com/github/libretube/preferences/PreferenceHelper.kt @@ -15,8 +15,19 @@ object PreferenceHelper { private val TAG = "PreferenceHelper" private lateinit var prefContext: Context + + /** + * for normal preferences + */ private lateinit var settings: SharedPreferences private lateinit var editor: SharedPreferences.Editor + + /** + * For sensitive data (like token) + */ + private lateinit var authSettings: SharedPreferences + private lateinit var authEditor: SharedPreferences.Editor + private val mapper = ObjectMapper() /** @@ -24,8 +35,12 @@ object PreferenceHelper { */ fun setContext(context: Context) { prefContext = context + settings = getDefaultSharedPreferences(prefContext) editor = settings.edit() + + authSettings = getAuthenticationPreferences(context) + authEditor = authSettings.edit() } fun getString(key: String?, defValue: String?): String { @@ -45,23 +60,19 @@ object PreferenceHelper { } fun getToken(): String { - val sharedPref = prefContext.getSharedPreferences("token", Context.MODE_PRIVATE) - return sharedPref?.getString("token", "")!! + return authSettings.getString(PreferenceKeys.TOKEN, "")!! } fun setToken(newValue: String) { - val editor = prefContext.getSharedPreferences("token", Context.MODE_PRIVATE).edit() - editor.putString("token", newValue).apply() + authEditor.putString(PreferenceKeys.TOKEN, newValue).apply() } fun getUsername(): String { - val sharedPref = prefContext.getSharedPreferences("username", Context.MODE_PRIVATE) - return sharedPref.getString("username", "")!! + return authSettings.getString(PreferenceKeys.USERNAME, "")!! } fun setUsername(newValue: String) { - val editor = prefContext.getSharedPreferences("username", Context.MODE_PRIVATE).edit() - editor.putString("username", newValue).apply() + authEditor.putString(PreferenceKeys.USERNAME, newValue).apply() } fun saveCustomInstance(customInstance: CustomInstance) { @@ -266,4 +277,8 @@ object PreferenceHelper { private fun getDefaultSharedPreferences(context: Context): SharedPreferences { return PreferenceManager.getDefaultSharedPreferences(context) } + + private fun getAuthenticationPreferences(context: Context): SharedPreferences { + return context.getSharedPreferences(PreferenceKeys.AUTH_PREF_FILE, Context.MODE_PRIVATE) + } } diff --git a/app/src/main/java/com/github/libretube/preferences/PreferenceKeys.kt b/app/src/main/java/com/github/libretube/preferences/PreferenceKeys.kt index c8e087461..527142665 100644 --- a/app/src/main/java/com/github/libretube/preferences/PreferenceKeys.kt +++ b/app/src/main/java/com/github/libretube/preferences/PreferenceKeys.kt @@ -4,6 +4,13 @@ package com.github.libretube.preferences * keys for the shared preferences */ object PreferenceKeys { + /** + * Authentication + */ + const val AUTH_PREF_FILE = "auth" + const val TOKEN = "token" + const val USERNAME = "username" + /** * General */