From 36ad5281249c717a6573b261e87a1ecd659e2074 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Tue, 4 Feb 2025 01:02:50 +0200 Subject: [PATCH] web/timeline: allow opening member event target user in right panel --- web/src/ui/timeline/content/MemberBody.tsx | 44 ++++++++++++++-------- 1 file changed, 29 insertions(+), 15 deletions(-) diff --git a/web/src/ui/timeline/content/MemberBody.tsx b/web/src/ui/timeline/content/MemberBody.tsx index c87d697..c153970 100644 --- a/web/src/ui/timeline/content/MemberBody.tsx +++ b/web/src/ui/timeline/content/MemberBody.tsx @@ -16,28 +16,42 @@ import React, { use } from "react" import { getAvatarThumbnailURL, getAvatarURL } from "@/api/media.ts" import { MemberEventContent, UserID } from "@/api/types" +import MainScreenContext from "../../MainScreenContext.ts" import { LightboxContext } from "../../modal" import EventContentProps from "./props.ts" function useChangeDescription( sender: UserID, target: UserID, content: MemberEventContent, prevContent?: MemberEventContent, ): string | React.ReactElement { - const targetAvatar = - const targetElem = <> - {content.avatar_url && targetAvatar} - {content.displayname ?? target} - - + const makeTargetElem = () => { + return <> + + {content.displayname ?? target} + + + } if (content.membership === prevContent?.membership) { if (sender !== target) { - return <>made no change to {targetElem} + return <>made no change to {makeTargetElem()} } else if (content.displayname !== prevContent.displayname) { if (content.avatar_url !== prevContent.avatar_url) { return <>changed their displayname and avatar @@ -55,7 +69,7 @@ function useChangeDescription( if (!content.avatar_url) { return "removed their avatar" } else if (!prevContent.avatar_url) { - return <>set their avatar to {targetAvatar} + return <>set their avatar to {makeTargetAvatar()} } return <> changed their avatar from to {targetAvatar} + /> to {makeTargetAvatar()} } return "made no change" } else if (content.membership === "join") { return "joined the room" } else if (content.membership === "invite") { - return <>invited {targetElem} + return <>invited {makeTargetElem()} } else if (content.membership === "ban") { - return <>banned {targetElem} + return <>banned {makeTargetElem()} } else if (content.membership === "knock") { return "knocked on the room" } else if (content.membership === "leave") { @@ -86,11 +100,11 @@ function useChangeDescription( return "left the room" } if (prevContent?.membership === "ban") { - return <>unbanned {targetElem} + return <>unbanned {makeTargetElem()} } else if (prevContent?.membership === "invite") { - return <>disinvited {targetElem} + return <>disinvited {makeTargetElem()} } - return <>kicked {targetElem} + return <>kicked {makeTargetElem()} } return "made an unknown membership change" }