|
|
|
|
@ -4,10 +4,8 @@ import 'package:fluffychat/pangea/matrix_event_wrappers/pangea_message_event.dar
|
|
|
|
|
import 'package:fluffychat/pangea/models/analytics/construct_list_model.dart';
|
|
|
|
|
import 'package:fluffychat/pangea/models/analytics/constructs_model.dart';
|
|
|
|
|
import 'package:fluffychat/pangea/models/practice_activities.dart/message_activity_request.dart';
|
|
|
|
|
import 'package:fluffychat/pangea/utils/error_handler.dart';
|
|
|
|
|
import 'package:fluffychat/widgets/matrix.dart';
|
|
|
|
|
import 'package:flutter/foundation.dart';
|
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
|
|
|
|
|
/// Seperated out the target tokens from the practice activity card
|
|
|
|
|
/// in order to control the state of the target tokens
|
|
|
|
|
@ -19,20 +17,18 @@ class TargetTokensController {
|
|
|
|
|
/// From the tokens in the message, do a preliminary filtering of which to target
|
|
|
|
|
/// Then get the construct uses for those tokens
|
|
|
|
|
Future<List<TokenWithXP>> targetTokens(
|
|
|
|
|
BuildContext context,
|
|
|
|
|
PangeaMessageEvent pangeaMessageEvent,
|
|
|
|
|
) async {
|
|
|
|
|
if (_targetTokens != null) {
|
|
|
|
|
return _targetTokens!;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_targetTokens = await _initialize(context, pangeaMessageEvent);
|
|
|
|
|
_targetTokens = await _initialize(pangeaMessageEvent);
|
|
|
|
|
|
|
|
|
|
final allConstructs = MatrixState
|
|
|
|
|
.pangeaController.analytics.analyticsStream.value?.constructs;
|
|
|
|
|
await updateTokensWithConstructs(
|
|
|
|
|
MatrixState
|
|
|
|
|
.pangeaController.analytics.analyticsStream.value?.constructs ??
|
|
|
|
|
[],
|
|
|
|
|
context,
|
|
|
|
|
allConstructs ?? [],
|
|
|
|
|
pangeaMessageEvent,
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
@ -40,20 +36,11 @@ class TargetTokensController {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<List<TokenWithXP>> _initialize(
|
|
|
|
|
BuildContext context,
|
|
|
|
|
PangeaMessageEvent pangeaMessageEvent,
|
|
|
|
|
) async {
|
|
|
|
|
if (!context.mounted) {
|
|
|
|
|
ErrorHandler.logError(
|
|
|
|
|
m: 'getTargetTokens called when not mounted',
|
|
|
|
|
s: StackTrace.current,
|
|
|
|
|
);
|
|
|
|
|
return _targetTokens = [];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
final tokens = await pangeaMessageEvent
|
|
|
|
|
.representationByLanguage(pangeaMessageEvent.messageDisplayLangCode)
|
|
|
|
|
?.tokensGlobal(context);
|
|
|
|
|
?.tokensGlobal();
|
|
|
|
|
|
|
|
|
|
if (tokens == null || tokens.isEmpty) {
|
|
|
|
|
debugger(when: kDebugMode);
|
|
|
|
|
@ -66,7 +53,6 @@ class TargetTokensController {
|
|
|
|
|
|
|
|
|
|
Future<void> updateTokensWithConstructs(
|
|
|
|
|
List<OneConstructUse> constructUses,
|
|
|
|
|
context,
|
|
|
|
|
pangeaMessageEvent,
|
|
|
|
|
) async {
|
|
|
|
|
final ConstructListModel constructList = ConstructListModel(
|
|
|
|
|
@ -74,7 +60,7 @@ class TargetTokensController {
|
|
|
|
|
type: null,
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
_targetTokens ??= await _initialize(context, pangeaMessageEvent);
|
|
|
|
|
_targetTokens ??= await _initialize(pangeaMessageEvent);
|
|
|
|
|
|
|
|
|
|
for (final token in _targetTokens!) {
|
|
|
|
|
// we don't need to do this for tokens that don't have saveVocab set to true
|
|
|
|
|
|