diff --git a/components/messages.tsx b/components/messages.tsx index bd4a74d..7bade6d 100644 --- a/components/messages.tsx +++ b/components/messages.tsx @@ -126,8 +126,6 @@ function PureMessages({ // 控制等待动画延迟消失(Gemini 图片模型延迟 4 秒,其他模型 6 秒) const [showThinkingWithDelay, setShowThinkingWithDelay] = useState(false); - // 🆕 智能自动模式:收到对话消息后延迟显示生图占位图 - const [showImagePlaceholderDelayed, setShowImagePlaceholderDelayed] = useState(false); useEffect(() => { const lastMessage = messages.length > 0 ? messages[messages.length - 1] : null; @@ -220,33 +218,23 @@ function PureMessages({ // 根据模型类型设置延迟时间 const delayTime = (isQianwenVideoModel || isVideoModel) ? 60000 : (isImageGenModel || isAutoModeWithImage) ? 4000 : 6000; - // 🆕 智能自动模式的占位图逻辑 + // 🆕 智能自动模式的占位图逻辑(简化版) if (isAutoModeWithImage) { if (hasImageContent) { // 图片已生成,延迟后隐藏占位图 - setShowImagePlaceholderDelayed(false); const timer = setTimeout(() => { setShowThinkingWithDelay(false); }, delayTime); return () => clearTimeout(timer); } else if (isGeneratingImage) { - // 收到 GENERATING_IMAGE 标记,延迟6秒后显示生图占位图 - // 立即隐藏思考动画(因为对话文字已经显示了) - setShowThinkingWithDelay(false); - - // 延迟6秒后显示生图占位图 - const timer = setTimeout(() => { - setShowImagePlaceholderDelayed(true); - }, 6000); - return () => clearTimeout(timer); - } else if (status === "submitted" || (status === "streaming" && !hasTextContent)) { - // 正在分析意图,显示普通思考动画 + // 收到 GENERATING_IMAGE 标记(对话消息已发送),继续显示占位图等待图片 + setShowThinkingWithDelay(true); + } else if (status === "streaming" || status === "submitted") { + // 正在处理中(分析意图或流式传输),显示占位图 setShowThinkingWithDelay(true); - setShowImagePlaceholderDelayed(false); } else { - // 其他情况:隐藏所有占位图 + // ready 或其他状态:不显示占位图 setShowThinkingWithDelay(false); - setShowImagePlaceholderDelayed(false); } } else { // 非智能自动模式的原有逻辑 @@ -373,17 +361,6 @@ function PureMessages({ messagesCount: messages.length, }); - // 🆕 检查智能自动模式 - const isAutoMode = selectedModelId === "auto"; - const lastUserMsg = [...messages].reverse().find(m => m.role === "user"); - const userMessageHasImage = lastUserMsg?.parts?.some((p: any) => p.type === "file" || p.type === "image"); - - // 🆕 智能自动模式:使用延迟状态显示生图占位图 - if (isAutoMode && userMessageHasImage && showImagePlaceholderDelayed) { - console.log("[Messages] ✅ 显示智能处理生图占位图 (延迟后)"); - return ; - } - // 显示条件:正常等待动画 或 恢复的待处理状态 const shouldShow = showThinkingWithDelay || hasRestoredPending; @@ -401,12 +378,33 @@ function PureMessages({ const showAlibabaImage = modelType === "alibaba-image" || (!modelType && isAlibabaImageModel); const showVideo = modelType === "volcano-video" || modelType === "qianwen-video" || (!modelType && (isQianwenVideoModel || isVideoModel)); + // 🆕 智能自动模式:检查用户是否发送了图片 + const isAutoMode = selectedModelId === "auto"; + const lastUserMsg = [...messages].reverse().find(m => m.role === "user"); + const userMessageHasImage = lastUserMsg?.parts?.some((p: any) => p.type === "file" || p.type === "image"); + + // 🆕 检查是否收到了 GENERATING_IMAGE 标记(表示对话已发送,开始生图) + const hasGeneratingMarker = messages.some(msg => + msg.role === "assistant" && msg.parts?.some( + (part: any) => part.type === "text" && part.text?.includes("") + ) + ); + if (showVideo) return ; if (showGemini) return ; if (showVolcano) return ; if (showAlibabaImage) return ; - // 🆕 智能自动模式:分析阶段显示思考动画 - if (isAutoMode && userMessageHasImage) return ; + + // 🆕 智能自动模式占位图 + if (isAutoMode && userMessageHasImage) { + // 如果已经收到了 GENERATING_IMAGE 标记,显示生图占位图 + if (hasGeneratingMarker) { + return ; + } + // 否则显示思考动画 + return ; + } + // 其他情况显示通用思考动画 return ; })()}