support displaying invite reason for receiver

This commit is contained in:
Ajay Bura 2025-08-23 14:59:34 +05:30
parent 02524ea357
commit f5d14519b4

View file

@ -81,6 +81,7 @@ type InviteData = {
senderId: string; senderId: string;
senderName: string; senderName: string;
inviteTs?: number; inviteTs?: number;
reason?: string;
isSpace: boolean; isSpace: boolean;
isDirect: boolean; isDirect: boolean;
@ -102,11 +103,17 @@ const makeInviteData = (mx: MatrixClient, room: Room, useAuthentication: boolean
const member = room.getMember(userId); const member = room.getMember(userId);
const memberEvent = member?.events.member; const memberEvent = member?.events.member;
const content = memberEvent?.getContent();
const senderId = memberEvent?.getSender(); const senderId = memberEvent?.getSender();
const senderName = senderId const senderName = senderId
? getMemberDisplayName(room, senderId) ?? getMxIdLocalPart(senderId) ?? senderId ? getMemberDisplayName(room, senderId) ?? getMxIdLocalPart(senderId) ?? senderId
: undefined; : undefined;
const inviteTs = memberEvent?.getTs(); const inviteTs = memberEvent?.getTs();
const reason =
content && 'reason' in content && typeof content.reason === 'string'
? content.reason
: undefined;
return { return {
room, room,
@ -119,6 +126,7 @@ const makeInviteData = (mx: MatrixClient, room: Room, useAuthentication: boolean
senderId: senderId ?? 'Unknown', senderId: senderId ?? 'Unknown',
senderName: senderName ?? 'Unknown', senderName: senderName ?? 'Unknown',
inviteTs, inviteTs,
reason,
isSpace: isSpace(room), isSpace: isSpace(room),
isDirect: direct, isDirect: direct,
@ -130,7 +138,8 @@ const hasBadWords = (invite: InviteData): boolean =>
testBadWords(invite.roomName) || testBadWords(invite.roomName) ||
testBadWords(invite.roomTopic ?? '') || testBadWords(invite.roomTopic ?? '') ||
testBadWords(invite.senderName) || testBadWords(invite.senderName) ||
testBadWords(invite.senderId); testBadWords(invite.senderId) ||
testBadWords(invite.reason || '');
type NavigateHandler = (roomId: string, space: boolean) => void; type NavigateHandler = (roomId: string, space: boolean) => void;
@ -299,10 +308,15 @@ function InviteCard({
</Box> </Box>
</Box> </Box>
<Box gap="200" alignItems="Baseline"> <Box gap="200" alignItems="Baseline">
<Box grow="Yes"> <Box grow="Yes" direction="Column">
<Text size="T200" priority="300"> <Text size="T200" priority="300">
From: <b>{invite.senderId}</b> From: <b>{invite.senderId}</b>
</Text> </Text>
{invite.reason && (
<Text size="T200" priority="300">
Reason: <b>{invite.reason}</b>
</Text>
)}
</Box> </Box>
{typeof invite.inviteTs === 'number' && invite.inviteTs !== 0 && ( {typeof invite.inviteTs === 'number' && invite.inviteTs !== 0 && (
<Box shrink="No"> <Box shrink="No">