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' as const, 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;