diff --git a/components/scene-fusion-view.tsx b/components/scene-fusion-view.tsx index 66bacbb80..a66498406 100644 --- a/components/scene-fusion-view.tsx +++ b/components/scene-fusion-view.tsx @@ -209,6 +209,14 @@ function toPersistableImageValue(value: unknown) { return isPersistableImageValue(value) ? value.trim() : ""; } +function getProcessItemPreviewUrl(item: ProcessItem) { + return String(item.result || item.originalUrl || item.image || "").trim(); +} + +function getProcessItemSourceUrl(item: ProcessItem) { + return String(item.originalUrl || item.result || item.image || "").trim(); +} + function toPersistableItems(items: ProcessItem[]) { const persistableItems: ProcessItem[] = []; for (const item of items) { @@ -509,7 +517,7 @@ export function SceneFusionView({ () => resultItems.filter( (item) => - item.status === "completed" && (item.originalUrl || item.result) + item.status === "completed" && Boolean(getProcessItemSourceUrl(item)) ), [resultItems] ); @@ -2015,7 +2023,8 @@ export function SceneFusionView({ const downloadAll = async () => { const completed = resultItems.filter( - (item) => item.status === "completed" && (item.originalUrl || item.result) + (item) => + item.status === "completed" && Boolean(getProcessItemSourceUrl(item)) ); if (completed.length === 0) { toast.error("没有可下载的图片"); @@ -2024,7 +2033,7 @@ export function SceneFusionView({ for (let i = 0; i < completed.length; i += 1) { const item = completed[i]!; await downloadImage( - item.originalUrl || item.result!, + getProcessItemSourceUrl(item), `batch-result-${i + 1}.png` ); await new Promise((resolve) => setTimeout(resolve, 400)); @@ -2035,7 +2044,7 @@ export function SceneFusionView({ const handleBatchAddToCanvas = async () => { if (!onBatchAddToCanvas) return; const imageUrls = completedResultItems - .map((item) => item.originalUrl || item.result) + .map((item) => getProcessItemSourceUrl(item)) .filter((url): url is string => Boolean(url)); if (imageUrls.length === 0) { toast.error("没有可添加到画布的图片"); @@ -2103,7 +2112,7 @@ export function SceneFusionView({ pendingImages: selectedCompletedResultItems .map((item, index) => ({ id: item.id, - imageUrl: String(item.originalUrl || item.result || "").trim(), + imageUrl: getProcessItemSourceUrl(item), title: `批量结果 ${index + 1}`, })) .filter((item) => item.imageUrl), @@ -2946,9 +2955,13 @@ export function SceneFusionView({
{resultItems.map((item, index) => ( (() => { - const completedResultUrl = + const resultPreviewUrl = item.status === "completed" - ? item.result || item.originalUrl || "" + ? getProcessItemPreviewUrl(item) + : ""; + const resultSourceUrl = + item.status === "completed" + ? getProcessItemSourceUrl(item) : ""; return (
{ - if (completedResultUrl) { + if (resultSourceUrl) { openResultPreview( - completedResultUrl, + resultSourceUrl, `任务 ${index + 1} 预览` ); } @@ -2996,24 +3009,24 @@ export function SceneFusionView({ onKeyDown={(event) => { if (event.key !== "Enter" && event.key !== " ") return; - if (completedResultUrl) { + if (resultSourceUrl) { event.preventDefault(); openResultPreview( - completedResultUrl, + resultSourceUrl, `任务 ${index + 1} 预览` ); } }} role="button" tabIndex={ - completedResultUrl ? 0 : -1 + resultSourceUrl ? 0 : -1 } > - {completedResultUrl ? ( + {resultPreviewUrl ? ( 处理结果 ) : ( (() => { @@ -3109,7 +3122,7 @@ export function SceneFusionView({ })() )} - {completedResultUrl && ( + {resultSourceUrl && ( <>