fixup! web/timeline: render MSC4144 per-message profiles

Signed-off-by: Sumner Evans <me@sumnerevans.com>
This commit is contained in:
Sumner Evans 2025-01-03 08:49:03 -07:00
parent 02894a939b
commit 4ff73a0172
No known key found for this signature in database
2 changed files with 12 additions and 3 deletions

View file

@ -103,6 +103,15 @@ export const ReplyBody = ({
classNames.push("small") classNames.push("small")
} }
const perMessageSender = getPerMessageProfile(event) const perMessageSender = getPerMessageProfile(event)
let renderMemberEvtContent = memberEvtContent
if (perMessageSender) {
renderMemberEvtContent = {
membership: "join",
displayname: perMessageSender.displayname ?? memberEvtContent?.displayname,
avatar_url: perMessageSender.avatar_url ?? memberEvtContent?.avatar_url,
avatar_file: perMessageSender.avatar_file ?? memberEvtContent?.avatar_file,
}
}
const userColorIndex = getUserColorIndex(perMessageSender?.id ?? event.sender) const userColorIndex = getUserColorIndex(perMessageSender?.id ?? event.sender)
classNames.push(`sender-color-${userColorIndex}`) classNames.push(`sender-color-${userColorIndex}`)
return <blockquote data-reply-to={event.event_id} className={classNames.join(" ")} onClick={onClickReply}> return <blockquote data-reply-to={event.event_id} className={classNames.join(" ")} onClick={onClickReply}>
@ -115,7 +124,7 @@ export const ReplyBody = ({
<img <img
className="small avatar" className="small avatar"
loading="lazy" loading="lazy"
src={getAvatarURL(perMessageSender?.id ?? event.sender, perMessageSender ?? memberEvtContent)} src={getAvatarURL(perMessageSender?.id ?? event.sender, renderMemberEvtContent)}
alt="" alt=""
/> />
</div> </div>
@ -123,7 +132,7 @@ export const ReplyBody = ({
className={`event-sender sender-color-${userColorIndex}`} className={`event-sender sender-color-${userColorIndex}`}
title={perMessageSender ? perMessageSender.id : event.sender} title={perMessageSender ? perMessageSender.id : event.sender}
> >
{getDisplayname(event.sender, perMessageSender ?? memberEvtContent)} {getDisplayname(event.sender, renderMemberEvtContent)}
</span> </span>
{perMessageSender && <div className="per-message-event-sender"> {perMessageSender && <div className="per-message-event-sender">
<span className="via">via</span> <span className="via">via</span>

View file

@ -114,7 +114,6 @@ const TimelineEvent = ({ evt, prevEvt, disableMenu, smallReplies, isFocused }: T
} }
const memberEvt = useRoomMember(client, roomCtx.store, evt.sender) const memberEvt = useRoomMember(client, roomCtx.store, evt.sender)
const memberEvtContent = memberEvt?.content as MemberEventContent | undefined const memberEvtContent = memberEvt?.content as MemberEventContent | undefined
let renderMemberEvtContent = memberEvtContent
const BodyType = getBodyType(evt) const BodyType = getBodyType(evt)
const eventTS = new Date(evt.timestamp) const eventTS = new Date(evt.timestamp)
const editEventTS = evt.last_edit ? new Date(evt.last_edit.timestamp) : null const editEventTS = evt.last_edit ? new Date(evt.last_edit.timestamp) : null
@ -173,6 +172,7 @@ const TimelineEvent = ({ evt, prevEvt, disableMenu, smallReplies, isFocused }: T
} }
const perMessageSender = getPerMessageProfile(evt) const perMessageSender = getPerMessageProfile(evt)
const prevPerMessageSender = getPerMessageProfile(prevEvt) const prevPerMessageSender = getPerMessageProfile(prevEvt)
let renderMemberEvtContent = memberEvtContent
if (perMessageSender) { if (perMessageSender) {
renderMemberEvtContent = { renderMemberEvtContent = {
membership: "join", membership: "join",