diff --git a/src/components/common/messaging/Message.tsx b/src/components/common/messaging/Message.tsx index e17cc8b0..095db5da 100644 --- a/src/components/common/messaging/Message.tsx +++ b/src/components/common/messaging/Message.tsx @@ -81,6 +81,7 @@ const Message = observer( index={index} id={message_id} channel={message.channel!} + parent_mentions={message.mention_ids ?? []} /> ))} { - const view = getRenderer(channel); - if (view.state !== "RENDER") return null; +export const MessageReply = observer( + ({ index, channel, id, parent_mentions }: Props) => { + const view = getRenderer(channel); + if (view.state !== "RENDER") return null; - const [message, setMessage] = useState(undefined); + const [message, setMessage] = useState(undefined); - useLayoutEffect(() => { - const message = channel.client.messages.get(id); - if (message) { - setMessage(message); - } else { - channel.fetchMessage(id).then(setMessage); + useLayoutEffect(() => { + const message = channel.client.messages.get(id); + if (message) { + setMessage(message); + } else { + channel.fetchMessage(id).then(setMessage); + } + }, [id, channel, view.messages]); + + if (!message) { + return ( + + + + + + + ); } - }, [id, channel, view.messages]); - if (!message) { + const history = useHistory(); + return ( - + - - - + {message.author?.relationship === RelationshipStatus.Blocked ? ( + + ) : ( + <> + {message.author_id === SYSTEM_USER_ID ? ( + + ) : ( + <> +
+ +
+
{ + const channel = message.channel!; + if ( + channel.channel_type === + "TextChannel" + ) { + history.push( + `/server/${channel.server_id}/channel/${channel._id}/${message._id}`, + ); + } else { + history.push( + `/channel/${channel._id}/${message._id}`, + ); + } + }}> + {message.attachments && ( + <> + + + {message.attachments.length > + 1 ? ( + + ) : ( + + )} + + + )} + +
+ + )} + + )}
); - } - - const history = useHistory(); - - return ( - - - {message.author?.relationship === RelationshipStatus.Blocked ? ( - - ) : ( - <> - {message.author_id === SYSTEM_USER_ID ? ( - - ) : ( - <> -
- -
-
{ - const channel = message.channel!; - if ( - channel.channel_type === "TextChannel" - ) { - history.push( - `/server/${channel.server_id}/channel/${channel._id}/${message._id}`, - ); - } else { - history.push( - `/channel/${channel._id}/${message._id}`, - ); - } - }}> - {message.attachments && ( - <> - - - {message.attachments.length > 1 ? ( - - ) : ( - - )} - - - )} - -
- - )} - - )} -
- ); -}); + }, +); diff --git a/src/components/common/user/UserShort.tsx b/src/components/common/user/UserShort.tsx index 4f9c15f8..821d7e7a 100644 --- a/src/components/common/user/UserShort.tsx +++ b/src/components/common/user/UserShort.tsx @@ -28,10 +28,12 @@ const BotBadge = styled.div` export const Username = observer( ({ user, + prefixAt, showServerIdentity, ...otherProps }: { user?: User; + prefixAt?: boolean; showServerIdentity?: boolean; } & JSX.HTMLAttributes) => { let username = user?.username; @@ -84,6 +86,7 @@ export const Username = observer( return ( + {prefixAt ? "@" : undefined} {username ?? } ); @@ -93,10 +96,12 @@ export const Username = observer( export default function UserShort({ user, size, + prefixAt, showServerIdentity, }: { user?: User; size?: number; + prefixAt?: boolean; showServerIdentity?: boolean; }) { const { openScreen } = useIntermediate(); @@ -115,6 +120,7 @@ export default function UserShort({ user={user} showServerIdentity={showServerIdentity} onClick={openProfile} + prefixAt={prefixAt} /> );