update pangea message event after editting a message
This commit is contained in:
parent
924c7fe5b8
commit
8aa05a1016
3 changed files with 32 additions and 3 deletions
|
|
@ -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#
|
||||
});
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue