From 278418ff7d39a24ca74ff751071af7a8b987fbc0 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 4 Mar 2026 00:33:26 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=94=BB=E5=B8=83=E6=AC=A2=E8=BF=8E?= =?UTF-8?q?=E8=AF=AD=E5=B1=95=E7=A4=BA=E7=94=A8=E6=88=B7=E5=90=8D=E4=B8=8E?= =?UTF-8?q?=E7=B4=AF=E8=AE=A1=E7=94=9F=E5=9B=BE=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/canvas/CanvasChatPanel.tsx | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/components/canvas/CanvasChatPanel.tsx b/components/canvas/CanvasChatPanel.tsx index a9a9faeb2..de6404abd 100644 --- a/components/canvas/CanvasChatPanel.tsx +++ b/components/canvas/CanvasChatPanel.tsx @@ -3,6 +3,7 @@ import { useChat } from "@ai-sdk/react"; import { DefaultChatTransport } from "ai"; import { useEffect, useRef, useState, useCallback, useMemo } from "react"; +import { useSession } from "next-auth/react"; import { createPortal } from "react-dom"; import useSWR, { useSWRConfig } from "swr"; import { Send, Loader2, ImagePlus, Paperclip, X, Plus, History, LayoutGrid, Maximize2, RefreshCw, Globe, Box, ArrowUp, Video, Sparkles, Check, ChevronDown, ChevronUp, AlertCircle, CheckCircle2, Brain, ThumbsUp, ThumbsDown, Eye, Trash2, Download, MessageCircle } from "lucide-react"; @@ -1383,6 +1384,7 @@ function buildDetailReviewAppendMarkdown(params: { } export function CanvasChatPanel({ chatId, initialMessages = [], onClose, onOpenFileList }: CanvasChatPanelProps) { + const { data: session } = useSession(); const [input, setInput] = useState(""); const [attachments, setAttachments] = useState([]); const [selectedModelId, setSelectedModelId] = useState(""); @@ -2251,12 +2253,29 @@ export function CanvasChatPanel({ chatId, initialMessages = [], onClose, onOpenF }; summary?: { currentCredits?: number; + totalImages?: number; }; } | null>("/api/user/membership-summary", async (url: string) => { const response = await fetch(url, { cache: "no-store" }); if (!response.ok) return null; return response.json(); }); + const greetingUserName = useMemo(() => { + const userName = String(session?.user?.name || "").trim(); + if (userName) return userName; + const email = String(session?.user?.email || "").trim(); + if (email.includes("@")) { + return email.split("@")[0]; + } + return ""; + }, [session?.user?.email, session?.user?.name]); + const greetingTitle = greetingUserName + ? `Hi, ${greetingUserName},我是你的AI设计师` + : "Hi, 我是你的AI设计师"; + const totalGeneratedImages = Number(membershipSummary?.summary?.totalImages ?? NaN); + const subtitleSuffix = Number.isFinite(totalGeneratedImages) + ? ` 累计为你生成了 ${totalGeneratedImages.toLocaleString()} 张图。` + : ""; const aiDetailGenerationEnabled = siteSettings?.aiDetailGenerationEnabled === true; const VIDEO_PROVIDER_TYPES = new Set(["volcano-video", "doubao-video", "qianwen-video", "fal-video"]); @@ -6247,8 +6266,10 @@ export function CanvasChatPanel({ chatId, initialMessages = [], onClose, onOpenF
{/* Greeting */}
-

Hi, 我是你的AI设计师

-

让我们开始今天的创作吧!

+

{greetingTitle}

+

+ 让我们开始今天的创作吧!{subtitleSuffix} +

{/* Suggestions - Removed */}