fix: clarify text edit requires actual changes

This commit is contained in:
Your Name 2026-05-28 20:45:47 +08:00
parent edcbddb0fa
commit 1cf4cf3ac0
2 changed files with 34 additions and 6 deletions

View File

@ -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({
) : (
<Type className="mr-2 h-4 w-4" />
)}
确定生图
{hasTextEditChanges ? "确定生图" : "先修改文字"}
</Button>
</div>
</div>

View File

@ -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({
) : (
<Check className="mr-1 h-3.5 w-3.5" />
)}
确认替换
{hasTextEditChanges ? "确认替换" : "先修改文字"}
</Button>
</div>
</div>,