diff --git a/lib/pangea/token_info_feedback/token_info_feedback_dialog.dart b/lib/pangea/token_info_feedback/token_info_feedback_dialog.dart index 72df091f2..d6ce1c6e8 100644 --- a/lib/pangea/token_info_feedback/token_info_feedback_dialog.dart +++ b/lib/pangea/token_info_feedback/token_info_feedback_dialog.dart @@ -14,7 +14,6 @@ import 'package:fluffychat/pangea/phonetic_transcription/pt_v2_models.dart'; import 'package:fluffychat/pangea/phonetic_transcription/pt_v2_repo.dart'; import 'package:fluffychat/pangea/token_info_feedback/token_info_feedback_repo.dart'; import 'package:fluffychat/pangea/token_info_feedback/token_info_feedback_request.dart'; -import 'package:fluffychat/pangea/token_info_feedback/token_info_feedback_response.dart'; import 'package:fluffychat/pangea/toolbar/word_card/word_zoom_widget.dart'; import 'package:fluffychat/widgets/future_loading_dialog.dart'; @@ -36,11 +35,12 @@ class TokenInfoFeedbackDialog extends StatelessWidget { data: requestData, ); - final TokenInfoFeedbackResponse response = - await TokenInfoFeedbackRepo.submitFeedback(request); - + final response = await TokenInfoFeedbackRepo.submitFeedback(request); final originalToken = requestData.tokens[requestData.selectedToken]; - final token = response.updatedToken ?? originalToken; + final token = + response.updatedTokens?[requestData.selectedToken] ?? + response.updatedToken ?? + originalToken; // first, update lemma info if changed if (response.updatedLemmaInfo != null) { @@ -55,7 +55,8 @@ class TokenInfoFeedbackDialog extends StatelessWidget { final originalSent = event?.originalSent; // if no other changes, just return the message - final hasTokenUpdate = response.updatedToken != null; + final hasTokenUpdate = + response.updatedTokens != null || response.updatedToken != null; final hasLangUpdate = originalSent != null && response.updatedLanguage != null && @@ -66,8 +67,10 @@ class TokenInfoFeedbackDialog extends StatelessWidget { } // update the tokens to be sent in the message edit - final tokens = List.from(requestData.tokens); - if (hasTokenUpdate) { + List tokens = List.from(requestData.tokens); + if (response.updatedTokens != null) { + tokens = response.updatedTokens!; + } else if (response.updatedToken != null) { tokens[requestData.selectedToken] = response.updatedToken!; } diff --git a/lib/pangea/token_info_feedback/token_info_feedback_response.dart b/lib/pangea/token_info_feedback/token_info_feedback_response.dart index b1b1142cd..5a2024b26 100644 --- a/lib/pangea/token_info_feedback/token_info_feedback_response.dart +++ b/lib/pangea/token_info_feedback/token_info_feedback_response.dart @@ -6,6 +6,7 @@ import 'package:fluffychat/pangea/phonetic_transcription/pt_v2_models.dart'; class TokenInfoFeedbackResponse implements JsonSerializable { final String userFriendlyMessage; final PangeaToken? updatedToken; + final List? updatedTokens; final LemmaInfoResponse? updatedLemmaInfo; final PTResponse? updatedPhonetics; final String? updatedLanguage; @@ -13,6 +14,7 @@ class TokenInfoFeedbackResponse implements JsonSerializable { TokenInfoFeedbackResponse({ required this.userFriendlyMessage, this.updatedToken, + this.updatedTokens, this.updatedLemmaInfo, this.updatedPhonetics, this.updatedLanguage, @@ -24,6 +26,11 @@ class TokenInfoFeedbackResponse implements JsonSerializable { updatedToken: json['updated_token'] != null ? PangeaToken.fromJson(json['updated_token'] as Map) : null, + updatedTokens: json['updated_tokens'] != null + ? (json['updated_tokens'] as List) + .map((e) => PangeaToken.fromJson(e as Map)) + .toList() + : null, updatedLemmaInfo: json['updated_lemma_info'] != null ? LemmaInfoResponse.fromJson( json['updated_lemma_info'] as Map, @@ -43,28 +50,10 @@ class TokenInfoFeedbackResponse implements JsonSerializable { return { 'user_friendly_message': userFriendlyMessage, 'updated_token': updatedToken?.toJson(), + 'updated_tokens': updatedTokens?.map((e) => e.toJson()).toList(), 'updated_lemma_info': updatedLemmaInfo?.toJson(), 'updated_phonetics': updatedPhonetics?.toJson(), 'updated_language': updatedLanguage, }; } - - @override - bool operator ==(Object other) => - identical(this, other) || - other is TokenInfoFeedbackResponse && - runtimeType == other.runtimeType && - userFriendlyMessage == other.userFriendlyMessage && - updatedToken == other.updatedToken && - updatedLemmaInfo == other.updatedLemmaInfo && - updatedPhonetics == other.updatedPhonetics && - updatedLanguage == other.updatedLanguage; - - @override - int get hashCode => - userFriendlyMessage.hashCode ^ - updatedToken.hashCode ^ - updatedLemmaInfo.hashCode ^ - updatedPhonetics.hashCode ^ - updatedLanguage.hashCode; }