You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
fluffychat/lib/pangea/pages/analytics/student_analytics/student_analytics.dart

88 lines
2.4 KiB
Dart

import 'dart:async';
2 years ago
import 'dart:developer';
import 'package:fluffychat/pangea/widgets/common/list_placeholder.dart';
2 years ago
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:matrix/matrix.dart';
import '../../../../widgets/matrix.dart';
import '../../../controllers/pangea_controller.dart';
import '../../../utils/sync_status_util_v2.dart';
import '../base_analytics.dart';
2 years ago
import 'student_analytics_view.dart';
class StudentAnalyticsPage extends StatefulWidget {
2 years ago
const StudentAnalyticsPage({super.key});
2 years ago
@override
State<StudentAnalyticsPage> createState() => StudentAnalyticsController();
}
class StudentAnalyticsController extends State<StudentAnalyticsPage> {
final PangeaController _pangeaController = MatrixState.pangeaController;
AnalyticsSelected? selected;
StreamSubscription? stateSub;
@override
void initState() {
super.initState();
final listFutures = [
_pangeaController.myAnalytics.setStudentChats(),
_pangeaController.myAnalytics.setStudentSpaces(),
];
Future.wait(listFutures).then((_) => setState(() {}));
stateSub = _pangeaController.myAnalytics.stateStream.listen((_) {
setState(() {});
});
}
2 years ago
@override
void dispose() {
stateSub?.cancel();
super.dispose();
}
List<Room> get chats {
if (_pangeaController.myAnalytics.studentChats.isEmpty) {
_pangeaController.myAnalytics.setStudentChats().then((_) {
if (_pangeaController.myAnalytics.studentChats.isNotEmpty) {
setState(() {});
}
});
2 years ago
}
return _pangeaController.myAnalytics.studentChats;
2 years ago
}
List<Room> get spaces {
if (_pangeaController.myAnalytics.studentSpaces.isEmpty) {
_pangeaController.myAnalytics.setStudentSpaces().then((_) {
if (_pangeaController.myAnalytics.studentSpaces.isNotEmpty) {
setState(() {});
}
});
2 years ago
}
return _pangeaController.myAnalytics.studentSpaces;
2 years ago
}
String? get userId {
final id = _pangeaController.matrixState.client.userID;
debugger(when: kDebugMode && id == null);
return id;
}
@override
Widget build(BuildContext context) {
return PLoadingStatusV2(
// if we everr want it rebuild the whole thing each time (and run initState again)
// but this is computationally expensive!
// key: UniqueKey(),
shimmerChild: const ListPlaceholder(),
// onFinish: initialize,
child: StudentAnalyticsView(this),
);
}
2 years ago
}