From 77e8eae2edbb0c0a4ddee0714cd71d2c7f067df0 Mon Sep 17 00:00:00 2001 From: ggurdin <46800240+ggurdin@users.noreply.github.com> Date: Mon, 14 Jul 2025 16:51:44 -0400 Subject: [PATCH] chore: don't erase source text before converting it into original written after IT (#3459) --- .../choreographer/controllers/choreographer.dart | 16 ++++++++++++++-- .../choreographer/controllers/it_controller.dart | 1 + .../event_wrappers/pangea_message_event.dart | 3 +-- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/lib/pangea/choreographer/controllers/choreographer.dart b/lib/pangea/choreographer/controllers/choreographer.dart index cadd4c3d0..3d1b7fa3d 100644 --- a/lib/pangea/choreographer/controllers/choreographer.dart +++ b/lib/pangea/choreographer/controllers/choreographer.dart @@ -57,6 +57,8 @@ class Choreographer { StreamSubscription? _languageStream; late AssistanceState _currentAssistanceState; + String? translatedText; + Choreographer(this.pangeaController, this.chatController) { _initialize(); } @@ -144,10 +146,10 @@ class Choreographer { final message = chatController.sendController.text; final fakeEventId = chatController.sendFakeMessage(); final PangeaRepresentation? originalWritten = - choreoRecord.includedIT && itController.sourceText != null + choreoRecord.includedIT && translatedText != null ? PangeaRepresentation( langCode: l1LangCode ?? LanguageKeys.unknownLanguage, - text: itController.sourceText!, + text: translatedText!, originalWritten: true, originalSent: false, ) @@ -200,6 +202,7 @@ class Choreographer { chatController.send( message: message, originalSent: originalSent, + originalWritten: originalWritten, tokensSent: tokensSent, choreo: choreoRecord, tempEventId: fakeEventId, @@ -226,6 +229,7 @@ class Choreographer { itMatch.status = PangeaMatchStatus.accepted; choreoRecord.addRecord(_textController.text, match: itMatch); + translatedText = _textController.text; //PTODO - if totally in L1, save tokens, that's good stuff @@ -264,6 +268,13 @@ class Choreographer { _resetDebounceTimer(); + // we store translated text in the choreographer to save at the original written + // text, but if the user edits the text after the translation, reset it, since the + // sent text may not be an exact translation of the original text + if (_textController.editType == EditType.keyboard) { + translatedText = null; + } + if (editTypeIsKeyboard) { debounceTimer ??= Timer( Duration(milliseconds: msBeforeIGCStart), @@ -565,6 +576,7 @@ class Choreographer { _timesClicked = 0; isFetching = false; choreoRecord = ChoreoRecord.newRecord; + translatedText = null; itController.clear(); igc.dispose(); _resetDebounceTimer(); diff --git a/lib/pangea/choreographer/controllers/it_controller.dart b/lib/pangea/choreographer/controllers/it_controller.dart index 180b37410..c39d4e9db 100644 --- a/lib/pangea/choreographer/controllers/it_controller.dart +++ b/lib/pangea/choreographer/controllers/it_controller.dart @@ -97,6 +97,7 @@ class ITController { debugPrint("_setSourceText with detectedLang ${_itStartData!.langCode}"); // if (_itStartData!.langCode == choreographer.l1LangCode) { sourceText = _itStartData!.text; + choreographer.translatedText = sourceText; return; // } diff --git a/lib/pangea/events/event_wrappers/pangea_message_event.dart b/lib/pangea/events/event_wrappers/pangea_message_event.dart index 9df0b2e0d..122c93e55 100644 --- a/lib/pangea/events/event_wrappers/pangea_message_event.dart +++ b/lib/pangea/events/event_wrappers/pangea_message_event.dart @@ -679,8 +679,7 @@ class PangeaMessageEvent { .pangeaController.permissionsController .isToolEnabled(ToolSetting.immersionMode, room); - final String? originalLangCode = - (originalWritten ?? originalSent)?.langCode; + final String? originalLangCode = originalSent?.langCode; final String? langCode = immersionMode ? l2Code : originalLangCode; return langCode ?? LanguageKeys.unknownLanguage;