diff --git a/lib/pangea/activity_sessions/activity_session_chat/activity_stats_menu.dart b/lib/pangea/activity_sessions/activity_session_chat/activity_stats_menu.dart index 3189ad1e8..52890bc1d 100644 --- a/lib/pangea/activity_sessions/activity_session_chat/activity_stats_menu.dart +++ b/lib/pangea/activity_sessions/activity_session_chat/activity_stats_menu.dart @@ -154,6 +154,8 @@ class ActivityStatsMenu extends StatelessWidget { langCode: controller.room.activityPlan!.req.targetLanguage, targetId: "activity-vocab", usedVocab: controller.activityController.usedVocab, + activityLangCode: + controller.room.activityPlan!.req.targetLanguage, ), ), ], diff --git a/lib/pangea/activity_sessions/activity_session_chat/activity_vocab_widget.dart b/lib/pangea/activity_sessions/activity_session_chat/activity_vocab_widget.dart index 4708c1634..bd78b0538 100644 --- a/lib/pangea/activity_sessions/activity_session_chat/activity_vocab_widget.dart +++ b/lib/pangea/activity_sessions/activity_session_chat/activity_vocab_widget.dart @@ -17,6 +17,7 @@ class ActivityVocabWidget extends StatelessWidget { final List vocab; final String langCode; final String targetId; + final String activityLangCode; final ValueNotifier>? usedVocab; const ActivityVocabWidget({ @@ -24,6 +25,7 @@ class ActivityVocabWidget extends StatelessWidget { required this.vocab, required this.langCode, required this.targetId, + required this.activityLangCode, this.usedVocab, }); @@ -35,6 +37,7 @@ class ActivityVocabWidget extends StatelessWidget { targetId: targetId, langCode: langCode, usedVocab: const {}, + activityLangCode: activityLangCode, ); } @@ -45,6 +48,7 @@ class ActivityVocabWidget extends StatelessWidget { targetId: targetId, langCode: langCode, usedVocab: used, + activityLangCode: activityLangCode, ), ); } @@ -54,12 +58,14 @@ class _VocabChips extends StatefulWidget { final List vocab; final String targetId; final String langCode; + final String activityLangCode; final Set usedVocab; const _VocabChips({ required this.vocab, required this.targetId, required this.langCode, + required this.activityLangCode, required this.usedVocab, }); @@ -132,7 +138,11 @@ class _VocabChipsState extends State<_VocabChips> with TokenRenderingMixin { @override Widget build(BuildContext context) { final tokens = widget.vocab.map((v) => v.asToken()).toList(); - final newTokens = TokensUtil.getNewTokens("activity_tokens", tokens); + final newTokens = TokensUtil.getNewTokens( + "activity_tokens", + tokens, + widget.activityLangCode, + ); final renderer = TokenRenderingUtil( existingStyle: TextStyle( color: Theme.of(context).colorScheme.onSurface, diff --git a/lib/pangea/activity_sessions/activity_summary_widget.dart b/lib/pangea/activity_sessions/activity_summary_widget.dart index 82a9dfaa9..df4bb64ed 100644 --- a/lib/pangea/activity_sessions/activity_summary_widget.dart +++ b/lib/pangea/activity_sessions/activity_summary_widget.dart @@ -190,6 +190,7 @@ class ActivitySummary extends StatelessWidget { langCode: activity.req.targetLanguage, targetId: "activity-summary-vocab", usedVocab: usedVocab, + activityLangCode: activity.req.targetLanguage, ), ), ], diff --git a/lib/pangea/toolbar/reading_assistance/stt_transcript_tokens.dart b/lib/pangea/toolbar/reading_assistance/stt_transcript_tokens.dart index ffb3b696d..36be582af 100644 --- a/lib/pangea/toolbar/reading_assistance/stt_transcript_tokens.dart +++ b/lib/pangea/toolbar/reading_assistance/stt_transcript_tokens.dart @@ -42,7 +42,12 @@ class SttTranscriptTokens extends StatelessWidget { existingStyle: (style ?? DefaultTextStyle.of(context).style), ); - final newTokens = TokensUtil.getNewTokens(eventId, tokens); + final newTokens = TokensUtil.getNewTokens( + eventId, + tokens, + model.langCode, + ); + return RichText( textScaler: TextScaler.noScaling, text: TextSpan( diff --git a/lib/pangea/toolbar/reading_assistance/tokens_util.dart b/lib/pangea/toolbar/reading_assistance/tokens_util.dart index cccd860ff..3f69baa4e 100644 --- a/lib/pangea/toolbar/reading_assistance/tokens_util.dart +++ b/lib/pangea/toolbar/reading_assistance/tokens_util.dart @@ -74,7 +74,8 @@ class TokensUtil { static List getNewTokens( String cacheKey, - List tokens, { + List tokens, + String tokensLangCode, { int? maxTokens, }) { if (MatrixState @@ -82,8 +83,19 @@ class TokensUtil { return []; } + final messageInUserL2 = tokensLangCode.split('-').first == + MatrixState.pangeaController.userController.userL2?.langCodeShort; + final cached = _getCachedNewTokens(cacheKey); - if (cached != null) return cached; + if (cached != null) { + if (!messageInUserL2) { + _newTokenCache.remove(cacheKey); + return []; + } + return cached; + } + + if (!messageInUserL2) return []; final List newTokens = []; final analyticsService = @@ -136,15 +148,12 @@ class TokensUtil { return []; } - return getNewTokens(event.eventId, tokens, maxTokens: 3); - } - - static bool isNewToken( - String cacheKey, - PangeaToken token, - ) { - final newTokens = getNewTokens(cacheKey, [token]); - return newTokens.any((t) => t == token.text); + return getNewTokens( + event.eventId, + tokens, + event.messageDisplayLangCode, + maxTokens: 3, + ); } static bool isNewTokenByEvent(PangeaToken token, PangeaMessageEvent event) {