From 07a039001d5506c69a87ff2e925320b9732b4762 Mon Sep 17 00:00:00 2001 From: kurihada Date: Sun, 14 Dec 2025 22:35:02 +0800 Subject: [PATCH] =?UTF-8?q?feat(ui):=20=E6=B7=BB=E5=8A=A0=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E9=94=99=E8=AF=AF=20toast=20=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 当 Provider API Key 未配置时,显示 toast 提示并提供 "去配置"按钮,点击可直接打开 Providers 配置面板 --- packages/desktop/src/pages/Chat.tsx | 12 ++++++++++++ packages/web/src/pages/Chat.tsx | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/packages/desktop/src/pages/Chat.tsx b/packages/desktop/src/pages/Chat.tsx index b3120b3..8ab5bb1 100644 --- a/packages/desktop/src/pages/Chat.tsx +++ b/packages/desktop/src/pages/Chat.tsx @@ -5,6 +5,7 @@ import { useEffect, useRef } from 'react'; import { WifiOff, MessageSquare, Settings, FolderOpen, Terminal, Plug, Zap, Bot, History, Server } from 'lucide-react'; import { motion, AnimatePresence } from 'framer-motion'; +import { toast } from 'sonner'; import { useChat, ChatMessage, @@ -54,6 +55,17 @@ export function ChatPage({ console.error('Chat error:', error); }, onSessionUpdated, + onConfigError: (error) => { + toast.error(error.message, { + duration: 10000, + action: onOpenProviders + ? { + label: '去配置', + onClick: onOpenProviders, + } + : undefined, + }); + }, }); const messagesEndRef = useRef(null); diff --git a/packages/web/src/pages/Chat.tsx b/packages/web/src/pages/Chat.tsx index 3ca067c..b6df453 100644 --- a/packages/web/src/pages/Chat.tsx +++ b/packages/web/src/pages/Chat.tsx @@ -5,6 +5,7 @@ import { useEffect, useRef } from 'react'; import { WifiOff, MessageSquare, Settings, FolderOpen, Terminal, Plug, Zap, Bot, History, Server } from 'lucide-react'; import { motion, AnimatePresence } from 'framer-motion'; +import { toast } from 'sonner'; import { useChat, ChatMessage, @@ -64,6 +65,17 @@ export function ChatPage({ }, onSessionNotFound, onSessionUpdated, + onConfigError: (error) => { + toast.error(error.message, { + duration: 10000, + action: onOpenProviders + ? { + label: '去配置', + onClick: onOpenProviders, + } + : undefined, + }); + }, }); const messagesEndRef = useRef(null);