From e029c38f7df69f9dc19d9d3a825cce6079c1ad3a Mon Sep 17 00:00:00 2001 From: ggurdin <46800240+ggurdin@users.noreply.github.com> Date: Mon, 21 Jul 2025 13:59:51 -0400 Subject: [PATCH] chore: normalize function for getting original written message content (#3514) --- .../get_analytics_controller.dart | 16 ++-------- .../chat_settings/utils/download_chat.dart | 20 ++----------- .../event_wrappers/pangea_message_event.dart | 30 ++++++++----------- 3 files changed, 19 insertions(+), 47 deletions(-) diff --git a/lib/pangea/analytics_misc/get_analytics_controller.dart b/lib/pangea/analytics_misc/get_analytics_controller.dart index 4a5130158..9e1293ffb 100644 --- a/lib/pangea/analytics_misc/get_analytics_controller.dart +++ b/lib/pangea/analytics_misc/get_analytics_controller.dart @@ -520,20 +520,10 @@ class GetAnalyticsController extends BaseController { ownMessage: room.client.userID == event.senderId, ); - final String? originalSent = pangeaMessageEvent.originalSent?.text; - String? originalWritten = originalSent; - if (pangeaMessageEvent.originalWritten != null && - !pangeaMessageEvent.originalWritten!.content.originalSent) { - originalWritten = pangeaMessageEvent.originalWritten!.text; - } else if (pangeaMessageEvent.originalSent?.choreo != null && - pangeaMessageEvent.originalSent!.choreo!.choreoSteps.isNotEmpty) { - final steps = pangeaMessageEvent.originalSent!.choreo!.choreoSteps; - originalWritten = steps.first.text; - } - final Map entry = { - "sent": originalSent, - "written": originalWritten, + "sent": pangeaMessageEvent.originalSent?.text ?? + pangeaMessageEvent.body, + "written": pangeaMessageEvent.originalWrittenContent, }; messages.add(entry); diff --git a/lib/pangea/chat_settings/utils/download_chat.dart b/lib/pangea/chat_settings/utils/download_chat.dart index a482be55a..f79bfdf4a 100644 --- a/lib/pangea/chat_settings/utils/download_chat.dart +++ b/lib/pangea/chat_settings/utils/download_chat.dart @@ -14,7 +14,6 @@ import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/pangea/chat_settings/utils/download_file.dart'; import 'package:fluffychat/pangea/common/utils/error_handler.dart'; import 'package:fluffychat/pangea/events/event_wrappers/pangea_message_event.dart'; -import '../../choreographer/models/choreo_record.dart'; Future downloadChat( Room room, @@ -134,19 +133,6 @@ List getPangeaMessageEvents( return allPangeaMessages; } -String getOriginalText(PangeaMessageEvent message) { - try { - final List? steps = - message.originalSent?.choreo?.choreoSteps; - if (steps != null && steps.isNotEmpty) return steps.first.text; - if (message.originalWritten != null) return message.originalWritten!.text; - if (message.originalSent != null) return message.originalSent!.text; - return message.body; - } catch (err) { - return message.body; - } -} - String getSentText(PangeaMessageEvent message) => message.originalSent?.text ?? message.body; @@ -196,7 +182,7 @@ String getTxtContent( final String timestamp = DateFormat('yyyy-MM-dd hh:mm:ss').format(message.originServerTs); final String sender = message.senderId; - final String originalMsg = getOriginalText(message); + final String originalMsg = message.originalWrittenContent; final String sentMsg = getSentText(message); final bool usageAvailable = usageIsAvailable(message); @@ -245,7 +231,7 @@ String getCSVContent( final String timestamp = DateFormat('yyyy-MM-dd hh:mm:ss').format(message.originServerTs); final String sender = message.senderId; - final String originalMsg = getOriginalText(message); + final String originalMsg = message.originalWrittenContent; final String sentMsg = getSentText(message); final bool usageAvailable = usageIsAvailable(message); @@ -306,7 +292,7 @@ List getExcelContent( for (int i = 0; i < messages.length; i++) { final PangeaMessageEvent message = messages[i]; final String sender = message.senderId; - final String originalMsg = getOriginalText(message); + final String originalMsg = message.originalWrittenContent; final String sentMsg = getSentText(message); final bool usageAvailable = usageIsAvailable(message); diff --git a/lib/pangea/events/event_wrappers/pangea_message_event.dart b/lib/pangea/events/event_wrappers/pangea_message_event.dart index e484bfa67..da0e1a191 100644 --- a/lib/pangea/events/event_wrappers/pangea_message_event.dart +++ b/lib/pangea/events/event_wrappers/pangea_message_event.dart @@ -9,7 +9,6 @@ import 'package:matrix/matrix.dart'; import 'package:sentry_flutter/sentry_flutter.dart'; import 'package:fluffychat/pangea/choreographer/models/choreo_record.dart'; -import 'package:fluffychat/pangea/choreographer/models/pangea_match_model.dart'; import 'package:fluffychat/pangea/choreographer/repo/full_text_translation_repo.dart'; import 'package:fluffychat/pangea/choreographer/repo/language_detection_repo.dart'; import 'package:fluffychat/pangea/common/constants/model_keys.dart'; @@ -586,6 +585,19 @@ class PangeaMessageEvent { RepresentationEvent? get originalWritten => representations .firstWhereOrNull((element) => element.content.originalWritten); + String get originalWrittenContent { + String? written = originalSent?.content.text; + if (originalWritten != null && !originalWritten!.content.originalSent) { + written = originalWritten!.text; + } else if (originalSent?.choreo != null && + originalSent!.choreo!.choreoSteps.isNotEmpty) { + final steps = originalSent!.choreo!.choreoSteps; + written = steps.first.text; + } + + return written ?? body; + } + PangeaRepresentation get defaultRepresentation => PangeaRepresentation( langCode: LanguageKeys.unknownLanguage, text: body, @@ -698,22 +710,6 @@ class PangeaMessageEvent { /// it returns the message body. String get messageDisplayText => messageDisplayRepresentation?.text ?? body; - List? errorSteps(String lemma) { - final RepresentationEvent? repEvent = originalSent ?? originalWritten; - if (repEvent?.choreo == null) return null; - - final List steps = repEvent!.choreo!.choreoSteps - .where( - (choreoStep) => - choreoStep.acceptedOrIgnoredMatch != null && - choreoStep.acceptedOrIgnoredMatch?.match.shortMessage == lemma, - ) - .map((element) => element.acceptedOrIgnoredMatch) - .cast() - .toList(); - return steps; - } - /// Returns a list of all [PracticeActivityEvent] objects /// associated with this message event. List get _practiceActivityEvents {