diff --git a/client/ui/chat/Message.jsx b/client/ui/chat/Message.tsx similarity index 76% rename from client/ui/chat/Message.jsx rename to client/ui/chat/Message.tsx index 2a92fd6..4bb6ed7 100644 --- a/client/ui/chat/Message.jsx +++ b/client/ui/chat/Message.tsx @@ -1,15 +1,25 @@ +import Client from "../../api/Client.ts" +import DataCaches from "../../api/DataCaches.ts" import Avatar from "../Avatar.tsx" +import useAsyncEffect from "../useAsyncEffect.ts" +import React from "react" + +interface Args extends React.HTMLAttributes { + userId: string +} + +export default function Message({ userId, children, ...props }: Args) { + const isAtRight = Client.myUserProfile?.id == userId + + const [ nickName, setNickName ] = React.useState("") + const [ avatarUrl, setAvatarUrl ] = React.useState("") + + useAsyncEffect(async () => { + const user = await DataCaches.getUserProfile(userId) + setNickName(user.nickname) + setAvatarUrl(user?.avatar) + }, [userId]) -/** - * 一条消息 - * @param { Object } param - * @param { "left" | "right" } [param.direction="left"] 消息方向 - * @param { String } [param.avatar] 头像链接 - * @param { String } [param.nickName] 昵称 - * @returns { React.JSX.Element } - */ -export default function Message({ direction = 'left', avatar, nickName, children, ...props } = {}) { - let isAtRight = direction == 'right' return (
{} + +export default function MessageContainer({ children, style, ...props }: Args) { return (