fix(dashboard): show an error instead of a blank trip list when the server is unreachable (#1283)

When the backend or identity provider was unreachable, a returning user with a
persisted session landed on the dashboard with an empty trip grid and no error.
That looks identical to a logged-in user who simply has no trips, so people
assumed their data had been lost.

Three client-side layers were quietly swallowing the failure: the auth check
only cleared state on a 401, so a 5xx or a network error left the stale session
in place and kept rendering the protected route; the offline-first trip repo
turned a failed fetch into the empty cache without throwing; and the dashboard
had neither an error nor an empty state, so a blank grid meant both "outage" and
"no trips".

The auth check now tells genuine offline (keep serving the cache silently, the
PWA happy path) apart from a server outage while online (keep the session but
flag it). The dashboard shows a reassuring "couldn't reach the server, your
trips are safe" banner with a retry, and a real zero-trip account finally gets a
proper empty state so the two cases never look alike. New strings added across
all locales.
This commit is contained in:
Maurice
2026-06-21 23:08:25 +02:00
parent a074debd61
commit c0b5d941dd
24 changed files with 123 additions and 6 deletions
+2
View File
@@ -42,6 +42,8 @@ const dashboard: TranslationStrings = {
'dashboard.status.past': 'Proběhlé',
'dashboard.status.daysLeft': 'zbývá {count} dní',
'dashboard.toast.loadError': 'Nepodařilo se načíst cesty',
'dashboard.loadErrorBanner': 'Server nebyl dostupný. Vaše cesty jsou v bezpečí — zkuste to prosím znovu.',
'dashboard.retry': 'Zkusit znovu',
'dashboard.toast.created': 'Cesta byla úspěšně vytvořena!',
'dashboard.toast.createError': 'Nepodařilo se vytvořit cestu',
'dashboard.toast.updated': 'Cesta byla aktualizována!',