parent
a1a15af30d
commit
427e06be3e
2 changed files with 399 additions and 194 deletions
|
|
@ -86,7 +86,12 @@ class const EventRenderer(
|
|||
data: (settings) => settings.hideMembershipEvents,
|
||||
));
|
||||
|
||||
if (event.content is MembershipContent && hideMembershipEvents) {
|
||||
// Knocks and their outcomes stay visible, as moderators need to act on them
|
||||
if (hideMembershipEvents &&
|
||||
event.content is MembershipContent &&
|
||||
![event.content, event.previousContent].any(
|
||||
(content) => content is MembershipContent && content.status == .knock,
|
||||
)) {
|
||||
return SizedBox.shrink();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -19,6 +19,11 @@ class const MembershipRenderer(
|
|||
"Make sure to only pass membership events to MembershipRenderer",
|
||||
);
|
||||
|
||||
final previous = switch (event.previousContent) {
|
||||
MembershipContent(:final status) => status,
|
||||
_ => null,
|
||||
};
|
||||
|
||||
return switch (event.content) {
|
||||
MembershipContent content => GenericEventRenderer(
|
||||
Icons.people,
|
||||
|
|
@ -28,7 +33,6 @@ class const MembershipRenderer(
|
|||
alignment: .middle,
|
||||
child: InkWell(
|
||||
onTap: () => context.showUserPopover(
|
||||
content,
|
||||
event.stateKey!,
|
||||
roomId: event.roomId,
|
||||
),
|
||||
|
|
@ -43,9 +47,10 @@ class const MembershipRenderer(
|
|||
TextSpan(
|
||||
text:
|
||||
"${switch (content.status) {
|
||||
.invite => "was invited to",
|
||||
.invite => previous == .knock ? "was accepted into" : "was invited to",
|
||||
.join => "joined",
|
||||
.leave => event.sender == event.stateKey ? "left" : (event.unsigned["prev_content"]?["membership"] == "ban" ? "was unbanned from" : "was kicked from"),
|
||||
.leave when previous == .knock => event.sender == event.stateKey ? "retracted their knock on" : "had their knock denied in",
|
||||
.leave => event.sender == event.stateKey ? "left" : (previous == .ban ? "was unbanned from" : "was kicked from"),
|
||||
.ban => "was banned from",
|
||||
.knock => "asked to join",
|
||||
}} the room${event.sender == event.stateKey ? "" : " by"}",
|
||||
|
|
|
|||
Loading…
Reference in a new issue