diff options
| author | Claude <noreply@anthropic.com> | 2026-04-11 18:01:04 +0000 |
|---|---|---|
| committer | Claude <noreply@anthropic.com> | 2026-04-11 18:01:04 +0000 |
| commit | f3ef61ea24a6d8d1068d847c3104437c1a874069 (patch) | |
| tree | dc81e2ef73cfb96a7db028fff48d873597d5a291 /android-app | |
| parent | 069585f85966724827240e1cd85ae77cb0209e47 (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')
| -rw-r--r-- | android-app/app/src/main/kotlin/org/terst/nav/MainActivity.kt | 7 | ||||
| -rw-r--r-- | android-app/app/src/main/kotlin/org/terst/nav/ui/MainViewModel.kt | 10 |
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 } |
