1
0
Fork 0
forked from Mirrors/gomuks

web/timeline: split body types by state key

This commit is contained in:
Tulir Asokan 2025-02-23 16:18:31 +02:00
parent 5c27592b8c
commit c228b7f183

View file

@ -38,62 +38,73 @@ export function getBodyType(evt: MemDBEvent, forReply = false): React.FunctionCo
if (evt.relation_type === "m.replace") { if (evt.relation_type === "m.replace") {
return HiddenEvent return HiddenEvent
} }
switch (evt.type) { if (evt.state_key === "") {
case "m.room.message": // State events which must have an empty state key
if (evt.redacted_by) { switch (evt.type) {
return RedactedBody case "m.room.name":
return RoomNameBody
case "m.room.avatar":
return RoomAvatarBody
case "m.room.pinned_events":
return PinnedEventsBody
case "m.room.power_levels":
return PowerLevelBody
} }
switch (evt.content?.msgtype) { } else if (evt.state_key !== undefined) {
case "m.text": // State events which must have a non-empty state key
case "m.notice": switch (evt.type) {
case "m.emote": case "m.room.member":
return TextMessageBody return MemberBody
case "m.image": case "m.room.server_acl":
case "m.video": return ACLBody
case "m.audio": case "m.policy.rule.user":
case "m.file": return PolicyRuleBody
if (forReply) { case "m.policy.rule.room":
return PolicyRuleBody
case "m.policy.rule.server":
return PolicyRuleBody
}
} else {
// Non-state events
switch (evt.type) {
case "m.room.message":
if (evt.redacted_by) {
return RedactedBody
}
switch (evt.content?.msgtype) {
case "m.text":
case "m.notice":
case "m.emote":
return TextMessageBody
case "m.image":
case "m.video":
case "m.audio":
case "m.file":
if (forReply) {
return TextMessageBody
}
return MediaMessageBody
case "m.location":
if (forReply) {
return TextMessageBody
}
return LocationMessageBody
default:
return UnknownMessageBody
}
case "m.sticker":
if (evt.redacted_by) {
return RedactedBody
} else if (forReply) {
return TextMessageBody return TextMessageBody
} }
return MediaMessageBody return MediaMessageBody
case "m.location": case "m.room.encrypted":
if (forReply) { if (evt.redacted_by) {
return TextMessageBody return RedactedBody
} }
return LocationMessageBody return EncryptedBody
default:
return UnknownMessageBody
} }
case "m.sticker":
if (evt.redacted_by) {
return RedactedBody
} else if (forReply) {
return TextMessageBody
}
return MediaMessageBody
case "m.room.encrypted":
if (evt.redacted_by) {
return RedactedBody
}
return EncryptedBody
case "m.room.member":
return MemberBody
case "m.room.name":
return RoomNameBody
case "m.room.avatar":
return RoomAvatarBody
case "m.room.server_acl":
return ACLBody
case "m.policy.rule.user":
return PolicyRuleBody
case "m.policy.rule.room":
return PolicyRuleBody
case "m.policy.rule.server":
return PolicyRuleBody
case "m.room.pinned_events":
return PinnedEventsBody
case "m.room.power_levels":
return PowerLevelBody
} }
return HiddenEvent return HiddenEvent
} }