chore: normalize function for getting original written message content (#3514)

pull/2245/head
ggurdin 4 months ago committed by GitHub
parent 37341eccc5
commit e029c38f7d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -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<String, String?> entry = {
"sent": originalSent,
"written": originalWritten,
"sent": pangeaMessageEvent.originalSent?.text ??
pangeaMessageEvent.body,
"written": pangeaMessageEvent.originalWrittenContent,
};
messages.add(entry);

@ -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<void> downloadChat(
Room room,
@ -134,19 +133,6 @@ List<PangeaMessageEvent> getPangeaMessageEvents(
return allPangeaMessages;
}
String getOriginalText(PangeaMessageEvent message) {
try {
final List<ChoreoRecordStep>? 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<int> 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);

@ -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<PangeaMatch>? errorSteps(String lemma) {
final RepresentationEvent? repEvent = originalSent ?? originalWritten;
if (repEvent?.choreo == null) return null;
final List<PangeaMatch> steps = repEvent!.choreo!.choreoSteps
.where(
(choreoStep) =>
choreoStep.acceptedOrIgnoredMatch != null &&
choreoStep.acceptedOrIgnoredMatch?.match.shortMessage == lemma,
)
.map((element) => element.acceptedOrIgnoredMatch)
.cast<PangeaMatch>()
.toList();
return steps;
}
/// Returns a list of all [PracticeActivityEvent] objects
/// associated with this message event.
List<PracticeActivityEvent> get _practiceActivityEvents {

Loading…
Cancel
Save