import { Message } from 'lingchair-client-protocol' import * as React from 'react' import ChatMessage from './ChatMessage.tsx' import { dialog } from 'mdui' export default function ChatMessageContainer({ messages }: { messages: Message[] }) { return (
{ (() => { // 添加时间 let date = new Date(0) function timeAddZeroPrefix(t: number) { if (t >= 0 && t < 10) return '0' + t return t + '' } // 合并同用户消息 let user: string | undefined return messages?.map((msg) => { // 添加时间 const lastDate = date date = new Date(msg.getTime()) const shouldShowTime = msg.getUserId() != null && (date.getMinutes() != lastDate.getMinutes() || date.getDate() != lastDate.getDate() || date.getMonth() != lastDate.getMonth() || date.getFullYear() != lastDate.getFullYear()) // 合并同用户消息 const lastUser = user user = msg.getUserId() return <> { shouldShowTime &&
{ (date.getFullYear() != lastDate.getFullYear() ? `${date.getFullYear()}年` : '') + `${date.getMonth() + 1}月` + `${date.getDate()}日` + ` ${timeAddZeroPrefix(date.getHours())}:${timeAddZeroPrefix(date.getMinutes())}` }
} { const user = await msg.getUser().then((re) => re?.bean) || {} dialog({ headline: "Info", body: `${Object.keys(user) // @ts-ignore 懒 .map((k) => `${k} = ${user[k]}`) .join('

')}`, closeOnEsc: true, closeOnOverlayClick: true, actions: [ { text: "关闭", onClick: () => { return true }, } ] }).addEventListener('click', (e) => e.stopPropagation()) }}>JSON ]} messageMenuItems={[ dialog({ headline: "Info", body: `${Object.keys(msg.bean) // @ts-ignore 懒 .map((k) => `${k} = ${msg.bean[k]}`) .join('

')}`, closeOnEsc: true, closeOnOverlayClick: true, actions: [ { text: "关闭", onClick: () => { return true }, } ] }).addEventListener('click', (e) => e.stopPropagation())}>Info
]} /> }) })() }
) }