1
0
Fork 0
forked from Mirrors/gomuks

web/timeline: fix some bugs with reading content

This commit is contained in:
Tulir Asokan 2024-10-22 21:55:27 +03:00
parent e2458c7657
commit eb68f3da7c
3 changed files with 7 additions and 7 deletions

View file

@ -98,10 +98,10 @@ const MessageComposer = ({ room, scrollToBottomRef, setReplyToRef }: MessageComp
event_id: replyToEvt.event_id, event_id: replyToEvt.event_id,
}, },
} }
if (replyToEvt.content["m.relates_to"]?.rel_type === "m.thread" if (replyToEvt.content?.["m.relates_to"]?.rel_type === "m.thread"
&& typeof replyToEvt.content["m.relates_to"]?.event_id === "string") { && typeof replyToEvt.content?.["m.relates_to"]?.event_id === "string") {
relates_to.rel_type = "m.thread" relates_to.rel_type = "m.thread"
relates_to.event_id = replyToEvt.content["m.relates_to"].event_id relates_to.event_id = replyToEvt.content?.["m.relates_to"].event_id
// TODO set this to true if replying to the last event in a thread? // TODO set this to true if replying to the last event in a thread?
relates_to.is_falling_back = false relates_to.is_falling_back = false
} }
@ -259,7 +259,7 @@ const MessageComposer = ({ room, scrollToBottomRef, setReplyToRef }: MessageComp
room={room} room={room}
event={replyToEvt} event={replyToEvt}
onClose={closeReply} onClose={closeReply}
isThread={replyToEvt.content["m.relates_to"]?.rel_type === "m.thread"} isThread={replyToEvt.content?.["m.relates_to"]?.rel_type === "m.thread"}
/>} />}
{loadingMedia && <div className="composer-media"><ScaleLoader/></div>} {loadingMedia && <div className="composer-media"><ScaleLoader/></div>}
{state.media && <ComposerMedia content={state.media} clearMedia={clearMedia}/>} {state.media && <ComposerMedia content={state.media} clearMedia={clearMedia}/>}

View file

@ -92,7 +92,7 @@ const TimelineEvent = ({ room, evt, prevEvt, setReplyToRef }: TimelineEventProps
const fullTime = fullTimeFormatter.format(eventTS) const fullTime = fullTimeFormatter.format(eventTS)
const shortTime = formatShortTime(eventTS) const shortTime = formatShortTime(eventTS)
const editTime = editEventTS ? `Edited at ${fullTimeFormatter.format(editEventTS)}` : null const editTime = editEventTS ? `Edited at ${fullTimeFormatter.format(editEventTS)}` : null
const replyTo = evt.content["m.relates_to"]?.["m.in_reply_to"]?.event_id const replyTo = evt.content?.["m.relates_to"]?.["m.in_reply_to"]?.event_id
const mainEvent = <div data-event-id={evt.event_id} className={wrapperClassNames.join(" ")}> const mainEvent = <div data-event-id={evt.event_id} className={wrapperClassNames.join(" ")}>
<div className="sender-avatar" title={evt.sender}> <div className="sender-avatar" title={evt.sender}>
<img <img
@ -117,7 +117,7 @@ const TimelineEvent = ({ room, evt, prevEvt, setReplyToRef }: TimelineEventProps
{isEventID(replyTo) && BodyType !== HiddenEvent ? <ReplyIDBody {isEventID(replyTo) && BodyType !== HiddenEvent ? <ReplyIDBody
room={room} room={room}
eventID={replyTo} eventID={replyTo}
isThread={evt.content["m.relates_to"]?.rel_type === "m.thread"} isThread={evt.content?.["m.relates_to"]?.rel_type === "m.thread"}
/> : null} /> : null}
<ContentErrorBoundary> <ContentErrorBoundary>
<BodyType room={room} sender={memberEvt} event={evt}/> <BodyType room={room} sender={memberEvt} event={evt}/>

View file

@ -28,7 +28,7 @@ export default function getBodyType(evt: MemDBEvent, forReply = false): React.Fu
if (evt.redacted_by) { if (evt.redacted_by) {
return RedactedBody return RedactedBody
} }
switch (evt.content.msgtype) { switch (evt.content?.msgtype) {
case "m.text": case "m.text":
case "m.notice": case "m.notice":
case "m.emote": case "m.emote":