Banners: mention Stations-tab refresh; add connection-problem banner

Fix 1 — the offline banner's subtitle claimed 'pull to refresh' while that
gesture only exists on the Stations tab, yet the banner pins across ALL
tabs. Copy now says where the gesture lives: 'Pull to refresh on the
Stations tab'. The banner itself stays tappable everywhere (tap = retry),
so the retry path is never trapped on one tab.

Fix 2 — fetch-failed-with-cache case showed stale saved prices with NO
feedback (looked like a working live app). New second banner state
'Check your internet connection / Tap to try again' (red wifi.exclamation
mark, tap = retry) now appears whenever the fetch fails but a saved cache
is on screen. It clears on the next successful fetch.

- ContentView: offlineDataDate:String? -> dataStatus enum (.live /
  .offlineDump(date) / .connectionProblem) driving a shared statusBanner
  (icon/tint/title/subtitle); -forceConnectionProblem QA launch hook;
  auto-refresh skipped under either force-* hook
- Localizable.strings: subtitle key updated, +5 new keys (incl. date-less
  'Offline data' fallback + a11y labels)
- Tests unchanged (101 green) — pure view-layer change
This commit is contained in:
FuelBoard Contributor
2026-08-16 12:14:13 +01:00
parent bfeb494c03
commit a6dbe8c46e
2 changed files with 82 additions and 34 deletions
+7 -2
View File
@@ -161,5 +161,10 @@
/* Offline data banner */
"Offline data from %@" = "Offline data from %@";
"Pull to refresh to update prices" = "Pull to refresh to update prices";
"Offline data from %@. Pull to refresh to update prices" = "Offline data from %@. Pull to refresh to update prices";
"Offline data" = "Offline data";
"Pull to refresh on the Stations tab" = "Pull to refresh on the Stations tab";
"Offline data from %@. Pull to refresh on the Stations tab" = "Offline data from %@. Pull to refresh on the Stations tab";
"Offline data. Pull to refresh on the Stations tab" = "Offline data. Pull to refresh on the Stations tab";
"Check your internet connection" = "Check your internet connection";
"Tap to try again" = "Tap to try again";
"Check your internet connection. Tap to try again" = "Check your internet connection. Tap to try again";