From c784094a4c09fedc30473ae1d5bd8d3ca83cf78a Mon Sep 17 00:00:00 2001 From: Henry-Hiles Date: Sun, 29 Mar 2026 00:00:39 -0400 Subject: [PATCH] add some more message parses --- lib/controllers/message_controller.dart | 46 +++++++++++-------------- 1 file changed, 21 insertions(+), 25 deletions(-) diff --git a/lib/controllers/message_controller.dart b/lib/controllers/message_controller.dart index d84aabb..5f028a9 100644 --- a/lib/controllers/message_controller.dart +++ b/lib/controllers/message_controller.dart @@ -91,6 +91,14 @@ class MessageController extends AsyncNotifier { ) as TextMessage; + Message toSystemMessage(String content) => Message.system( + metadata: {...metadata, "body": content}, + id: config.event.eventId, + authorId: event.authorId, + deliveredAt: config.event.timestamp, + text: content, + ); + return switch (type) { "m.room.encrypted" => asText.copyWith( text: "Unable to decrypt message.", @@ -132,33 +140,21 @@ class MessageController extends AsyncNotifier { "m.room.member" => content["membership"] == event.unsigned["prev_content"]?["membership"] ? null - : Message.system( - metadata: { - ...metadata, - "body": - "${content["displayname"] ?? event.stateKey} ${switch (content["membership"]) { - "invite" => "was invited to", - "join" => "joined", - "leave" => "left", - "knock" => "asked to join", - "ban" => "was banned from", - _ => "did something relating to", - }} the room.", - }, - id: config.event.eventId, - authorId: event.authorId, - deliveredAt: config.event.timestamp, - text: - "${content["displayname"] ?? event.stateKey} ${switch (content["membership"]) { - "invite" => "was invited to", - "join" => "joined", - "leave" => "left", - "knock" => "asked to join", - "ban" => "was banned from", - _ => "did something relating to", - }} the room.", + : toSystemMessage( + "${content["displayname"] ?? event.stateKey} ${switch (content["membership"]) { + "invite" => "was invited to", + "join" => "joined", + "leave" => event.authorId == event.stateKey ? "was kicked" : "left", + "ban" => "was banned from", + "knock" => "asked to join", + _ => "did something relating to", + }} the room.", ), + "m.room.server_acl" => toSystemMessage( + "${event.authorId} updated the server ban list.", + ), + "m.room.redaction" => config.alwaysReturn ? asText.copyWith(