chore: update construct level summary request (#3471)

* chore: update construct level summary request

* chore: add back language key to level up construct summary request
pull/2245/head
ggurdin 4 months ago committed by GitHub
parent 8e5dc610f8
commit c03cd1d0e1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -19,6 +19,7 @@ import 'package:fluffychat/pangea/common/utils/error_handler.dart';
import 'package:fluffychat/pangea/constructs/construct_identifier.dart'; import 'package:fluffychat/pangea/constructs/construct_identifier.dart';
import 'package:fluffychat/pangea/constructs/construct_repo.dart'; import 'package:fluffychat/pangea/constructs/construct_repo.dart';
import 'package:fluffychat/pangea/events/constants/pangea_event_types.dart'; import 'package:fluffychat/pangea/events/constants/pangea_event_types.dart';
import 'package:fluffychat/pangea/events/event_wrappers/pangea_message_event.dart';
import 'package:fluffychat/pangea/extensions/pangea_room_extension.dart'; import 'package:fluffychat/pangea/extensions/pangea_room_extension.dart';
import 'package:fluffychat/pangea/learning_settings/models/language_model.dart'; import 'package:fluffychat/pangea/learning_settings/models/language_model.dart';
import 'package:fluffychat/pangea/practice_activities/practice_selection_repo.dart'; import 'package:fluffychat/pangea/practice_activities/practice_selection_repo.dart';
@ -486,11 +487,11 @@ class GetAnalyticsController extends BaseController {
// compute construct use of current level // compute construct use of current level
final List<OneConstructUse> constructUseOfCurrentLevel = []; final List<OneConstructUse> constructUseOfCurrentLevel = [];
int score = 0; int score = constructListModel.totalXP;
for (final use in constructListModel.uses) { for (final use in constructListModel.uses) {
constructUseOfCurrentLevel.add(use); constructUseOfCurrentLevel.add(use);
score += use.xp; score -= use.xp;
if (score >= diffXP) break; if (score <= minXP) break;
} }
// extract construct use message bodies for analytics // extract construct use message bodies for analytics
@ -502,19 +503,40 @@ class GetAnalyticsController extends BaseController {
useEventIds[use.metadata.roomId!]!.add(use.metadata.eventId!); useEventIds[use.metadata.roomId!]!.add(use.metadata.eventId!);
} }
final List<String?> constructUseMessageContentBodies = []; final List<Map<String, dynamic>> messages = [];
for (final entry in useEventIds.entries) { for (final entry in useEventIds.entries) {
final String roomId = entry.key; final String roomId = entry.key;
final room = _client.getRoomById(roomId); final room = _client.getRoomById(roomId);
if (room == null) continue; if (room == null) continue;
final List<String?> messageBodies = [];
final timeline = await room.getTimeline();
for (final eventId in entry.value) { for (final eventId in entry.value) {
try { try {
final Event? event = await room.getEventById(eventId); final Event? event = await room.getEventById(eventId);
if (event?.content["body"] is! String) continue; if (event == null) continue;
final String body = event?.content["body"] as String; final pangeaMessageEvent = PangeaMessageEvent(
if (body.isEmpty) continue; event: event,
messageBodies.add(body); timeline: timeline,
ownMessage: room.client.userID == event.senderId,
);
final String? originalSent = pangeaMessageEvent.originalSent?.text;
String? originalWritten = originalSent;
if (pangeaMessageEvent.originalWritten != null &&
!pangeaMessageEvent.originalWritten!.content.originalSent) {
originalWritten = pangeaMessageEvent.originalWritten!.text;
} else if (pangeaMessageEvent.originalSent?.choreo != null &&
pangeaMessageEvent.originalSent!.choreo!.choreoSteps.isNotEmpty) {
final steps = pangeaMessageEvent.originalSent!.choreo!.choreoSteps;
originalWritten = steps.first.text;
}
final Map<String, String?> entry = {
"sent": originalSent,
"written": originalWritten,
};
messages.add(entry);
} catch (e, s) { } catch (e, s) {
debugPrint("Error getting event by ID: $e"); debugPrint("Error getting event by ID: $e");
ErrorHandler.logError( ErrorHandler.logError(
@ -528,13 +550,13 @@ class GetAnalyticsController extends BaseController {
continue; continue;
} }
} }
constructUseMessageContentBodies.addAll(messageBodies);
} }
final request = ConstructSummaryRequest( final request = ConstructSummaryRequest(
constructs: constructUseOfCurrentLevel, constructs: constructUseOfCurrentLevel,
constructUseMessageContentBodies: constructUseMessageContentBodies, messages: messages,
language: _l1!.langCodeShort, userL1: _l1!.langCodeShort,
userL2: _l2!.langCodeShort,
upperLevel: upperLevel, upperLevel: upperLevel,
lowerLevel: lowerLevel, lowerLevel: lowerLevel,
); );

@ -66,15 +66,17 @@ class ConstructSummary {
class ConstructSummaryRequest { class ConstructSummaryRequest {
final List<OneConstructUse> constructs; final List<OneConstructUse> constructs;
final List<String?>? constructUseMessageContentBodies; final List<Map<String, dynamic>> messages;
final String language; final String userL1;
final String userL2;
final int upperLevel; final int upperLevel;
final int lowerLevel; final int lowerLevel;
ConstructSummaryRequest({ ConstructSummaryRequest({
required this.constructs, required this.constructs,
this.constructUseMessageContentBodies, required this.messages,
required this.language, required this.userL1,
required this.userL2,
required this.upperLevel, required this.upperLevel,
required this.lowerLevel, required this.lowerLevel,
}); });
@ -82,25 +84,14 @@ class ConstructSummaryRequest {
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
return { return {
'constructs': constructs.map((construct) => construct.toJson()).toList(), 'constructs': constructs.map((construct) => construct.toJson()).toList(),
'construct_use_message_content_bodies': constructUseMessageContentBodies, 'msgs': messages,
'language': language, 'user_l1': userL1,
'user_l2': userL2,
'language': userL1,
'upper_level': upperLevel, 'upper_level': upperLevel,
'lower_level': lowerLevel, 'lower_level': lowerLevel,
}; };
} }
factory ConstructSummaryRequest.fromJson(Map<String, dynamic> json) {
return ConstructSummaryRequest(
constructs: (json['constructs'] as List)
.map((construct) => OneConstructUse.fromJson(construct))
.toList(),
constructUseMessageContentBodies:
List<String>.from(json['construct_use_message_content_bodies']),
language: json['language'],
upperLevel: json['upper_level'],
lowerLevel: json['lower_level'],
);
}
} }
class ConstructSummaryResponse { class ConstructSummaryResponse {

Loading…
Cancel
Save