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_repo.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/learning_settings/models/language_model.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
final List<OneConstructUse> constructUseOfCurrentLevel = [];
int score = 0;
int score = constructListModel.totalXP;
for (final use in constructListModel.uses) {
constructUseOfCurrentLevel.add(use);
score += use.xp;
if (score >= diffXP) break;
score -= use.xp;
if (score <= minXP) break;
}
// extract construct use message bodies for analytics
@ -502,19 +503,40 @@ class GetAnalyticsController extends BaseController {
useEventIds[use.metadata.roomId!]!.add(use.metadata.eventId!);
}
final List<String?> constructUseMessageContentBodies = [];
final List<Map<String, dynamic>> messages = [];
for (final entry in useEventIds.entries) {
final String roomId = entry.key;
final room = _client.getRoomById(roomId);
if (room == null) continue;
final List<String?> messageBodies = [];
final timeline = await room.getTimeline();
for (final eventId in entry.value) {
try {
final Event? event = await room.getEventById(eventId);
if (event?.content["body"] is! String) continue;
final String body = event?.content["body"] as String;
if (body.isEmpty) continue;
messageBodies.add(body);
if (event == null) continue;
final pangeaMessageEvent = PangeaMessageEvent(
event: event,
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) {
debugPrint("Error getting event by ID: $e");
ErrorHandler.logError(
@ -528,13 +550,13 @@ class GetAnalyticsController extends BaseController {
continue;
}
}
constructUseMessageContentBodies.addAll(messageBodies);
}
final request = ConstructSummaryRequest(
constructs: constructUseOfCurrentLevel,
constructUseMessageContentBodies: constructUseMessageContentBodies,
language: _l1!.langCodeShort,
messages: messages,
userL1: _l1!.langCodeShort,
userL2: _l2!.langCodeShort,
upperLevel: upperLevel,
lowerLevel: lowerLevel,
);

@ -66,15 +66,17 @@ class ConstructSummary {
class ConstructSummaryRequest {
final List<OneConstructUse> constructs;
final List<String?>? constructUseMessageContentBodies;
final String language;
final List<Map<String, dynamic>> messages;
final String userL1;
final String userL2;
final int upperLevel;
final int lowerLevel;
ConstructSummaryRequest({
required this.constructs,
this.constructUseMessageContentBodies,
required this.language,
required this.messages,
required this.userL1,
required this.userL2,
required this.upperLevel,
required this.lowerLevel,
});
@ -82,25 +84,14 @@ class ConstructSummaryRequest {
Map<String, dynamic> toJson() {
return {
'constructs': constructs.map((construct) => construct.toJson()).toList(),
'construct_use_message_content_bodies': constructUseMessageContentBodies,
'language': language,
'msgs': messages,
'user_l1': userL1,
'user_l2': userL2,
'language': userL1,
'upper_level': upperLevel,
'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 {

Loading…
Cancel
Save