fix: add exampleMessage to AnalyticsActivityTarget
and remove it from PracticeTarget
This commit is contained in:
parent
a84ded27af
commit
3cf6918394
6 changed files with 25 additions and 14 deletions
|
|
@ -23,7 +23,6 @@ import 'package:fluffychat/pangea/morphs/morph_features_enum.dart';
|
|||
import 'package:fluffychat/pangea/practice_activities/message_activity_request.dart';
|
||||
import 'package:fluffychat/pangea/practice_activities/practice_activity_model.dart';
|
||||
import 'package:fluffychat/pangea/practice_activities/practice_generation_repo.dart';
|
||||
import 'package:fluffychat/pangea/practice_activities/practice_target.dart';
|
||||
import 'package:fluffychat/pangea/text_to_speech/tts_controller.dart';
|
||||
import 'package:fluffychat/pangea/toolbar/message_practice/practice_record_controller.dart';
|
||||
import 'package:fluffychat/widgets/future_loading_dialog.dart';
|
||||
|
|
@ -538,20 +537,19 @@ class AnalyticsPracticeState extends State<AnalyticsPractice>
|
|||
}
|
||||
|
||||
Future<List<InlineSpan>?> getExampleMessage(
|
||||
PracticeTarget target,
|
||||
MessageActivityRequest activityRequest,
|
||||
) async {
|
||||
final target = activityRequest.target;
|
||||
final token = target.tokens.first;
|
||||
final construct = target.targetTokenConstructID(token);
|
||||
|
||||
String? form;
|
||||
if (widget.type == ConstructTypeEnum.morph) {
|
||||
return target.exampleMessage;
|
||||
return activityRequest.morphExampleInfo?.exampleMessage;
|
||||
}
|
||||
|
||||
return ExampleMessageUtil.getExampleMessage(
|
||||
await _analyticsService.getConstructUse(construct),
|
||||
Matrix.of(context).client,
|
||||
form: form,
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,16 +1,28 @@
|
|||
import 'package:flutter/painting.dart';
|
||||
|
||||
import 'package:fluffychat/pangea/analytics_misc/construct_use_type_enum.dart';
|
||||
import 'package:fluffychat/pangea/analytics_misc/constructs_model.dart';
|
||||
import 'package:fluffychat/pangea/analytics_practice/analytics_practice_constants.dart';
|
||||
import 'package:fluffychat/pangea/practice_activities/message_activity_request.dart';
|
||||
import 'package:fluffychat/pangea/practice_activities/practice_target.dart';
|
||||
|
||||
class MorphExampleInfo {
|
||||
final List<InlineSpan> exampleMessage;
|
||||
|
||||
const MorphExampleInfo({
|
||||
required this.exampleMessage,
|
||||
});
|
||||
}
|
||||
|
||||
class AnalyticsActivityTarget {
|
||||
final PracticeTarget target;
|
||||
final GrammarErrorRequestInfo? grammarErrorInfo;
|
||||
final MorphExampleInfo? morphExampleInfo;
|
||||
|
||||
AnalyticsActivityTarget({
|
||||
required this.target,
|
||||
this.grammarErrorInfo,
|
||||
this.morphExampleInfo,
|
||||
});
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
|
|
@ -79,6 +91,7 @@ class AnalyticsPracticeSessionModel {
|
|||
activityQualityFeedback: null,
|
||||
target: target.target,
|
||||
grammarErrorInfo: target.grammarErrorInfo,
|
||||
morphExampleInfo: target.morphExampleInfo,
|
||||
);
|
||||
}).toList();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -73,6 +73,8 @@ class AnalyticsPracticeSessionRepo {
|
|||
tokens: [entry.token],
|
||||
activityType: ActivityTypeEnum.grammarCategory,
|
||||
morphFeature: entry.feature,
|
||||
),
|
||||
morphExampleInfo: MorphExampleInfo(
|
||||
exampleMessage: entry.exampleMessage,
|
||||
),
|
||||
),
|
||||
|
|
@ -371,11 +373,11 @@ class AnalyticsPracticeSessionRepo {
|
|||
class MorphPracticeTarget {
|
||||
final PangeaToken token;
|
||||
final MorphFeaturesEnum feature;
|
||||
final List<InlineSpan>? exampleMessage;
|
||||
final List<InlineSpan> exampleMessage;
|
||||
|
||||
MorphPracticeTarget({
|
||||
required this.token,
|
||||
required this.feature,
|
||||
this.exampleMessage,
|
||||
required this.exampleMessage,
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -213,7 +213,7 @@ class _AnalyticsPracticeCenterContent extends StatelessWidget {
|
|||
children: [
|
||||
_CorrectAnswerHint(controller: controller),
|
||||
_ExampleMessageWidget(
|
||||
controller.getExampleMessage(target!.target),
|
||||
controller.getExampleMessage(target!),
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
ValueListenableBuilder(
|
||||
|
|
@ -232,7 +232,7 @@ class _AnalyticsPracticeCenterContent extends StatelessWidget {
|
|||
height: 100.0,
|
||||
child: Center(
|
||||
child: _ExampleMessageWidget(
|
||||
controller.getExampleMessage(target!.target),
|
||||
controller.getExampleMessage(target!),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
|
|||
import 'package:sentry_flutter/sentry_flutter.dart';
|
||||
|
||||
import 'package:fluffychat/l10n/l10n.dart';
|
||||
import 'package:fluffychat/pangea/analytics_practice/analytics_practice_session_model.dart';
|
||||
import 'package:fluffychat/pangea/choreographer/choreo_record_model.dart';
|
||||
import 'package:fluffychat/pangea/morphs/morph_features_enum.dart';
|
||||
import 'package:fluffychat/pangea/practice_activities/activity_type_enum.dart';
|
||||
|
|
@ -79,6 +80,7 @@ class MessageActivityRequest {
|
|||
final PracticeTarget target;
|
||||
final ActivityQualityFeedback? activityQualityFeedback;
|
||||
final GrammarErrorRequestInfo? grammarErrorInfo;
|
||||
final MorphExampleInfo? morphExampleInfo;
|
||||
|
||||
MessageActivityRequest({
|
||||
required this.userL1,
|
||||
|
|
@ -86,6 +88,7 @@ class MessageActivityRequest {
|
|||
required this.activityQualityFeedback,
|
||||
required this.target,
|
||||
this.grammarErrorInfo,
|
||||
this.morphExampleInfo,
|
||||
}) {
|
||||
if (target.tokens.isEmpty) {
|
||||
throw Exception('Target tokens must not be empty');
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'package:collection/collection.dart';
|
||||
|
||||
|
|
@ -25,14 +24,10 @@ class PracticeTarget {
|
|||
/// this is only defined for morphId activities
|
||||
final MorphFeaturesEnum? morphFeature;
|
||||
|
||||
/// Generated example message for the target, if applicable
|
||||
final List<InlineSpan>? exampleMessage;
|
||||
|
||||
PracticeTarget({
|
||||
required this.tokens,
|
||||
required this.activityType,
|
||||
this.morphFeature,
|
||||
this.exampleMessage,
|
||||
}) {
|
||||
if (ActivityTypeEnum.morphId == activityType && morphFeature == null) {
|
||||
throw Exception("morphFeature must be defined for morphId activities");
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue