1
0
Fork 0
forked from Mirrors/gomuks

web/timeline: use profile from prev_content for left users

This commit is contained in:
Tulir Asokan 2025-02-23 23:35:53 +02:00
parent 7ed0f2633c
commit f9a8d3e042

View file

@ -17,7 +17,7 @@ import React, { JSX, use, useState } from "react"
import { createPortal } from "react-dom" import { createPortal } from "react-dom"
import { getAvatarThumbnailURL, getMediaURL, getUserColorIndex } from "@/api/media.ts" import { getAvatarThumbnailURL, getMediaURL, getUserColorIndex } from "@/api/media.ts"
import { useRoomMember } from "@/api/statestore" import { useRoomMember } from "@/api/statestore"
import { MemDBEvent, MemberEventContent, UnreadType } from "@/api/types" import { MemDBEvent, UnreadType, UserProfile } from "@/api/types"
import { isMobileDevice } from "@/util/ismobile.ts" import { isMobileDevice } from "@/util/ismobile.ts"
import { getDisplayname, isEventID } from "@/util/validation.ts" import { getDisplayname, isEventID } from "@/util/validation.ts"
import ClientContext from "../ClientContext.ts" import ClientContext from "../ClientContext.ts"
@ -129,8 +129,6 @@ const TimelineEvent = ({
innerBoxClass: "event-edit-history-modal", innerBoxClass: "event-edit-history-modal",
}) })
} }
const memberEvt = useRoomMember(client, roomCtx.store, evt.sender)
const memberEvtContent = memberEvt?.content as MemberEventContent | undefined
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
@ -190,10 +188,21 @@ const TimelineEvent = ({
} }
const perMessageSender = getPerMessageProfile(evt) const perMessageSender = getPerMessageProfile(evt)
const prevPerMessageSender = getPerMessageProfile(prevEvt) const prevPerMessageSender = getPerMessageProfile(prevEvt)
const memberEvt = useRoomMember(client, roomCtx.store, evt.sender)
let memberEvtContent = memberEvt?.content as UserProfile | undefined
if (memberEvt?.redacted_by && !memberEvt?.viewing_redacted) {
memberEvtContent = {}
} else if (
memberEvtContent?.displayname === undefined
&& memberEvtContent?.avatar_url === undefined
&& memberEvt?.content.membership === "leave"
&& memberEvt.unsigned.prev_content
) {
memberEvtContent = memberEvt.unsigned.prev_content as UserProfile | undefined
}
let renderMemberEvtContent = memberEvtContent let renderMemberEvtContent = memberEvtContent
if (perMessageSender) { if (perMessageSender) {
renderMemberEvtContent = { renderMemberEvtContent = {
membership: "join",
displayname: perMessageSender.displayname ?? memberEvtContent?.displayname, displayname: perMessageSender.displayname ?? memberEvtContent?.displayname,
avatar_url: perMessageSender.avatar_url ?? memberEvtContent?.avatar_url, avatar_url: perMessageSender.avatar_url ?? memberEvtContent?.avatar_url,
avatar_file: perMessageSender.avatar_file ?? memberEvtContent?.avatar_file, avatar_file: perMessageSender.avatar_file ?? memberEvtContent?.avatar_file,