From fe41800e0528cbae0c60a82628f5378efefe4c00 Mon Sep 17 00:00:00 2001 From: ggurdin Date: Mon, 4 Nov 2024 14:55:40 -0500 Subject: [PATCH] Exclude the word_focus_listening activity from the list of client compatible activities --- .../message_activity_request.dart | 29 +++++++++++++++++-- .../practice_activity_card.dart | 5 ++++ 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/lib/pangea/models/practice_activities.dart/message_activity_request.dart b/lib/pangea/models/practice_activities.dart/message_activity_request.dart index 9101a78ce..edb702cda 100644 --- a/lib/pangea/models/practice_activities.dart/message_activity_request.dart +++ b/lib/pangea/models/practice_activities.dart/message_activity_request.dart @@ -195,6 +195,8 @@ class MessageActivityRequest { final String messageId; + final List clientCompatibleActivities; + MessageActivityRequest({ required this.userL1, required this.userL2, @@ -203,9 +205,28 @@ class MessageActivityRequest { required this.messageId, required this.existingActivities, required this.activityQualityFeedback, - }); + clientCompatibleActivities, + }) : clientCompatibleActivities = + clientCompatibleActivities ?? ActivityTypeEnum.values; factory MessageActivityRequest.fromJson(Map json) { + final clientCompatibleActivitiesEntry = + json['client_version_compatible_activity_types']; + List? clientCompatibleActivities; + if (clientCompatibleActivitiesEntry != null && + clientCompatibleActivitiesEntry is List) { + clientCompatibleActivities = clientCompatibleActivitiesEntry + .map( + (e) => ActivityTypeEnum.values.firstWhereOrNull( + (element) => + element.string == e as String || + element.string.split('.').last == e, + ), + ) + .where((entry) => entry != null) + .cast() + .toList(); + } return MessageActivityRequest( userL1: json['user_l1'] as String, userL2: json['user_l2'] as String, @@ -224,6 +245,10 @@ class MessageActivityRequest { json['activity_quality_feedback'] as Map, ) : null, + clientCompatibleActivities: clientCompatibleActivities != null && + clientCompatibleActivities.isNotEmpty + ? clientCompatibleActivities + : ActivityTypeEnum.values, ); } @@ -241,7 +266,7 @@ class MessageActivityRequest { // the server will only return activities of these types // this for backwards compatibility with old clients 'client_version_compatible_activity_types': - ActivityTypeEnum.values.map((e) => e.string).toList(), + clientCompatibleActivities.map((e) => e.string).toList(), }; } diff --git a/lib/pangea/widgets/practice_activity/practice_activity_card.dart b/lib/pangea/widgets/practice_activity/practice_activity_card.dart index ee451d1d9..570cb0576 100644 --- a/lib/pangea/widgets/practice_activity/practice_activity_card.dart +++ b/lib/pangea/widgets/practice_activity/practice_activity_card.dart @@ -148,6 +148,11 @@ class PracticeActivityCardState extends State { .map((activity) => activity.activityRequestMetaData) .toList(), activityQualityFeedback: activityFeedback, + clientCompatibleActivities: widget.tts.isLanguageFullySupported + ? ActivityTypeEnum.values + : ActivityTypeEnum.values + .where((type) => type != ActivityTypeEnum.wordFocusListening) + .toList(), ), widget.pangeaMessageEvent, );