mirror of
https://github.com/tapframe/NuvioStreaming.git
synced 2026-05-16 23:12:12 +00:00
Merge pull request #875 from MontesanoDev/fix/language-reset-on-restart
Fix/language reset on restart
This commit is contained in:
commit
00fc401ab1
3 changed files with 27 additions and 10 deletions
|
|
@ -18,7 +18,8 @@ actual object ThemeSettingsStorage {
|
||||||
private const val selectedThemeKey = "selected_theme"
|
private const val selectedThemeKey = "selected_theme"
|
||||||
private const val amoledEnabledKey = "amoled_enabled"
|
private const val amoledEnabledKey = "amoled_enabled"
|
||||||
private const val selectedAppLanguageKey = "selected_app_language"
|
private const val selectedAppLanguageKey = "selected_app_language"
|
||||||
private val syncKeys = listOf(selectedThemeKey, amoledEnabledKey, selectedAppLanguageKey)
|
private val profileScopedSyncKeys = listOf(selectedThemeKey, amoledEnabledKey)
|
||||||
|
private val globalSyncKeys = listOf(selectedAppLanguageKey)
|
||||||
|
|
||||||
private var preferences: SharedPreferences? = null
|
private var preferences: SharedPreferences? = null
|
||||||
|
|
||||||
|
|
@ -50,13 +51,18 @@ actual object ThemeSettingsStorage {
|
||||||
?.apply()
|
?.apply()
|
||||||
}
|
}
|
||||||
|
|
||||||
actual fun loadSelectedAppLanguage(): String? =
|
actual fun loadSelectedAppLanguage(): String? {
|
||||||
preferences?.getString(ProfileScopedKey.of(selectedAppLanguageKey), null)
|
val value = preferences?.getString(selectedAppLanguageKey, null)
|
||||||
|
if (value != null) return value
|
||||||
|
val legacy = preferences?.getString(ProfileScopedKey.of(selectedAppLanguageKey), null)
|
||||||
|
if (legacy != null) saveSelectedAppLanguage(legacy)
|
||||||
|
return legacy
|
||||||
|
}
|
||||||
|
|
||||||
actual fun saveSelectedAppLanguage(languageCode: String) {
|
actual fun saveSelectedAppLanguage(languageCode: String) {
|
||||||
preferences
|
preferences
|
||||||
?.edit()
|
?.edit()
|
||||||
?.putString(ProfileScopedKey.of(selectedAppLanguageKey), languageCode)
|
?.putString(selectedAppLanguageKey, languageCode)
|
||||||
?.apply()
|
?.apply()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -74,7 +80,8 @@ actual object ThemeSettingsStorage {
|
||||||
|
|
||||||
actual fun replaceFromSyncPayload(payload: JsonObject) {
|
actual fun replaceFromSyncPayload(payload: JsonObject) {
|
||||||
preferences?.edit()?.apply {
|
preferences?.edit()?.apply {
|
||||||
syncKeys.forEach { remove(ProfileScopedKey.of(it)) }
|
profileScopedSyncKeys.forEach { remove(ProfileScopedKey.of(it)) }
|
||||||
|
globalSyncKeys.forEach { remove(it) }
|
||||||
}?.apply()
|
}?.apply()
|
||||||
|
|
||||||
payload.decodeSyncString(selectedThemeKey)?.let(::saveSelectedTheme)
|
payload.decodeSyncString(selectedThemeKey)?.let(::saveSelectedTheme)
|
||||||
|
|
|
||||||
|
|
@ -70,6 +70,7 @@ object ProfileRepository {
|
||||||
val stored = decodeStoredPayload() ?: return false
|
val stored = decodeStoredPayload() ?: return false
|
||||||
loadedCacheForUserId = stored.userId
|
loadedCacheForUserId = stored.userId
|
||||||
applyStoredPayload(stored)
|
applyStoredPayload(stored)
|
||||||
|
ThemeSettingsRepository.onProfileChanged()
|
||||||
return _state.value.profiles.isNotEmpty()
|
return _state.value.profiles.isNotEmpty()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,8 @@ actual object ThemeSettingsStorage {
|
||||||
private const val selectedThemeKey = "selected_theme"
|
private const val selectedThemeKey = "selected_theme"
|
||||||
private const val amoledEnabledKey = "amoled_enabled"
|
private const val amoledEnabledKey = "amoled_enabled"
|
||||||
private const val selectedAppLanguageKey = "selected_app_language"
|
private const val selectedAppLanguageKey = "selected_app_language"
|
||||||
private val syncKeys = listOf(selectedThemeKey, amoledEnabledKey, selectedAppLanguageKey)
|
private val profileScopedSyncKeys = listOf(selectedThemeKey, amoledEnabledKey)
|
||||||
|
private val globalSyncKeys = listOf(selectedAppLanguageKey)
|
||||||
|
|
||||||
actual fun loadSelectedTheme(): String? =
|
actual fun loadSelectedTheme(): String? =
|
||||||
NSUserDefaults.standardUserDefaults.stringForKey(ProfileScopedKey.of(selectedThemeKey))
|
NSUserDefaults.standardUserDefaults.stringForKey(ProfileScopedKey.of(selectedThemeKey))
|
||||||
|
|
@ -37,11 +38,16 @@ actual object ThemeSettingsStorage {
|
||||||
NSUserDefaults.standardUserDefaults.setBool(enabled, forKey = ProfileScopedKey.of(amoledEnabledKey))
|
NSUserDefaults.standardUserDefaults.setBool(enabled, forKey = ProfileScopedKey.of(amoledEnabledKey))
|
||||||
}
|
}
|
||||||
|
|
||||||
actual fun loadSelectedAppLanguage(): String? =
|
actual fun loadSelectedAppLanguage(): String? {
|
||||||
NSUserDefaults.standardUserDefaults.stringForKey(ProfileScopedKey.of(selectedAppLanguageKey))
|
val value = NSUserDefaults.standardUserDefaults.stringForKey(selectedAppLanguageKey)
|
||||||
|
if (value != null) return value
|
||||||
|
val legacy = NSUserDefaults.standardUserDefaults.stringForKey(ProfileScopedKey.of(selectedAppLanguageKey))
|
||||||
|
if (legacy != null) saveSelectedAppLanguage(legacy)
|
||||||
|
return legacy
|
||||||
|
}
|
||||||
|
|
||||||
actual fun saveSelectedAppLanguage(languageCode: String) {
|
actual fun saveSelectedAppLanguage(languageCode: String) {
|
||||||
NSUserDefaults.standardUserDefaults.setObject(languageCode, forKey = ProfileScopedKey.of(selectedAppLanguageKey))
|
NSUserDefaults.standardUserDefaults.setObject(languageCode, forKey = selectedAppLanguageKey)
|
||||||
}
|
}
|
||||||
|
|
||||||
actual fun applySelectedAppLanguage(languageCode: String) = Unit
|
actual fun applySelectedAppLanguage(languageCode: String) = Unit
|
||||||
|
|
@ -53,9 +59,12 @@ actual object ThemeSettingsStorage {
|
||||||
}
|
}
|
||||||
|
|
||||||
actual fun replaceFromSyncPayload(payload: JsonObject) {
|
actual fun replaceFromSyncPayload(payload: JsonObject) {
|
||||||
syncKeys.forEach { key ->
|
profileScopedSyncKeys.forEach { key ->
|
||||||
NSUserDefaults.standardUserDefaults.removeObjectForKey(ProfileScopedKey.of(key))
|
NSUserDefaults.standardUserDefaults.removeObjectForKey(ProfileScopedKey.of(key))
|
||||||
}
|
}
|
||||||
|
globalSyncKeys.forEach { key ->
|
||||||
|
NSUserDefaults.standardUserDefaults.removeObjectForKey(key)
|
||||||
|
}
|
||||||
|
|
||||||
payload.decodeSyncString(selectedThemeKey)?.let(::saveSelectedTheme)
|
payload.decodeSyncString(selectedThemeKey)?.let(::saveSelectedTheme)
|
||||||
payload.decodeSyncBoolean(amoledEnabledKey)?.let(::saveAmoledEnabled)
|
payload.decodeSyncBoolean(amoledEnabledKey)?.let(::saveAmoledEnabled)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue