import { alert, Dropdown } from "mdui" import { $ } from "mdui/jq" import Client from "../../api/Client.ts" import Data_Message from "../../api/client_data/Message.ts" import DataCaches from "../../api/DataCaches.ts" import Avatar from "../Avatar.tsx" import copyToClipboard from "../copyToClipboard.ts" import useAsyncEffect from "../useAsyncEffect.ts" import React from "react" import useEventListener from "../useEventListener.ts" import isMobileUI from "../isMobileUI.ts" interface Args extends React.HTMLAttributes { userId: string rawData: string renderHTML: string message: Data_Message } export default function Message({ userId, rawData, renderHTML, message, ...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]) const dropDownRef = React.useRef(null) return (
{ // 发送者昵称(左) isAtRight && {nickName} } { // 发送者头像 } { // 发送者昵称(右) !isAtRight && {nickName} }
copyToClipboard($(dropDownRef.current as HTMLElement).find('#msg').text())}>複製文字 copyToClipboard(rawData)}>複製原文 alert({ headline: "消息详情", description: JSON.stringify(message), confirmText: "关闭", onConfirm: () => { }, })}>查看詳情
) }