diff --git a/web/src/ui/timeline/content/index.ts b/web/src/ui/timeline/content/index.ts index 7bd981b..221c6bd 100644 --- a/web/src/ui/timeline/content/index.ts +++ b/web/src/ui/timeline/content/index.ts @@ -118,5 +118,13 @@ export function getPerMessageProfile(evt: MemDBEvent | null): BeeperPerMessagePr if (evt === null || evt.type !== "m.room.message" && evt.type !== "m.sticker") { return undefined } - return (evt.content as MessageEventContent)["com.beeper.per_message_profile"] + const profile = (evt.content as MessageEventContent)["com.beeper.per_message_profile"] + if (profile?.displayname && typeof profile.displayname !== "string") { + return undefined + } else if (profile?.avatar_url && typeof profile.avatar_url !== "string") { + return undefined + } else if (profile?.id && typeof profile.id !== "string") { + return undefined + } + return profile } diff --git a/web/src/util/validation.ts b/web/src/util/validation.ts index 260f94d..db5933a 100644 --- a/web/src/util/validation.ts +++ b/web/src/util/validation.ts @@ -88,7 +88,7 @@ export function getServerName(userID: UserID): string { } export function getDisplayname(userID: UserID, profile?: UserProfile | null): string { - return profile?.displayname || getLocalpart(userID) + return ensureString(profile?.displayname) || getLocalpart(userID) } export function parseMXC(mxc: unknown): [string, string] | [] {