1
0
Fork 0
forked from Mirrors/gomuks

web/timeline: include sender avatar and timestamp

This commit is contained in:
Tulir Asokan 2024-10-10 22:00:43 +03:00
parent d428a26b0a
commit 26808d557c
2 changed files with 51 additions and 8 deletions

View file

@ -2,6 +2,40 @@ div.timeline-event {
width: 100%; width: 100%;
max-width: 100%; max-width: 100%;
overflow: hidden; overflow: hidden;
display: flex;
gap: .5rem;
margin-top: .25rem;
> div.sender-avatar {
width: 40px;
height: 40px;
padding-top: 2px;
> img {
width: 100%;
height: 100%;
border-radius: 50%;
object-fit: cover;
}
}
> div.sender-and-content {
flex: 1;
> div.event-sender-and-time {
display: flex;
align-items: center;
gap: .5rem;
span.event-sender {
font-weight: bold;
}
span.event-time {
font-size: .8rem;
}
}
}
} }
div.media-container { div.media-container {

View file

@ -20,6 +20,7 @@ import HiddenEvent from "./content/HiddenEvent.tsx"
import MessageBody from "./content/MessageBody.tsx" import MessageBody from "./content/MessageBody.tsx"
import { EventContentProps } from "./content/props.ts" import { EventContentProps } from "./content/props.ts"
import "./TimelineEvent.css" import "./TimelineEvent.css"
import { getMediaURL } from "../../api/media.ts"
export interface TimelineEventProps { export interface TimelineEventProps {
room: RoomStateStore room: RoomStateStore
@ -43,16 +44,24 @@ const TimelineEvent = ({ room, eventRowID }: TimelineEventProps) => {
const memberEvt = room.getStateEvent("m.room.member", evt.sender) const memberEvt = room.getStateEvent("m.room.member", evt.sender)
const memberEvtContent = memberEvt?.content as MemberEventContent | undefined const memberEvtContent = memberEvt?.content as MemberEventContent | undefined
const BodyType = getBodyType(evt) const BodyType = getBodyType(evt)
if (BodyType === HiddenEvent) { // if (BodyType === HiddenEvent) {
return <div className="timeline-event"> // return <div className="timeline-event">
<BodyType room={room} event={evt}/> // <BodyType room={room} event={evt}/>
</div> // </div>
} // }
return <div className="timeline-event"> return <div className="timeline-event">
<div className="event-sender"> <div className="sender-avatar">
{memberEvtContent?.displayname ?? evt.sender} <img src={getMediaURL(memberEvtContent?.avatar_url)} alt="" />
</div>
<div className="sender-and-content">
<div className="event-sender-and-time">
<span className="event-sender">{memberEvtContent?.displayname ?? evt.sender}</span>
<span className="event-time">{new Date(evt.timestamp).toLocaleTimeString()}</span>
</div>
<div className="event-content">
<BodyType room={room} event={evt}/>
</div>
</div> </div>
<BodyType room={room} event={evt}/>
</div> </div>
} }