diff --git a/lib/pangea/practice_activities/practice_match.dart b/lib/pangea/practice_activities/practice_match.dart index 34df11014..e65efb164 100644 --- a/lib/pangea/practice_activities/practice_match.dart +++ b/lib/pangea/practice_activities/practice_match.dart @@ -32,7 +32,7 @@ class PracticeMatchActivity { final String choiceContent = matchEntry.value.firstWhere( (element) => !usedForms.contains(element), orElse: () => throw Exception( - "No unique form available for construct ${matchEntry.key}", + "No unique form available for construct ${matchEntry.key.form}", ), ); diff --git a/lib/pangea/practice_activities/practice_selection.dart b/lib/pangea/practice_activities/practice_selection.dart index a53180fe2..facd6ea4d 100644 --- a/lib/pangea/practice_activities/practice_selection.dart +++ b/lib/pangea/practice_activities/practice_selection.dart @@ -160,10 +160,24 @@ class PracticeSelection { return []; } + final List activityTokens = []; + tokens.shuffle(); + for (final t in tokens) { + if (activityTokens.length >= _maxQueueLength) { + break; + } + if (!activityTokens.any( + (token) => + token.text.content.toLowerCase() == t.text.content.toLowerCase(), + )) { + activityTokens.add(t); + } + } + return [ PracticeTarget( activityType: activityType, - tokens: tokens.take(_maxQueueLength).shuffled().toList(), + tokens: activityTokens, userL2: _userL2, ), ];