diff --git a/web/src/ui/MainScreen.tsx b/web/src/ui/MainScreen.tsx index 0d715cb..19f7abd 100644 --- a/web/src/ui/MainScreen.tsx +++ b/web/src/ui/MainScreen.tsx @@ -76,6 +76,8 @@ class ContextFields implements MainScreenContextFields { const type = evt.currentTarget.getAttribute("data-target-panel") if (type === "pinned-messages" || type === "members") { this.setRightPanel({ type }) + } else if (type === "user") { + this.setRightPanel({ type, userID: evt.currentTarget.getAttribute("data-target-user")! }) } else { throw new Error(`Invalid right panel type ${type}`) } diff --git a/web/src/ui/timeline/TimelineEvent.tsx b/web/src/ui/timeline/TimelineEvent.tsx index 6db5cd7..73bc985 100644 --- a/web/src/ui/timeline/TimelineEvent.tsx +++ b/web/src/ui/timeline/TimelineEvent.tsx @@ -19,7 +19,7 @@ import { useRoomState } from "@/api/statestore" import { MemDBEvent, MemberEventContent, UnreadType } from "@/api/types" import { isEventID } from "@/util/validation.ts" import ClientContext from "../ClientContext.ts" -import { LightboxContext } from "../modal/Lightbox.tsx" +import MainScreenContext from "../MainScreenContext.ts" import { useRoomContext } from "../roomview/roomcontext.ts" import { ReplyIDBody } from "./ReplyBody.tsx" import { ContentErrorBoundary, HiddenEvent, getBodyType, isSmallEvent } from "./content" @@ -71,6 +71,7 @@ const EventSendStatus = ({ evt }: { evt: MemDBEvent }) => { const TimelineEvent = ({ evt, prevEvt, disableMenu }: TimelineEventProps) => { const roomCtx = useRoomContext() const client = use(ClientContext)! + const mainScreen = use(MainScreenContext) const [forceContextMenuOpen, setForceContextMenuOpen] = useState(false) const memberEvt = useRoomState(roomCtx.store, "m.room.member", evt.sender) const memberEvtContent = memberEvt?.content as MemberEventContent | undefined @@ -104,12 +105,17 @@ const TimelineEvent = ({ evt, prevEvt, disableMenu }: TimelineEventProps) => { {!disableMenu &&