From 9138940e351f6d85734003443ad5ad5ad134e240 Mon Sep 17 00:00:00 2001 From: ggurdin Date: Tue, 4 Jun 2024 10:56:30 -0400 Subject: [PATCH] added first initial refresh for new analytics data structure, ensured chat and space list in my analytics is updated --- .../controllers/my_analytics_controller.dart | 1 + .../pages/analytics/base_analytics.dart | 27 +++++++++++++++++++ .../student_analytics/student_analytics.dart | 7 +++++ 3 files changed, 35 insertions(+) diff --git a/lib/pangea/controllers/my_analytics_controller.dart b/lib/pangea/controllers/my_analytics_controller.dart index b663894c2..e04f0a381 100644 --- a/lib/pangea/controllers/my_analytics_controller.dart +++ b/lib/pangea/controllers/my_analytics_controller.dart @@ -331,6 +331,7 @@ class MyAnalyticsController extends BaseController { lastUpdates.add(lastEvent!.content.lastUpdated!); } } + if (lastUpdates.isEmpty) return null; return lastUpdates.reduce( (value, element) => value.isAfter(element) ? value : element, ); diff --git a/lib/pangea/pages/analytics/base_analytics.dart b/lib/pangea/pages/analytics/base_analytics.dart index 2cc2fce6c..680ac8a04 100644 --- a/lib/pangea/pages/analytics/base_analytics.dart +++ b/lib/pangea/pages/analytics/base_analytics.dart @@ -1,6 +1,10 @@ import 'dart:async'; +import 'package:fluffychat/pangea/constants/pangea_event_types.dart'; import 'package:fluffychat/pangea/enum/construct_type_enum.dart'; +import 'package:fluffychat/pangea/extensions/client_extension/client_extension.dart'; +import 'package:fluffychat/pangea/extensions/pangea_room_extension/pangea_room_extension.dart'; +import 'package:fluffychat/pangea/models/analytics_event.dart'; import 'package:fluffychat/pangea/pages/analytics/base_analytics_view.dart'; import 'package:fluffychat/pangea/pages/analytics/student_analytics/student_analytics.dart'; import 'package:flutter/material.dart'; @@ -46,9 +50,32 @@ class BaseAnalyticsController extends State { @override void initState() { super.initState(); + runFirstRefresh(); setChartData(); } + Future runFirstRefresh() async { + final analyticsRooms = + pangeaController.matrixState.client.allMyAnalyticsRooms; + + final List analyticsEvent = []; + for (final analyticsRoom in analyticsRooms) { + final lastSummaryEvent = await analyticsRoom + .getLastAnalyticsEvent(PangeaEventTypes.summaryAnalytics); + final lastConstructEvent = + await analyticsRoom.getLastAnalyticsEvent(PangeaEventTypes.construct); + if (lastSummaryEvent != null) { + analyticsEvent.add(lastSummaryEvent); + } + if (lastConstructEvent != null) { + analyticsEvent.add(lastConstructEvent); + } + } + + if (analyticsEvent.isNotEmpty) return; + onRefresh(); + } + Future onRefresh() async { await showFutureLoadingDialog( context: context, diff --git a/lib/pangea/pages/analytics/student_analytics/student_analytics.dart b/lib/pangea/pages/analytics/student_analytics/student_analytics.dart index 80e5c3a25..d3d1be7d6 100644 --- a/lib/pangea/pages/analytics/student_analytics/student_analytics.dart +++ b/lib/pangea/pages/analytics/student_analytics/student_analytics.dart @@ -27,6 +27,13 @@ class StudentAnalyticsController extends State { @override void initState() { super.initState(); + + final listFutures = [ + _pangeaController.myAnalytics.setStudentChats(), + _pangeaController.myAnalytics.setStudentSpaces(), + ]; + Future.wait(listFutures).then((_) => setState(() {})); + stateSub = _pangeaController.myAnalytics.stateStream.listen((_) { setState(() {}); });