This commit is contained in:
liamzi
2024-12-31 14:25:51 +08:00
parent 0ec46f2fbe
commit 73f8033183
5 changed files with 34 additions and 80 deletions

View File

@@ -2,18 +2,24 @@ import { Button, Drawer, Input, Space, message } from 'antd';
import { useChat } from "ai/react";
import { CodeHighlight } from "@mantine/code-highlight";
import { DownloadOutlined } from '@ant-design/icons';
import { useEffect, useRef } from 'react';
import { useRef, useEffect } from 'react';
import { useSessionStorage } from 'react-use';
export default function ChatAIDrawer({ open, onClose, onExport }) {
const STORAGE_KEY = 'chat_history';
const [storedMessages, setStoredMessages] = useSessionStorage(STORAGE_KEY, '[]');
const { messages, input, handleSubmit, handleInputChange, isLoading, setMessages } = useChat({
api: "https://test-ai-quirkyai.vercel.app/api/chat",
initialMessages: JSON.parse(localStorage.getItem(STORAGE_KEY) || '[]'),
initialMessages: JSON.parse(storedMessages),
});
const messagesEndRef = useRef(null);
// 当 messages 改变时,自动更新 session storage
useEffect(() => {
localStorage.setItem(STORAGE_KEY, JSON.stringify(messages));
}, [messages]);
setStoredMessages(JSON.stringify(messages));
}, [messages, setStoredMessages]);
// 新消息时自动滚动到底部
useEffect(() => {
@@ -40,7 +46,7 @@ export default function ChatAIDrawer({ open, onClose, onExport }) {
size="small"
onClick={() => {
setMessages([]);
localStorage.removeItem(STORAGE_KEY);
setStoredMessages('[]');
message.success('历史记录已清空');
}}
>