added first initial refresh for new analytics data structure, ensured chat and space list in my analytics is updated

This commit is contained in:
ggurdin 2024-06-04 10:56:30 -04:00
parent e4357a3e9b
commit 9138940e35
3 changed files with 35 additions and 0 deletions

View file

@ -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,
);

View file

@ -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<BaseAnalyticsPage> {
@override
void initState() {
super.initState();
runFirstRefresh();
setChartData();
}
Future<void> runFirstRefresh() async {
final analyticsRooms =
pangeaController.matrixState.client.allMyAnalyticsRooms;
final List<AnalyticsEvent> 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<void> onRefresh() async {
await showFutureLoadingDialog(
context: context,

View file

@ -27,6 +27,13 @@ class StudentAnalyticsController extends State<StudentAnalyticsPage> {
@override
void initState() {
super.initState();
final listFutures = [
_pangeaController.myAnalytics.setStudentChats(),
_pangeaController.myAnalytics.setStudentSpaces(),
];
Future.wait(listFutures).then((_) => setState(() {}));
stateSub = _pangeaController.myAnalytics.stateStream.listen((_) {
setState(() {});
});