From a857917b5399554b5d764e2422298a5a844c9e90 Mon Sep 17 00:00:00 2001 From: Echo <1711788888@qq.com> Date: Mon, 2 Mar 2026 01:15:22 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E5=BC=95=E5=85=A5mvu=E5=8F=98=E9=87=8F?= =?UTF-8?q?=E5=92=8C=E5=85=A8=E5=B1=80=E6=AD=A3=E5=88=99=E5=88=B0ai?= =?UTF-8?q?=E5=AF=B9=E8=AF=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Echo <1711788888@qq.com> --- web-app/src/pages/CharacterManagePage.tsx | 1 + web-app/src/pages/ChatPage.tsx | 24 +++++++++++++++++++---- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/web-app/src/pages/CharacterManagePage.tsx b/web-app/src/pages/CharacterManagePage.tsx index 9fe8c3d..3762b67 100644 --- a/web-app/src/pages/CharacterManagePage.tsx +++ b/web-app/src/pages/CharacterManagePage.tsx @@ -4,6 +4,7 @@ import Navbar from '../components/Navbar' import {Book, Code2, Download, Edit, FileJson, FileUp, Image as ImageIcon, Plus, Search, Trash2, X} from 'lucide-react' import {type Character, characterApi} from '../api/character' import {type RegexScript, regexScriptApi} from '../api/regex' +import {useAppStore} from '../store' interface WorldBookEntry { keys: string[] diff --git a/web-app/src/pages/ChatPage.tsx b/web-app/src/pages/ChatPage.tsx index 508d69f..26837b0 100644 --- a/web-app/src/pages/ChatPage.tsx +++ b/web-app/src/pages/ChatPage.tsx @@ -7,18 +7,28 @@ import CharacterPanel from '../components/CharacterPanel' import SettingsPanel from '../components/SettingsPanel' import {type Conversation, conversationApi} from '../api/conversation' import {type Character, characterApi} from '../api/character' +import {useAppStore} from '../store' export default function ChatPage() { const [searchParams] = useSearchParams() const navigate = useNavigate() const [activePanel, setActivePanel] = useState<'chat' | 'settings'>('chat') - const [currentConversation, setCurrentConversation] = useState(null) - const [currentCharacter, setCurrentCharacter] = useState(null) - const [loading, setLoading] = useState(true) const [backgroundImage, setBackgroundImage] = useState() - const [showSidebar, setShowSidebar] = useState(true) const [showCharacterPanel, setShowCharacterPanel] = useState(true) + // 使用 MVU store + const { + currentConversation, + currentCharacter, + loading, + sidebarOpen: showSidebar, + setCurrentConversation, + setCurrentCharacter, + setLoading, + setSidebarOpen: setShowSidebar, + setVariable, + } = useAppStore() + // 从URL参数获取角色ID或对话ID const characterId = searchParams.get('character') const conversationId = searchParams.get('conversation') @@ -67,12 +77,18 @@ export default function ChatPage() { // 加载对话关联的角色 const charResp = await characterApi.getCharacterById(convResp.data.characterId) setCurrentCharacter(charResp.data) + + // 更新变量系统 + setVariable('char', charResp.data.name) } // 如果有角色ID,创建新对话 else if (characterId) { const charResp = await characterApi.getCharacterById(Number(characterId)) setCurrentCharacter(charResp.data) + // 更新变量系统 + setVariable('char', charResp.data.name) + // 创建新对话 const convResp = await conversationApi.createConversation({ characterId: Number(characterId),