From 1cf4cf3ac0ee102bf2f9a31c5c882ea562f5e035 Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 28 May 2026 20:45:47 +0800 Subject: [PATCH] fix: clarify text edit requires actual changes --- .../agents/AgentImageTextEditDialog.tsx | 20 ++++++++++++++++--- components/canvas/nodes/ImageNode.tsx | 20 ++++++++++++++++--- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/components/agents/AgentImageTextEditDialog.tsx b/components/agents/AgentImageTextEditDialog.tsx index 5a3025cd5..12fabe320 100644 --- a/components/agents/AgentImageTextEditDialog.tsx +++ b/components/agents/AgentImageTextEditDialog.tsx @@ -204,6 +204,20 @@ export function AgentImageTextEditDialog({ }); }, []); + const hasTextEditChanges = useMemo( + () => + textEditItems.some((item) => { + const originalText = item.originalText.trim(); + const editedText = item.editedText.trim(); + return ( + originalText.length > 0 && + (editedText.length === 0 || editedText !== originalText) + ); + }) || + deletedTextItems.some((item) => item.originalText.trim().length > 0), + [deletedTextItems, textEditItems] + ); + const handleGenerateSuggestions = useCallback( async (item: AgentImageTextEditItem) => { if (!normalizedImageUrl) { @@ -324,7 +338,7 @@ export function AgentImageTextEditDialog({ const requestItems = [...changedItems, ...removedItems]; if (requestItems.length === 0) { - toast.info("请先修改或删除至少一段文字"); + toast.info("请先把要替换的文字改成新文案,或点击垃圾桶删除该文字"); return; } @@ -548,7 +562,7 @@ export function AgentImageTextEditDialog({ disabled={ isDetectingText || isApplyingTextEdit || - (textEditItems.length === 0 && deletedTextItems.length === 0) + !hasTextEditChanges } onClick={() => void handleApplyTextEdit()} > @@ -557,7 +571,7 @@ export function AgentImageTextEditDialog({ ) : ( )} - 确定生图 + {hasTextEditChanges ? "确定生图" : "先修改文字"} diff --git a/components/canvas/nodes/ImageNode.tsx b/components/canvas/nodes/ImageNode.tsx index 437da9080..cfc33b3a5 100644 --- a/components/canvas/nodes/ImageNode.tsx +++ b/components/canvas/nodes/ImageNode.tsx @@ -4878,6 +4878,20 @@ export function ImageNode({ }); }; + const hasTextEditChanges = useMemo( + () => + textEditItems.some((item) => { + const originalText = item.originalText.trim(); + const editedText = item.editedText.trim(); + return ( + originalText.length > 0 && + (editedText.length === 0 || editedText !== originalText) + ); + }) || + deletedTextItems.some((item) => item.originalText.trim().length > 0), + [deletedTextItems, textEditItems] + ); + const handleApplyTextEdit = useCallback(async () => { if (!data.src) { toast.error("请先上传图片"); @@ -4921,7 +4935,7 @@ export function ImageNode({ const requestItems = [...changedItems, ...removedItems]; if (requestItems.length === 0) { - toast.info("请先修改或删除至少一段文字"); + toast.info("请先把要替换的文字改成新文案,或点击垃圾桶删除该文字"); return; } @@ -9369,7 +9383,7 @@ export function ImageNode({ disabled={ isDetectingText || isApplyingTextEdit || - (textEditItems.length === 0 && deletedTextItems.length === 0) + !hasTextEditChanges } onClick={handleApplyTextEdit} size="sm" @@ -9379,7 +9393,7 @@ export function ImageNode({ ) : ( )} - 确认替换 + {hasTextEditChanges ? "确认替换" : "先修改文字"} ,