diff --git a/lib/pangea/practice_activities/activity_type_enum.dart b/lib/pangea/practice_activities/activity_type_enum.dart index 2fe80c418..c58bdd4e2 100644 --- a/lib/pangea/practice_activities/activity_type_enum.dart +++ b/lib/pangea/practice_activities/activity_type_enum.dart @@ -190,4 +190,20 @@ extension ActivityTypeExtension on ActivityTypeEnum { return null; // TODO: Add to L10n } } + + /// The minimum number of tokens in a message for this activity type to be available. + /// Matching activities don't make sense for a single-word message. + int get minTokensForMatchActivity { + switch (this) { + case ActivityTypeEnum.wordMeaning: + case ActivityTypeEnum.lemmaId: + case ActivityTypeEnum.wordFocusListening: + return 2; + case ActivityTypeEnum.hiddenWordListening: + case ActivityTypeEnum.emoji: + case ActivityTypeEnum.morphId: + case ActivityTypeEnum.messageMeaning: + return 1; + } + } } diff --git a/lib/pangea/practice_activities/practice_selection.dart b/lib/pangea/practice_activities/practice_selection.dart index de2aa3709..e7b60be33 100644 --- a/lib/pangea/practice_activities/practice_selection.dart +++ b/lib/pangea/practice_activities/practice_selection.dart @@ -155,6 +155,11 @@ class PracticeSelection { return []; } + if (tokens.length < activityType.minTokensForMatchActivity) { + // if we only have one token, we don't need to do an emoji activity + return []; + } + return [ PracticeTarget( activityType: activityType,