summaryrefslogtreecommitdiff
path: root/android-app/app/src/main
diff options
context:
space:
mode:
authorClaude <noreply@anthropic.com>2026-04-11 18:01:04 +0000
committerClaude <noreply@anthropic.com>2026-04-11 18:01:04 +0000
commitf3ef61ea24a6d8d1068d847c3104437c1a874069 (patch)
treedc81e2ef73cfb96a7db028fff48d873597d5a291 /android-app/app/src/main
parent069585f85966724827240e1cd85ae77cb0209e47 (diff)
Surface conditions API errors as Snackbar
Adds _conditionsError SharedFlow to MainViewModel that emits the exception class + message on fetchCurrentConditions failure. MainActivity collects it and shows a LENGTH_LONG Snackbar — no adb required to see why conditions aren't loading. https://claude.ai/code/session_01HXPjBsogsJVRwCiekDGkJX
Diffstat (limited to 'android-app/app/src/main')
-rw-r--r--android-app/app/src/main/kotlin/org/terst/nav/MainActivity.kt7
-rw-r--r--android-app/app/src/main/kotlin/org/terst/nav/ui/MainViewModel.kt10
2 files changed, 16 insertions, 1 deletions
diff --git a/android-app/app/src/main/kotlin/org/terst/nav/MainActivity.kt b/android-app/app/src/main/kotlin/org/terst/nav/MainActivity.kt
index ecf2254..7a00748 100644
--- a/android-app/app/src/main/kotlin/org/terst/nav/MainActivity.kt
+++ b/android-app/app/src/main/kotlin/org/terst/nav/MainActivity.kt
@@ -529,6 +529,13 @@ class MainActivity : AppCompatActivity(), SafetyFragment.SafetyListener {
}
}
lifecycleScope.launch {
+ viewModel.conditionsError.collect { msg ->
+ com.google.android.material.snackbar.Snackbar
+ .make(findViewById(android.R.id.content), msg, com.google.android.material.snackbar.Snackbar.LENGTH_LONG)
+ .show()
+ }
+ }
+ lifecycleScope.launch {
LocationService.nmeaDepthDataFlow.collect { depthData ->
lastDepthMeters = depthData.depthMeters
hudDepth.text = unitPrefs.formatDepth(depthData.depthMeters)
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 b2d5529..e65cbd1 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
@@ -55,6 +55,10 @@ class MainViewModel(
private val _conditionsLoading = MutableStateFlow(false)
val conditionsLoading: StateFlow<Boolean> = _conditionsLoading.asStateFlow()
+
+ private val _conditionsError = MutableSharedFlow<String>(replay = 0)
+ val conditionsError: SharedFlow<String> = _conditionsError.asSharedFlow()
+
private var conditionsJob: Job? = null
private val _aisTargets = MutableStateFlow<List<AisVessel>>(emptyList())
@@ -177,7 +181,11 @@ class MainViewModel(
try {
repository.fetchCurrentConditions(lat, lon)
.onSuccess { _marineConditions.value = it }
- .onFailure { android.util.Log.e("Nav", "fetchCurrentConditions failed: ${it.javaClass.simpleName} — ${it.message}", it) }
+ .onFailure {
+ val msg = "${it.javaClass.simpleName}: ${it.message}"
+ android.util.Log.e("Nav", "fetchCurrentConditions failed: $msg", it)
+ _conditionsError.emit(msg)
+ }
} finally {
_conditionsLoading.value = false
}