mirror of
https://github.com/tulir/gomuks.git
synced 2025-04-20 10:33:41 -05:00
web/timeline: use profile from prev_content for left users
This commit is contained in:
parent
7ed0f2633c
commit
f9a8d3e042
1 changed files with 13 additions and 4 deletions
|
@ -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,
|
||||||
|
|
Loading…
Add table
Reference in a new issue