forked from Mirrors/gomuks
web/timeline: split body types by state key
This commit is contained in:
parent
5c27592b8c
commit
c228b7f183
1 changed files with 61 additions and 50 deletions
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue