import { Button, Dropdown, message, Space, Tooltip, Typography } from "antd"; import type { Message } from "./AiChat"; import { CopyOutlined, ReloadOutlined, LeftOutlined, RightOutlined, } from "@ant-design/icons"; import type { IAiModel } from "../../api/ai"; import { useEffect, useState } from "react"; import type { MenuProps } from "antd/es/menu"; import Marked from "../general/Marked"; import MsgContainer from "./MsgContainer"; const { Text } = Typography; interface IWidget { msg?: Message; models?: IAiModel[]; onRefresh?: (modelId: string) => void; } const MsgAssistant = ({ msg, models, onRefresh }: IWidget) => { const [currentVersion, setCurrentVersion] = useState(0); useEffect(() => { if (msg) { setCurrentVersion(msg?.versions.length - 1); } }, [msg]); const switchMessageVersion = (direction: "prev" | "next"): void => { if (msg && msg.versions) { const maxIndex = msg.versions.length - 1; let newIndex = currentVersion; if (direction === "prev" && currentVersion > 0) { newIndex = currentVersion - 1; } else if (direction === "next" && currentVersion < maxIndex) { newIndex = currentVersion + 1; } setCurrentVersion(newIndex); } }; const refreshMenu: MenuProps = { onClick: ({ key }) => { if (key === "refresh" && msg) { onRefresh && onRefresh(msg.versions[currentVersion].model); } }, items: [ { key: "refresh", label: "重新生成", }, { type: "divider", }, { key: "model-submenu", label: "选择模型重新生成", children: models?.map((model, _id) => ({ key: model.uid, label: model.name, onClick: () => { onRefresh && onRefresh(model.uid); }, })), }, ], }; return (
{msg?.versions[currentVersion].model ? models?.find((m) => m.uid === msg.versions[currentVersion].model) ?.name : "AI助手"}
{msg?.versions && msg.versions.length > 1 && (
)}
); }; export default MsgAssistant;