chore: on token feedback response, replace all tokens when available (#5715)

This commit is contained in:
ggurdin 2026-02-16 15:37:35 -05:00 committed by GitHub
parent 55de949924
commit dea49e3086
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 19 additions and 27 deletions

View file

@ -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<PangeaToken>.from(requestData.tokens);
if (hasTokenUpdate) {
List<PangeaToken> tokens = List<PangeaToken>.from(requestData.tokens);
if (response.updatedTokens != null) {
tokens = response.updatedTokens!;
} else if (response.updatedToken != null) {
tokens[requestData.selectedToken] = response.updatedToken!;
}

View file

@ -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<PangeaToken>? 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<String, dynamic>)
: null,
updatedTokens: json['updated_tokens'] != null
? (json['updated_tokens'] as List<dynamic>)
.map((e) => PangeaToken.fromJson(e as Map<String, dynamic>))
.toList()
: null,
updatedLemmaInfo: json['updated_lemma_info'] != null
? LemmaInfoResponse.fromJson(
json['updated_lemma_info'] as Map<String, dynamic>,
@ -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;
}