add some more message parses

This commit is contained in:
Henry Hiles 2026-03-29 00:00:39 -04:00
commit c784094a4c
Signed by: Henry-Hiles
SSH key fingerprint: SHA256:VKQUdS31Q90KvX7EkKMHMBpUspcmItAh86a+v7PGiIs

View file

@ -91,6 +91,14 @@ class MessageController extends AsyncNotifier<Message?> {
) )
as TextMessage; 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) { return switch (type) {
"m.room.encrypted" => asText.copyWith( "m.room.encrypted" => asText.copyWith(
text: "Unable to decrypt message.", text: "Unable to decrypt message.",
@ -132,33 +140,21 @@ class MessageController extends AsyncNotifier<Message?> {
"m.room.member" => "m.room.member" =>
content["membership"] == event.unsigned["prev_content"]?["membership"] content["membership"] == event.unsigned["prev_content"]?["membership"]
? null ? null
: Message.system( : toSystemMessage(
metadata: { "${content["displayname"] ?? event.stateKey} ${switch (content["membership"]) {
...metadata, "invite" => "was invited to",
"body": "join" => "joined",
"${content["displayname"] ?? event.stateKey} ${switch (content["membership"]) { "leave" => event.authorId == event.stateKey ? "was kicked" : "left",
"invite" => "was invited to", "ban" => "was banned from",
"join" => "joined", "knock" => "asked to join",
"leave" => "left", _ => "did something relating to",
"knock" => "asked to join", }} the room.",
"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.",
), ),
"m.room.server_acl" => toSystemMessage(
"${event.authorId} updated the server ban list.",
),
"m.room.redaction" => "m.room.redaction" =>
config.alwaysReturn config.alwaysReturn
? asText.copyWith( ? asText.copyWith(