From 29fb98a20923b1b04a126ca00a2c21448ed822d5 Mon Sep 17 00:00:00 2001 From: Peter Stone Date: Tue, 5 May 2026 21:39:55 -1000 Subject: fix: remove crash-risk !! operators in UnitPrefs and MainViewModel UnitPrefs: getString() returns String? even with a non-null default, so !! crashes on corrupted prefs. Replaced with explicit elvis fallback to the same enum default. MainViewModel: forecastResult.getOrThrow() is logically safe (when-branch guards it) but unnecessarily brittle. Replaced with getOrNull() ?: emptyList(). Co-Authored-By: Claude Sonnet 4.6 --- android-app/app/src/main/kotlin/org/terst/nav/UnitPrefs.kt | 8 ++++---- android-app/app/src/main/kotlin/org/terst/nav/ui/MainViewModel.kt | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'android-app/app/src/main') diff --git a/android-app/app/src/main/kotlin/org/terst/nav/UnitPrefs.kt b/android-app/app/src/main/kotlin/org/terst/nav/UnitPrefs.kt index 8d60ae0..c0745f8 100644 --- a/android-app/app/src/main/kotlin/org/terst/nav/UnitPrefs.kt +++ b/android-app/app/src/main/kotlin/org/terst/nav/UnitPrefs.kt @@ -17,19 +17,19 @@ class UnitPrefs(context: Context) { private val prefs = context.getSharedPreferences("unit_prefs", Context.MODE_PRIVATE) var tempUnit: TempUnit - get() = TempUnit.valueOf(prefs.getString(KEY_TEMP, TempUnit.FAHRENHEIT.name)!!) + get() = TempUnit.valueOf(prefs.getString(KEY_TEMP, null) ?: TempUnit.FAHRENHEIT.name) set(v) { prefs.edit().putString(KEY_TEMP, v.name).apply() } var depthUnit: DepthUnit - get() = DepthUnit.valueOf(prefs.getString(KEY_DEPTH, DepthUnit.FEET.name)!!) + get() = DepthUnit.valueOf(prefs.getString(KEY_DEPTH, null) ?: DepthUnit.FEET.name) set(v) { prefs.edit().putString(KEY_DEPTH, v.name).apply() } var pressureUnit: PressureUnit - get() = PressureUnit.valueOf(prefs.getString(KEY_PRESSURE, PressureUnit.HPA.name)!!) + get() = PressureUnit.valueOf(prefs.getString(KEY_PRESSURE, null) ?: PressureUnit.HPA.name) set(v) { prefs.edit().putString(KEY_PRESSURE, v.name).apply() } var speedUnit: SpeedUnit - get() = SpeedUnit.valueOf(prefs.getString(KEY_SPEED, SpeedUnit.KNOTS.name)!!) + get() = SpeedUnit.valueOf(prefs.getString(KEY_SPEED, null) ?: SpeedUnit.KNOTS.name) set(v) { prefs.edit().putString(KEY_SPEED, v.name).apply() } fun formatTemp(tempC: Double): String = when (tempUnit) { diff --git a/android-app/app/src/main/kotlin/org/terst/nav/ui/MainViewModel.kt b/android-app/app/src/main/kotlin/org/terst/nav/ui/MainViewModel.kt index 57de608..c648fab 100644 --- a/android-app/app/src/main/kotlin/org/terst/nav/ui/MainViewModel.kt +++ b/android-app/app/src/main/kotlin/org/terst/nav/ui/MainViewModel.kt @@ -315,7 +315,7 @@ class MainViewModel( } else -> { _windArrow.value = arrowResult.getOrNull() - _forecast.value = forecastResult.getOrThrow() + _forecast.value = forecastResult.getOrNull() ?: emptyList() _uiState.value = UiState.Success } } -- cgit v1.2.3