diff --git a/src/app/hooks/useMemberEventParser.tsx b/src/app/hooks/useMemberEventParser.tsx
index 6ceca1b1..8a59aaad 100644
--- a/src/app/hooks/useMemberEventParser.tsx
+++ b/src/app/hooks/useMemberEventParser.tsx
@@ -18,6 +18,7 @@ export const useMemberEventParser = (): MemberEventParser => {
const prevContent = mEvent.getPrevContent() as IMemberContent;
const senderId = mEvent.getSender();
const userId = mEvent.getStateKey();
+ const reason = typeof content.reason === 'string' ? content.reason : undefined;
if (!senderId || !userId)
return {
@@ -26,7 +27,10 @@ export const useMemberEventParser = (): MemberEventParser => {
};
const senderName = getMxIdLocalPart(senderId);
- const userName = content.displayname || getMxIdLocalPart(userId);
+ const userName =
+ typeof content.displayname === 'string'
+ ? content.displayname || getMxIdLocalPart(userId)
+ : getMxIdLocalPart(userId);
if (isMembershipChanged(mEvent)) {
if (content.membership === Membership.Invite) {
@@ -39,7 +43,7 @@ export const useMemberEventParser = (): MemberEventParser => {
{' accepted '}
{userName}
{`'s join request `}
- {content.reason}
+ {reason}
>
),
};
@@ -51,7 +55,7 @@ export const useMemberEventParser = (): MemberEventParser => {
<>
{senderName}
{' invited '}
- {userName} {content.reason}
+ {userName} {reason}
>
),
};
@@ -64,7 +68,7 @@ export const useMemberEventParser = (): MemberEventParser => {
<>
{userName}
{' request to join room '}
- {content.reason}
+ {reason}
>
),
};
@@ -91,7 +95,7 @@ export const useMemberEventParser = (): MemberEventParser => {
<>
{userName}
{' rejected the invitation '}
- {content.reason}
+ {reason}
>
) : (
<>
@@ -99,7 +103,7 @@ export const useMemberEventParser = (): MemberEventParser => {
{' rejected '}
{userName}
{`'s join request `}
- {content.reason}
+ {reason}
>
),
};
@@ -113,7 +117,7 @@ export const useMemberEventParser = (): MemberEventParser => {
<>
{userName}
{' revoked joined request '}
- {content.reason}
+ {reason}
>
) : (
<>
@@ -121,7 +125,7 @@ export const useMemberEventParser = (): MemberEventParser => {
{' revoked '}
{userName}
{`'s invite `}
- {content.reason}
+ {reason}
>
),
};
@@ -134,7 +138,7 @@ export const useMemberEventParser = (): MemberEventParser => {
<>
{senderName}
{' unbanned '}
- {userName} {content.reason}
+ {userName} {reason}
>
),
};
@@ -147,13 +151,13 @@ export const useMemberEventParser = (): MemberEventParser => {
<>
{userName}
{' left the room '}
- {content.reason}
+ {reason}
>
) : (
<>
{senderName}
{' kicked '}
- {userName} {content.reason}
+ {userName} {reason}
>
),
};
@@ -166,7 +170,7 @@ export const useMemberEventParser = (): MemberEventParser => {
<>
{senderName}
{' banned '}
- {userName} {content.reason}
+ {userName} {reason}
>
),
};
@@ -174,44 +178,49 @@ export const useMemberEventParser = (): MemberEventParser => {
}
if (content.displayname !== prevContent.displayname) {
- const prevUserName = prevContent.displayname || userId;
+ const prevUserName =
+ typeof prevContent.displayname === 'string'
+ ? prevContent.displayname || getMxIdLocalPart(userId)
+ : getMxIdLocalPart(userId);
return {
icon: Icons.Mention,
- body: content.displayname ? (
- <>
- {prevUserName}
- {' changed display name to '}
- {userName}
- >
- ) : (
- <>
- {prevUserName}
- {' removed their display name '}
- >
- ),
+ body:
+ typeof content.displayname === 'string' ? (
+ <>
+ {prevUserName}
+ {' changed display name to '}
+ {userName}
+ >
+ ) : (
+ <>
+ {prevUserName}
+ {' removed their display name '}
+ >
+ ),
};
}
if (content.avatar_url !== prevContent.avatar_url) {
return {
icon: Icons.User,
- body: content.displayname ? (
- <>
- {userName}
- {' changed their avatar'}
- >
- ) : (
- <>
- {userName}
- {' removed their avatar '}
- >
- ),
+ body:
+ content.avatar_url && typeof content.avatar_url === 'string' ? (
+ <>
+ {userName}
+ {' changed their avatar'}
+ >
+ ) : (
+ <>
+ {userName}
+ {' removed their avatar '}
+ >
+ ),
};
}
return {
icon: Icons.User,
- body: 'Broken membership event',
+ body: 'Membership event with no changes',
};
};