Skip to content

Commit bf134f0

Browse files
committed
feat(multiverse): Render membership changes
1 parent bc50cae commit bf134f0

File tree

1 file changed

+43
-3
lines changed

1 file changed

+43
-3
lines changed

labs/multiverse/src/widgets/room_view/timeline.rs

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ use std::sync::Arc;
33
use imbl::Vector;
44
use matrix_sdk::ruma::events::room::message::MessageType;
55
use matrix_sdk_ui::timeline::{
6-
MsgLikeContent, MsgLikeKind, TimelineItem, TimelineItemContent, TimelineItemKind,
7-
VirtualTimelineItem,
6+
MembershipChange, MsgLikeContent, MsgLikeKind, TimelineItem, TimelineItemContent,
7+
TimelineItemKind, VirtualTimelineItem,
88
};
99
use ratatui::{prelude::*, widgets::*};
1010

@@ -52,11 +52,51 @@ impl Widget for &mut TimelineView<'_> {
5252
..
5353
}) => content.push(format!("{}: (UTD)", sender)),
5454

55+
TimelineItemContent::MembershipChange(m) => {
56+
if let Some(change) = m.change() {
57+
let display_name =
58+
m.display_name().unwrap_or_else(|| m.user_id().to_string());
59+
60+
let change = match change {
61+
MembershipChange::Joined => "has joined the room",
62+
MembershipChange::Left => "has left the room",
63+
MembershipChange::Banned => "has been banned",
64+
MembershipChange::Unbanned => "has been unbanned",
65+
MembershipChange::Kicked => "has been removed from the room",
66+
MembershipChange::Invited => "has been invited to the room",
67+
MembershipChange::KickedAndBanned => {
68+
"has been removed and banned from the room"
69+
}
70+
MembershipChange::InvitationAccepted => {
71+
"has accepted the invitation to the room"
72+
}
73+
MembershipChange::InvitationRejected => {
74+
"has rejected the invitation to the room"
75+
}
76+
MembershipChange::Knocked => "knocked on the room",
77+
MembershipChange::KnockAccepted => {
78+
"has accepted a knock on the room"
79+
}
80+
MembershipChange::KnockRetracted => {
81+
"has retrackted a knock on the room"
82+
}
83+
MembershipChange::KnockDenied => "has denied a knock",
84+
MembershipChange::None
85+
| MembershipChange::Error
86+
| MembershipChange::InvitationRevoked
87+
| MembershipChange::NotImplemented => {
88+
"has changed it's membership status"
89+
}
90+
};
91+
92+
content.push(format!("{display_name} {change}"));
93+
}
94+
}
95+
5596
TimelineItemContent::MsgLike(MsgLikeContent {
5697
kind: MsgLikeKind::Sticker(_),
5798
..
5899
})
59-
| TimelineItemContent::MembershipChange(_)
60100
| TimelineItemContent::ProfileChange(_)
61101
| TimelineItemContent::OtherState(_)
62102
| TimelineItemContent::FailedToParseMessageLike { .. }

0 commit comments

Comments
 (0)