From 91701b18342eb3a5f20a4801ff7ff0b88657271b Mon Sep 17 00:00:00 2001 From: ggurdin Date: Tue, 20 Jan 2026 12:01:09 -0500 Subject: [PATCH] chore: use cached derived data in level bar when available --- .../analytics_data/analytics_data_service.dart | 2 ++ .../learning_progress_indicators.dart | 14 ++++++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/lib/pangea/analytics_data/analytics_data_service.dart b/lib/pangea/analytics_data/analytics_data_service.dart index 0f250f121..31032b887 100644 --- a/lib/pangea/analytics_data/analytics_data_service.dart +++ b/lib/pangea/analytics_data/analytics_data_service.dart @@ -214,6 +214,8 @@ class AnalyticsDataService { await _syncController?.waitForSync(analyticsRoomID); } + DerivedAnalyticsDataModel? get cachedDerivedData => _cachedDerivedStats; + Future get derivedData async { await _ensureInitialized(); diff --git a/lib/pangea/analytics_summary/learning_progress_indicators.dart b/lib/pangea/analytics_summary/learning_progress_indicators.dart index d89851c6c..8c7079d2c 100644 --- a/lib/pangea/analytics_summary/learning_progress_indicators.dart +++ b/lib/pangea/analytics_summary/learning_progress_indicators.dart @@ -206,21 +206,23 @@ class LearningProgressIndicators extends StatelessWidget { child: FutureBuilder( future: analyticsService.derivedData, builder: (context, snapshot) { + final cached = + analyticsService.cachedDerivedData; + final data = snapshot.data ?? cached; return Row( spacing: 8.0, children: [ Expanded( child: LearningProgressBar( height: 24.0, - loading: !snapshot.hasData, - progress: snapshot - .data?.levelProgress ?? - 0.0, + loading: data == null, + progress: + data?.levelProgress ?? 0.0, ), ), - if (snapshot.hasData) + if (data != null) Text( - "⭐ ${snapshot.data!.level}", + "⭐ ${data.level}", style: Theme.of(context) .textTheme .titleLarge