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 ? "确认替换" : "先修改文字"}
,