|
|
|
|
@ -1,12 +1,12 @@
|
|
|
|
|
import 'dart:developer';
|
|
|
|
|
|
|
|
|
|
import 'package:flutter/foundation.dart';
|
|
|
|
|
|
|
|
|
|
import 'package:matrix/matrix.dart';
|
|
|
|
|
|
|
|
|
|
import 'package:fluffychat/pangea/constants/class_default_values.dart';
|
|
|
|
|
import 'package:fluffychat/pangea/extensions/client_extension.dart';
|
|
|
|
|
import 'package:fluffychat/pangea/models/student_analytics_summary_model.dart';
|
|
|
|
|
import 'package:fluffychat/pangea/utils/error_handler.dart';
|
|
|
|
|
import 'package:flutter/foundation.dart';
|
|
|
|
|
import 'package:matrix/matrix.dart';
|
|
|
|
|
|
|
|
|
|
import '../constants/pangea_event_types.dart';
|
|
|
|
|
import 'chart_analytics_model.dart';
|
|
|
|
|
|
|
|
|
|
@ -41,8 +41,27 @@ class StudentAnalyticsEvent {
|
|
|
|
|
return _contentCache!;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<void> handleNewMessage(RecentMessageRecord message) async {
|
|
|
|
|
debugPrint("handle new message");
|
|
|
|
|
Future<void> removeEdittedMessages(
|
|
|
|
|
RecentMessageRecord message,
|
|
|
|
|
) async {
|
|
|
|
|
final List<String> removeIds = await classRoom.client.getEditHistory(
|
|
|
|
|
message.chatId,
|
|
|
|
|
message.eventId,
|
|
|
|
|
);
|
|
|
|
|
if (removeIds.isEmpty) return;
|
|
|
|
|
_messagesToSave.removeWhere(
|
|
|
|
|
(msg) => removeIds.any((e) => e == msg.eventId),
|
|
|
|
|
);
|
|
|
|
|
content.removeEdittedMessages(
|
|
|
|
|
classRoom.client,
|
|
|
|
|
removeIds,
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<void> handleNewMessage(
|
|
|
|
|
RecentMessageRecord message, {
|
|
|
|
|
isEdit = false,
|
|
|
|
|
}) async {
|
|
|
|
|
if (classRoom.client.userID != _event.stateKey) {
|
|
|
|
|
debugger(when: kDebugMode);
|
|
|
|
|
ErrorHandler.logError(
|
|
|
|
|
@ -50,6 +69,10 @@ class StudentAnalyticsEvent {
|
|
|
|
|
);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (isEdit) {
|
|
|
|
|
await removeEdittedMessages(message);
|
|
|
|
|
}
|
|
|
|
|
_addMessage(message);
|
|
|
|
|
|
|
|
|
|
if (DateTime.now().difference(content.lastUpdated).inMinutes >
|
|
|
|
|
@ -66,6 +89,10 @@ class StudentAnalyticsEvent {
|
|
|
|
|
);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
for (final message in messages) {
|
|
|
|
|
await removeEdittedMessages(message);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_messagesToSave.addAll(messages);
|
|
|
|
|
_updateStudentAnalytics();
|
|
|
|
|
}
|
|
|
|
|
@ -75,6 +102,7 @@ class StudentAnalyticsEvent {
|
|
|
|
|
content.addAll(_messagesToSave);
|
|
|
|
|
debugPrint("updating student analytics");
|
|
|
|
|
_clearMessages();
|
|
|
|
|
|
|
|
|
|
await classRoom.client.setRoomStateWithKey(
|
|
|
|
|
classRoom.id,
|
|
|
|
|
_event.type,
|
|
|
|
|
|