fix(ui): show a loading skeleton on the dashboard, dashboards, and TV views #469

Merged
nrupard merged 1 commit from fix/MAPPS-404-is-loading into main 2026-08-04 20:37:49 +02:00
Owner

What

Add an is_loading() skeleton branch to DashboardPage, DashboardsPage, and BigTicketsPage so they show a loading state during the initial fetch instead of zeroed stats / empty tables.

Why

They gated only is_unavailable(), letting the in-flight Loading fall through to value_or_default() (zeros/empty), which then pops to real data. hooks/remote_data.rs::is_loading() is the intended fix (projects.rs/reports.rs already use it). UI audit (MAPPS-399) F16; relates MAPPS-142/198.

is_loading is captured before value_or_default() (borrow); the is_unavailable + empty branches are unchanged. dashboard: shimmer stat-row + DetailSkeleton grid; dashboards: TableLoading; big_view: CardGridSkeleton.

Closes MAPPS-404.

## What Add an `is_loading()` skeleton branch to DashboardPage, DashboardsPage, and BigTicketsPage so they show a loading state during the initial fetch instead of zeroed stats / empty tables. ## Why They gated only `is_unavailable()`, letting the in-flight `Loading` fall through to `value_or_default()` (zeros/empty), which then pops to real data. `hooks/remote_data.rs::is_loading()` is the intended fix (projects.rs/reports.rs already use it). UI audit (MAPPS-399) F16; relates MAPPS-142/198. `is_loading` is captured before `value_or_default()` (borrow); the `is_unavailable` + empty branches are unchanged. dashboard: shimmer stat-row + DetailSkeleton grid; dashboards: TableLoading; big_view: CardGridSkeleton. Closes MAPPS-404.
fix(ui): show a loading skeleton on the dashboard, dashboards, and TV views
All checks were successful
Check / fmt + clippy + tests (pull_request) Successful in 1m28s
Create release / Create release from merged PR (pull_request) Has been skipped
a9e0c957d6
DashboardPage, DashboardsPage, and the big/TV BigTicketsPage gated only on is_unavailable() (server-down), so the in-flight Loading state fell through to value_or_default() = zeros/empty: the landing dashboard flashed "0" StatCards and "No tickets yet." tables, then popped to real data once the fetch resolved. hooks/remote_data.rs exposes is_loading() for exactly this (projects.rs / reports.rs already use it).

Capture is_loading() before value_or_default() consumes the resource, and add a loading branch ahead of the empty branch: dashboard gets a shape-matching skeleton (4 shimmer stat cards + a 2-col DetailSkeleton grid, using the shared shimmer tokens); dashboards uses TableLoading; big_view uses CardGridSkeleton. The is_unavailable and empty branches are unchanged. Found by the 2026-08-04 UI audit (MAPPS-399), finding F16; relates MAPPS-142 / MAPPS-198.

#MAPPS-404

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
nrupard deleted branch fix/MAPPS-404-is-loading 2026-08-04 20:37:49 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
psa-systems/mokosh-apps!469
No description provided.