You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Follow-up to #1306 — that epic delivered crash-proofing and read caching for the main tabs. A code audit (Jul 2026) found the remaining gaps below. This PBI hardens offline mode and closes the loop so #1306 can be closed.
Offline support today is opt-in per ViewModel (FileCacheService + AdvancedObservableCollection<T>), so every new page ships offline-broken until someone remembers to wire it up — Activity Feed proves it. There is also no reconnect story: users get no signal they are viewing stale data, and nothing refreshes when connectivity returns.
Gaps found:
Activity Feed — no offline support at all.ActivityPageViewModel fetches into a plain ObservableRangeCollection; offline shows an "Oops…" alert and an empty page. PR ✨ Mobile | Add offline support to Activity Feed #1537 would have fixed this but was closed unmerged.
Posts (list + detail) — no caching. Won't crash, but show nothing offline.
No connectivity-change handling anywhere. Zero ConnectivityChanged subscriptions, no offline banner in any XAML, HasLoadedFromCache is never surfaced to the UI, no auto-refresh on reconnect. The ✨ Implement Full Offline Support [JK] #1306 AC "seamless transition between online and offline modes" isn't met yet.
Scanner fails generically offline. A QR scan offline lands in ScanResult.Error with no offline-specific message — the user isn't told connectivity was the cause.
Inconsistent offline messaging.ExceptionHelper only special-cases 401; each page shows its own wording ("Device Offline" / "Oops…" / nothing).
Move caching down to the service layer so it is default-on (evaluate AkavacheGetAndFetchLatest() — it is exactly the cache-then-network pattern we hand-rolled, with expiry + key management built in; we already reference System.Reactive).
One injectable IConnectivityService + ConnectivityChanged subscription → global offline banner (CommunityToolkit.Maui Snackbar/Toast) + auto-refresh on reconnect; centralize the "online-only action" guard.
Follow-up to #1306 — that epic delivered crash-proofing and read caching for the main tabs. A code audit (Jul 2026) found the remaining gaps below. This PBI hardens offline mode and closes the loop so #1306 can be closed.
cc: @jernejk
Pain
Offline support today is opt-in per ViewModel (
FileCacheService+AdvancedObservableCollection<T>), so every new page ships offline-broken until someone remembers to wire it up — Activity Feed proves it. There is also no reconnect story: users get no signal they are viewing stale data, and nothing refreshes when connectivity returns.Gaps found:
ActivityPageViewModelfetches into a plainObservableRangeCollection; offline shows an "Oops…" alert and an empty page. PR ✨ Mobile | Add offline support to Activity Feed #1537 would have fixed this but was closed unmerged.ConnectivityChangedsubscriptions, no offline banner in any XAML,HasLoadedFromCacheis never surfaced to the UI, no auto-refresh on reconnect. The ✨ Implement Full Offline Support [JK] #1306 AC "seamless transition between online and offline modes" isn't met yet.ScanResult.Errorwith no offline-specific message — the user isn't told connectivity was the cause.ExceptionHelperonly special-cases 401; each page shows its own wording ("Device Offline" / "Oops…" / nothing).Suggested Solution
GetAndFetchLatest()— it is exactly the cache-then-network pattern we hand-rolled, with expiry + key management built in; we already referenceSystem.Reactive).IConnectivityService+ConnectivityChangedsubscription → global offline banner (CommunityToolkit.Maui Snackbar/Toast) + auto-refresh on reconnect; centralize the "online-only action" guard.{schemaVersion, timestamp, etag}+ TTL; investigate ETag support against the backend (profile pictures are the likely first win).Acceptance Criteria
Tasks
FileCacheService(decide + record ADR)IConnectivityService+ global offline banner + refresh-on-reconnectHasLoadedFromCache/ stale-data indicator in UIExceptionHelperIf-None-Matchwhere it helpsThanks!