import { Button } from '@heroui/button'
import { Card, CardBody, CardHeader } from '@heroui/card'
import { Popover, PopoverContent, PopoverTrigger } from '@heroui/popover'
import { Snippet } from '@heroui/snippet'
import { motion } from 'motion/react'
import { IoCode } from 'react-icons/io5'
import OneBotDisplayMeta from '@/components/onebot/display_card/meta'
import { getEventName, isOB11Event } from '@/utils/onebot'
import { timestampToDateString } from '@/utils/time'
import type {
AllOB11WsResponse,
OB11AllEvent,
OB11Request
} from '@/types/onebot'
import OneBotMessage from './message'
import OneBotNotice from './notice'
import OneBotDisplayResponse from './response'
const itemVariants = {
hidden: { opacity: 0, scale: 0.8, y: 50 },
visible: {
opacity: 1,
scale: 1,
y: 0,
transition: { type: 'spring', stiffness: 300, damping: 20 }
}
}
function RequestComponent({ data: _ }: { data: OB11Request }) {
return
Request消息,暂未适配
}
export interface OneBotItemRenderProps {
data: AllOB11WsResponse[]
index: number
style: React.CSSProperties
}
export const getItemSize = (event: OB11AllEvent['post_type']) => {
if (event === 'meta_event') {
return 100
}
if (event === 'message') {
return 180
}
if (event === 'request') {
return 100
}
if (event === 'notice') {
return 100
}
if (event === 'message_sent') {
return 250
}
return 100
}
const renderDetail = (data: AllOB11WsResponse) => {
if (isOB11Event(data)) {
switch (data.post_type) {
case 'meta_event':
return
case 'message':
return
case 'request':
return
case 'notice':
return
case 'message_sent':
return
default:
return 未知类型的消息
}
}
return
}
const OneBotItemRender = ({ data, index, style }: OneBotItemRenderProps) => {
const msg = data[index]
const isEvent = isOB11Event(msg)
return (
{isEvent ? getEventName(msg.post_type) : '请求响应'}
{isEvent && timestampToDateString(msg.time)}
{JSON.stringify(msg, null, 2)
.split('\n')
.map((line, i) => (
{line}
))}
{renderDetail(msg)}
)
}
export default OneBotItemRender