chore: if originalSent doesn't have tokens, don't include it in representations list because related token events cannot be sent to it

pull/2245/head
ggurdin 5 months ago
parent c97bc7c407
commit f3281d87d2
No known key found for this signature in database
GPG Key ID: A01CB41737CBB478

@ -396,7 +396,15 @@ class PangeaMessageEvent {
),
);
}
_representations!.add(sent);
// If originalSent has no tokens, there is not way to generate a tokens event
// and send it as a related event, since original sent has not eventID to set
// as parentEventId. In this case, it's better to generate a new representation
// with an eventID and send the related tokens event to that representation.
// This is a rare situation, and has only been seen with some bot messages.
if (sent.tokens != null) {
_representations!.add(sent);
}
} catch (err, s) {
ErrorHandler.logError(
m: "error parsing originalSent",

@ -18,8 +18,6 @@ import 'package:fluffychat/pangea/events/event_wrappers/pangea_message_event.dar
import 'package:fluffychat/pangea/events/event_wrappers/pangea_representation_event.dart';
import 'package:fluffychat/pangea/events/models/pangea_token_model.dart';
import 'package:fluffychat/pangea/events/models/pangea_token_text_model.dart';
import 'package:fluffychat/pangea/events/models/tokens_event_content_model.dart';
import 'package:fluffychat/pangea/extensions/pangea_room_extension.dart';
import 'package:fluffychat/pangea/lemmas/lemma_info_response.dart';
import 'package:fluffychat/pangea/practice_activities/activity_type_enum.dart';
import 'package:fluffychat/pangea/practice_activities/practice_activity_model.dart';
@ -135,7 +133,11 @@ class MessageOverlayController extends State<MessageSelectionOverlay>
RepresentationEvent? repEvent =
pangeaMessageEvent?.messageDisplayRepresentation;
repEvent ??= await _fetchNewRepEvent();
if (repEvent == null ||
(repEvent.event == null && repEvent.tokens == null)) {
repEvent = await _fetchNewRepEvent();
}
if (repEvent?.event != null) {
await repEvent!.sendTokensEvent(
@ -145,24 +147,6 @@ class MessageOverlayController extends State<MessageSelectionOverlay>
MatrixState.pangeaController.languageController.userL2!.langCode,
);
}
// If repEvent is originalSent but it's missing tokens, then fetch tokens.
// An edge case, but has happened with some bot message.
else if (repEvent != null &&
repEvent.tokens == null &&
repEvent.content.originalSent) {
final tokens = await repEvent.tokensGlobal(
pangeaMessageEvent!.senderId,
pangeaMessageEvent!.event.originServerTs,
);
await pangeaMessageEvent!.room.pangeaSendTextEvent(
pangeaMessageEvent!.messageDisplayText,
editEventId: pangeaMessageEvent!.eventId,
originalSent: pangeaMessageEvent!.originalSent?.content,
originalWritten: pangeaMessageEvent!.originalWritten?.content,
tokensSent: PangeaMessageTokens(tokens: tokens),
choreo: pangeaMessageEvent!.originalSent?.choreo,
);
}
// Get all the lemma infos
final messageVocabConstructIds = pangeaMessageEvent!

Loading…
Cancel
Save