update pangea message event after editting a message

This commit is contained in:
Gabby Gurdin 2024-03-26 10:07:47 -04:00
parent 924c7fe5b8
commit 8aa05a1016
3 changed files with 32 additions and 3 deletions

View file

@ -535,6 +535,12 @@ class ChatController extends State<ChatPageWithRoom>
});
// #Pangea
final List<String> edittingEvents = [];
void clearEdittingEvent(String eventId) {
edittingEvents.remove(eventId);
setState(() {});
}
// Future<void> send() async {
// Original send function gets the tx id within the matrix lib,
// but for choero, the tx id is generated before the message send.
@ -577,6 +583,7 @@ class ChatController extends State<ChatPageWithRoom>
// editEventId: editEvent?.eventId,
// parseCommands: parseCommands,
// );
final previousEdit = editEvent;
room
.pangeaSendTextEvent(
sendController.text,
@ -592,6 +599,13 @@ class ChatController extends State<ChatPageWithRoom>
)
.then(
(String? msgEventId) {
// #Pangea
setState(() {
if (previousEdit != null) {
edittingEvents.add(previousEdit.eventId);
}
});
// Pangea#
GoogleAnalytics.sendMessage(
room.id,
room.classCode,
@ -1219,7 +1233,7 @@ class ChatController extends State<ChatPageWithRoom>
void clearSelectedEvents() => setState(() {
selectedEvents.clear();
showEmojiPicker = false;
//#Pangea
//#Pangea
choreographer.messageOptions.resetSelectedDisplayLang();
//Pangea#
});

View file

@ -68,10 +68,21 @@ class Message extends StatelessWidget {
super.key,
});
// #Pangea
PangeaMessageEvent? get pangeaMessageEvent =>
controller.getPangeaMessageEvent(event.eventId);
// Pangea#
@override
Widget build(BuildContext context) {
// #Pangea
debugPrint('Message.build()');
WidgetsBinding.instance.addPostFrameCallback((_) {
if (controller.edittingEvents.contains(event.eventId)) {
pangeaMessageEvent?.updateLatestEdit();
controller.clearEdittingEvent(event.eventId);
}
});
// Pangea#
if (!{
EventTypes.Message,
@ -141,8 +152,6 @@ class Message extends StatelessWidget {
}
// #Pangea
final PangeaMessageEvent? pangeaMessageEvent =
controller.getPangeaMessageEvent(event.eventId);
ToolbarDisplayController? toolbarController;
if (event.messageType == MessageTypes.Text ||
event.messageType == MessageTypes.Notice) {

View file

@ -69,6 +69,12 @@ class PangeaMessageEvent {
.firstOrNull ??
_event;
Event updateLatestEdit() {
_latestEditCache = null;
_representations = null;
return _latestEdit;
}
bool showRichText(bool selected, bool highlighted) {
if (!_isValidPangeaMessageEvent) {
return false;