From c674e7e861450176b1a523c4657f7c66bb9f9f7d Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 18 Jan 2026 11:30:10 +0800 Subject: [PATCH] =?UTF-8?q?debug:=20=E6=B7=BB=E5=8A=A0=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E5=A4=84=E7=90=86=E6=8C=89=E9=92=AE=E7=8A=B6=E6=80=81=E8=B0=83?= =?UTF-8?q?=E8=AF=95=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 chat.tsx 中添加状态重置日志 - 在 image-preview.tsx 中添加按钮状态监控 - 帮助定位按钮变灰问题 --- components/chat.tsx | 9 +++++++++ components/image-preview.tsx | 13 ++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/components/chat.tsx b/components/chat.tsx index 5fb54f9f2..b1474a8dc 100644 --- a/components/chat.tsx +++ b/components/chat.tsx @@ -648,11 +648,13 @@ export function Chat({ // 移除加载消息 setMessages((prev) => prev.filter((msg) => msg.id !== messageId)); } finally { + console.log("[变清晰] finally 块执行,重置 isProcessingEnhance"); setIsProcessingEnhance(false); } }; reader.onerror = () => { + console.log("[变清晰] reader.onerror 执行,重置 isProcessingEnhance"); toast.error("图片读取失败"); setMessages((prev) => prev.filter((msg) => msg.id !== messageId)); setIsProcessingEnhance(false); @@ -661,6 +663,7 @@ export function Chat({ reader.readAsDataURL(blob); } catch (error) { console.error("[变清晰] 错误:", error); + console.log("[变清晰] 外层 catch 执行,重置 isProcessingEnhance"); toast.error(error instanceof Error ? error.message : "变清晰失败,请稍后重试"); setMessages((prev) => prev.filter((msg) => msg.id !== messageId)); setIsProcessingEnhance(false); @@ -790,11 +793,13 @@ export function Chat({ // 移除加载消息 setMessages((prev) => prev.filter((msg) => msg.id !== messageId)); } finally { + console.log("[抠图] finally 块执行,重置 isProcessingRmbg"); setIsProcessingRmbg(false); } }; reader.onerror = () => { + console.log("[抠图] reader.onerror 执行,重置 isProcessingRmbg"); toast.error("图片读取失败"); setMessages((prev) => prev.filter((msg) => msg.id !== messageId)); setIsProcessingRmbg(false); @@ -803,6 +808,7 @@ export function Chat({ reader.readAsDataURL(blob); } catch (error) { console.error("[抠图] 错误:", error); + console.log("[抠图] 外层 catch 执行,重置 isProcessingRmbg"); toast.error(error instanceof Error ? error.message : "抠图失败,请稍后重试"); setMessages((prev) => prev.filter((msg) => msg.id !== messageId)); setIsProcessingRmbg(false); @@ -934,11 +940,13 @@ export function Chat({ // 移除加载消息 setMessages((prev) => prev.filter((msg) => msg.id !== messageId)); } finally { + console.log("[图像拓展] finally 块执行,重置 isProcessingExtend"); setIsProcessingExtend(false); } }; reader.onerror = () => { + console.log("[图像拓展] reader.onerror 执行,重置 isProcessingExtend"); toast.error("图片读取失败"); setMessages((prev) => prev.filter((msg) => msg.id !== messageId)); setIsProcessingExtend(false); @@ -947,6 +955,7 @@ export function Chat({ reader.readAsDataURL(blob); } catch (error) { console.error("[图像拓展] 错误:", error); + console.log("[图像拓展] 外层 catch 执行,重置 isProcessingExtend"); toast.error(error instanceof Error ? error.message : "图像拓展失败,请稍后重试"); setMessages((prev) => prev.filter((msg) => msg.id !== messageId)); setIsProcessingExtend(false); diff --git a/components/image-preview.tsx b/components/image-preview.tsx index 05b1f9620..66fd1d395 100644 --- a/components/image-preview.tsx +++ b/components/image-preview.tsx @@ -1,6 +1,6 @@ "use client"; -import React, { useState } from "react"; +import React, { useState, useEffect } from "react"; import { X, Download, Edit, Target, Paintbrush, Sparkles, Scissors, Expand, Maximize2, Move3D } from "lucide-react"; import { toast } from "sonner"; import { ImageAnnotator } from "./image-annotator"; @@ -48,6 +48,17 @@ export function ImagePreview({ const [showResizeEditor, setShowResizeEditor] = useState(false); const [showAngleEditDialog, setShowAngleEditDialog] = useState(false); + // 调试日志:监控按钮状态变化 + useEffect(() => { + console.log("[ImagePreview] 按钮状态更新:", { + isProcessingEnhance, + isProcessingRmbg, + isProcessingExtend, + isProcessingAngleEdit, + src: src?.substring(0, 50) + }); + }, [isProcessingEnhance, isProcessingRmbg, isProcessingExtend, isProcessingAngleEdit, src]); + // 解析 alt 文本,提取原图 URL 和宽度 // 格式优先级: // 1. thumb|||原图URL|||imageSize (最新格式,推荐,不会与 LaTeX/Markdown 冲突)