diff --git a/lib/pangea/controllers/message_analytics_controller.dart b/lib/pangea/controllers/message_analytics_controller.dart index ca2b2fe3c..99f01eeb3 100644 --- a/lib/pangea/controllers/message_analytics_controller.dart +++ b/lib/pangea/controllers/message_analytics_controller.dart @@ -127,14 +127,30 @@ class MessageAnalyticsEntry { } // limit to 3 activities - return queue.take(3).toList(); + final limited = queue.take(3).toList(); + + debugPrint("activities for ${PangeaToken.reconstructText(_tokens)}"); + for (final activity in limited) { + debugPrint("activity: ${activity.activityType}"); + for (final token in activity.tokens) { + debugPrint("token: ${token.analyticsDebugPrint}"); + } + } + + return limited; } /// Adds a word focus listening activity to the front of the queue /// And limits to 3 activities void addForWordMeaning(PangeaToken selectedToken) { + final int index = _activityQueue.isNotEmpty && + _activityQueue.first.activityType == + ActivityTypeEnum.hiddenWordListening + ? 1 + : 0; + _activityQueue.insert( - 0, + index, TargetTokensAndActivityType( tokens: [selectedToken], activityType: ActivityTypeEnum.wordMeaning, diff --git a/lib/pangea/models/pangea_token_model.dart b/lib/pangea/models/pangea_token_model.dart index 17115694a..2edbd4a8f 100644 --- a/lib/pangea/models/pangea_token_model.dart +++ b/lib/pangea/models/pangea_token_model.dart @@ -140,6 +140,9 @@ class PangeaToken { bool get isContentWord => ["NOUN", "VERB", "ADJ", "ADV"].contains(pos) && lemma.saveVocab; + String get analyticsDebugPrint => + "content: ${text.content} isContentWord: $isContentWord total_xp:$xp vocab_construct_xp: ${vocabConstruct.points} daysSincelastUseInWordMeaning ${daysSinceLastUseByType(ActivityTypeEnum.wordMeaning)}"; + bool get canBeDefined => [ "ADJ", @@ -249,9 +252,11 @@ class PangeaToken { switch (a) { case ActivityTypeEnum.wordMeaning: if (isContentWord) { - return vocabConstruct.points < 15 || daysSinceLastUseByType(a) > 2; + return vocabConstruct.points < 10 || daysSinceLastUseByType(a) > 7; + } else if (canBeDefined) { + return !_didActivity(a) && vocabConstruct.points < 5; } else { - return vocabConstruct.points < 5 || daysSinceLastUseByType(a) > 7; + return false; } case ActivityTypeEnum.wordFocusListening: return !_didActivitySuccessfully(a) || daysSinceLastUseByType(a) > 30; diff --git a/lib/pangea/widgets/chat/message_selection_overlay.dart b/lib/pangea/widgets/chat/message_selection_overlay.dart index a66bcae0d..e50d54094 100644 --- a/lib/pangea/widgets/chat/message_selection_overlay.dart +++ b/lib/pangea/widgets/chat/message_selection_overlay.dart @@ -86,8 +86,7 @@ class MessageOverlayController extends State } debugPrint( - "selected token: ${widget._initialSelectedToken?.text.content} total_xp:${widget._initialSelectedToken?.xp} vocab_construct_xp: ${widget._initialSelectedToken?.vocabConstruct.points} daysSincelastUseInWordMeaning ${widget._initialSelectedToken?.daysSinceLastUseByType(ActivityTypeEnum.wordMeaning)}", - ); + "selected token ${widget._initialSelectedToken?.analyticsDebugPrint}"); debugPrint( "${widget._initialSelectedToken?.vocabConstruct.uses.map((u) => "${u.useType} ${u.timeStamp}").join(", ")}", ); diff --git a/lib/pangea/widgets/practice_activity/practice_activity_card.dart b/lib/pangea/widgets/practice_activity/practice_activity_card.dart index d3e32778b..ca1cd5f4a 100644 --- a/lib/pangea/widgets/practice_activity/practice_activity_card.dart +++ b/lib/pangea/widgets/practice_activity/practice_activity_card.dart @@ -136,7 +136,7 @@ class PracticeActivityCardState extends State { } debugPrint( - "client requesting ${nextActivitySpecs.activityType.string} for: ${nextActivitySpecs.tokens.map((t) => t.text.content).join(' ')}", + "client requesting ${nextActivitySpecs.activityType.string} for: ${nextActivitySpecs.tokens.map((t) => "word: ${t.text.content} xp: ${t.xp}").join(' ')}", ); final PracticeActivityModelResponse? activityResponse =