features/wallet/wallet_display_sync_status library

Enums

DisplayStatusEdge
Which dwell (if any) a raw transition needs before the display follows — pure, so the notifier's timer plumbing and the truth-table tests share one rule that cannot drift.

Constants

walletStallPostureDwell → const Duration
How long a Stalled-posture EDGE must hold before the display adopts it (#399 item 3). FR-21's sub-second dial verdicts made the raw status flap Stalled↔Scanning on every scheduled retry of a dead link: the badge flickered, the liveRegion re-announced the pair each cycle (screen-reader chatter), and the send screen's pinned queue button inserted/removed under the user's thumb. The dwell must comfortably outlast one whole doomed retry pass (dial verdict ≲1s + status churn) so the blip is absorbed, while staying short enough that a REAL posture change still reads prompt.
walletTryNowLiveWindow → const Duration
How long the display mirrors the raw status LIVE after a "Try now" tap (#399 item 4; review M2). The tap's feedback must be the truth in motion — behind the dwell, a successful restart would sit under a held "Sync paused" for a full walletStallPostureDwell (a dead-feeling tap, the class). The window spans one whole doomed restart cycle (dial verdict ≲1s + status churn) so a FAILED Try now visibly returns to the stall too — honest in both directions — then the flap-absorbing dwell resumes.

Properties

walletDisplaySyncStatusProvider → NotifierProvider<WalletDisplaySyncStatusNotifier, AsyncValue<SyncStatus>>
The POSTURE-STABLE view of syncStatusProvider for display surfaces (the badge, the sync sheet, the send screen's queue affordance — all three watch THIS so they can never flicker apart). Controllers and logic listeners (rescan tip-edge, synced-tip latch, refresh edges) stay on the RAW provider: the debounce is a presentation policy, never a truth filter. The ONE named exception is the wallet tab's tip follow (walletTipFollowProvider): it decides whether the sync BAR shows and whether the coin spins as the bar hides, so it must read what the bar renders (S12; reading raw made a flaky link flicker). Do not move it back to raw.
final

Functions

nextDisplaySyncStatus(SyncStatus shown, SyncStatus raw) → DisplayStatusEdge
The #399 posture-dwell truth table. shown is the currently displayed status, raw the new raw emission. Total over every pair; never throws.