From 97876e59183827705a3d5ef937aefa2d8d80ad4a Mon Sep 17 00:00:00 2001 From: ggurdin <46800240+ggurdin@users.noreply.github.com> Date: Thu, 22 May 2025 13:02:57 -0400 Subject: [PATCH] Merge prod into main (#2867) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: fully update match info after auto-accepting replacement, add more error handling in construct token span * bump version * fix: don't stop activity language on fail to fetch image URL * fix: don't show copy class code buttons into class code is null * fix: use activity type enum name in key instead of string * chore: fully update match info after auto-accepting replacement, add … (#2866) * chore: fully update match info after auto-accepting replacement, add more error handling in construct token span * bump version * fix: don't stop activity language on fail to fetch image URL * fix: don't show copy class code buttons into class code is null * fix: use activity type enum name in key instead of string --- .../activity_type_enum.dart | 19 ------------------- .../message_activity_request.dart | 2 +- .../practice_activity_model.dart | 2 +- .../practice_activities/practice_target.dart | 17 ++++++++++++++--- pubspec.yaml | 2 +- 5 files changed, 17 insertions(+), 25 deletions(-) diff --git a/lib/pangea/practice_activities/activity_type_enum.dart b/lib/pangea/practice_activities/activity_type_enum.dart index 51e8ae106..2fe80c418 100644 --- a/lib/pangea/practice_activities/activity_type_enum.dart +++ b/lib/pangea/practice_activities/activity_type_enum.dart @@ -15,25 +15,6 @@ enum ActivityTypeEnum { } extension ActivityTypeExtension on ActivityTypeEnum { - String get string { - switch (this) { - case ActivityTypeEnum.wordMeaning: - return 'word_meaning'; - case ActivityTypeEnum.wordFocusListening: - return 'word_focus_listening'; - case ActivityTypeEnum.hiddenWordListening: - return 'hidden_word_listening'; - case ActivityTypeEnum.lemmaId: - return 'lemma_id'; - case ActivityTypeEnum.emoji: - return 'emoji'; - case ActivityTypeEnum.morphId: - return 'morph_id'; - case ActivityTypeEnum.messageMeaning: - return 'message_meaning'; // TODO: Add to L10n - } - } - bool get hiddenType { switch (this) { case ActivityTypeEnum.wordMeaning: diff --git a/lib/pangea/practice_activities/message_activity_request.dart b/lib/pangea/practice_activities/message_activity_request.dart index 78907d196..f3427514e 100644 --- a/lib/pangea/practice_activities/message_activity_request.dart +++ b/lib/pangea/practice_activities/message_activity_request.dart @@ -83,7 +83,7 @@ class MessageActivityRequest { 'message_tokens': messageTokens.map((e) => e.toJson()).toList(), 'activity_quality_feedback': activityQualityFeedback?.toJson(), 'target_tokens': targetTokens.map((e) => e.toJson()).toList(), - 'target_type': targetType.string, + 'target_type': targetType.name, 'target_morph_feature': targetMorphFeature, }; } diff --git a/lib/pangea/practice_activities/practice_activity_model.dart b/lib/pangea/practice_activities/practice_activity_model.dart index 5dee155aa..68a0ce6b0 100644 --- a/lib/pangea/practice_activities/practice_activity_model.dart +++ b/lib/pangea/practice_activities/practice_activity_model.dart @@ -326,7 +326,7 @@ class PracticeActivityModel { Map toJson() { return { 'lang_code': langCode, - 'activity_type': activityType.string, + 'activity_type': activityType.name, 'content': multipleChoiceContent?.toJson(), 'target_tokens': targetTokens.map((e) => e.toJson()).toList(), 'match_content': matchContent?.toJson(), diff --git a/lib/pangea/practice_activities/practice_target.dart b/lib/pangea/practice_activities/practice_target.dart index df034d20b..fbb711f2a 100644 --- a/lib/pangea/practice_activities/practice_target.dart +++ b/lib/pangea/practice_activities/practice_target.dart @@ -2,6 +2,8 @@ import 'dart:developer'; import 'package:flutter/foundation.dart'; +import 'package:collection/collection.dart'; + import 'package:fluffychat/pangea/common/utils/error_handler.dart'; import 'package:fluffychat/pangea/constructs/construct_identifier.dart'; import 'package:fluffychat/pangea/events/models/pangea_token_model.dart'; @@ -60,13 +62,22 @@ class PracticeTarget { userL2.hashCode; static PracticeTarget fromJson(Map json) { + final type = ActivityTypeEnum.values.firstWhereOrNull( + (v) => json['activityType'] == v.name, + ); + if (type == null) { + throw Exception( + "ActivityTypeEnum ${json['activityType']} not found in enum", + ); + } + return PracticeTarget( tokens: (json['tokens'] as List).map((e) => PangeaToken.fromJson(e)).toList(), - activityType: ActivityTypeEnum.values[json['activityType']], + activityType: type, morphFeature: json['morphFeature'] == null ? null - : MorphFeaturesEnum.values[json['morphFeature']], + : MorphFeaturesEnumExtension.fromString(json['morphFeature']), userL2: json['userL2'], ); } @@ -83,7 +94,7 @@ class PracticeTarget { //unique condensed deterministic key for local storage String get storageKey { return tokens.map((e) => e.text.content).join() + - activityType.string + + activityType.name + (morphFeature?.name ?? ""); } diff --git a/pubspec.yaml b/pubspec.yaml index 7ca3398e2..b8b738d3d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -6,7 +6,7 @@ description: Learn a language while texting your friends. # Pangea# publish_to: none # On version bump also increase the build number for F-Droid -version: 4.1.10+1 +version: 4.1.10+2 environment: sdk: ">=3.0.0 <4.0.0"