fix(BasePreferencesManager): use default value when stored enum is invalid

This commit is contained in:
rushiiMachine 2025-06-04 12:10:32 -07:00
parent b43ad151a5
commit c2e98ccf8a
No known key found for this signature in database
GPG key ID: DCBE5952BB3B6420

View file

@ -12,8 +12,13 @@ abstract class BasePreferenceManager(
private fun getBoolean(key: String, defaultValue: Boolean) = prefs.getBoolean(key, defaultValue) private fun getBoolean(key: String, defaultValue: Boolean) = prefs.getBoolean(key, defaultValue)
private fun getInt(key: String, defaultValue: Int) = prefs.getInt(key, defaultValue) private fun getInt(key: String, defaultValue: Int) = prefs.getInt(key, defaultValue)
private fun getFloat(key: String, defaultValue: Float) = prefs.getFloat(key, defaultValue) private fun getFloat(key: String, defaultValue: Float) = prefs.getFloat(key, defaultValue)
protected inline fun <reified E : Enum<E>> getEnum(key: String, defaultValue: E) = protected inline fun <reified E : Enum<E>> getEnum(key: String, defaultValue: E): E {
enumValueOf<E>(getString(key, defaultValue.name)) return try {
enumValueOf<E>(getString(key, defaultValue.name))
} catch (_: IllegalArgumentException) {
defaultValue
}
}
protected fun putString(key: String, value: String?) = prefs.edit { putString(key, value) } protected fun putString(key: String, value: String?) = prefs.edit { putString(key, value) }
private fun putBoolean(key: String, value: Boolean) = prefs.edit { putBoolean(key, value) } private fun putBoolean(key: String, value: Boolean) = prefs.edit { putBoolean(key, value) }
@ -27,7 +32,6 @@ abstract class BasePreferenceManager(
getter: (key: String, defaultValue: T) -> T, getter: (key: String, defaultValue: T) -> T,
private val setter: (key: String, newValue: T) -> Unit, private val setter: (key: String, newValue: T) -> Unit,
) { ) {
@Suppress("RedundantSetter")
var value by mutableStateOf(getter(key, defaultValue)) var value by mutableStateOf(getter(key, defaultValue))
private set private set
@ -38,6 +42,7 @@ abstract class BasePreferenceManager(
} }
} }
@Suppress("unused")
protected fun stringPreference( protected fun stringPreference(
key: String, key: String,
defaultValue: String, defaultValue: String,
@ -48,6 +53,7 @@ abstract class BasePreferenceManager(
setter = ::putString setter = ::putString
) )
@Suppress("unused")
protected fun booleanPreference( protected fun booleanPreference(
key: String, key: String,
defaultValue: Boolean, defaultValue: Boolean,
@ -58,6 +64,7 @@ abstract class BasePreferenceManager(
setter = ::putBoolean setter = ::putBoolean
) )
@Suppress("unused")
protected fun intPreference( protected fun intPreference(
key: String, key: String,
defaultValue: Int, defaultValue: Int,
@ -68,6 +75,7 @@ abstract class BasePreferenceManager(
setter = ::putInt setter = ::putInt
) )
@Suppress("unused")
protected fun floatPreference( protected fun floatPreference(
key: String, key: String,
defaultValue: Float, defaultValue: Float,
@ -78,6 +86,7 @@ abstract class BasePreferenceManager(
setter = ::putFloat setter = ::putFloat
) )
@Suppress("unused")
protected inline fun <reified E : Enum<E>> enumPreference( protected inline fun <reified E : Enum<E>> enumPreference(
key: String, key: String,
defaultValue: E, defaultValue: E,