Skip to content

Polling providers (traffic/system monitor) don't start timer when dashboardDomainReadyProvider already resolved #964

Description

@AustinChangLinksys

Problem

Dashboard traffic cards and Statistics page show "Waiting for data..." indefinitely when:

  1. User logs in and navigates to Dashboard
  2. dashboardDomainReadyProvider completes before uspTrafficAnalysisProvider / uspSystemMonitorProvider are first read
  3. The polling providers use ref.listen(dashboardDomainReadyProvider, ...) to start their timers
  4. ref.listen() only fires on state changes — if the provider was already AsyncData when the listener was registered, the callback never fires
  5. Timer never starts → data never fetched → UI stuck on loading state

Root Cause

ref.listen(dashboardDomainReadyProvider, (_, next) {
  if (next is AsyncData) {
    setRefreshInterval(defaultInterval);  // Never called if already AsyncData
  }
});

Affected Components

  • UspTrafficAnalysisNotifier — Dashboard traffic card, Statistics page traffic sections
  • UspSystemMonitorNotifier — Dashboard system status card, Statistics page system sections

Fix

Add immediate state check after registering the listener to handle the case where the condition is already met:

final domainReady = ref.read(dashboardDomainReadyProvider);
final isAuthenticated = ref.read(appConnectionStateProvider) == AppConnectionState.authenticated;
if (domainReady is AsyncData && isAuthenticated) {
  Future.microtask(() => setRefreshInterval(defaultInterval));
}

PR

#962

Metadata

Metadata

Labels

2.xLabeled for 2.x versionconfidence:mediumEvidence present but cross-layer or needs firmware confirmationtriagedAutomated diagnosis complete; root cause investigated (bug lane entry)

Type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions