fix(canvas): avoid server persistence for download-only renders

This commit is contained in:
2026-04-03 19:39:31 +02:00
parent d320ff47b0
commit 0173d5c604

View File

@@ -747,6 +747,11 @@ export default function RenderNode({ id, data, selected, width, height }: NodePr
}); });
}; };
const applyLocalDataImmediately = (next: PersistedRenderData) => {
localDataRef.current = next;
setLocalData(next);
};
const handleRender = async (mode: "download" | "upload") => { const handleRender = async (mode: "download" | "upload") => {
if (!sourceUrl || !currentPipelineHash) { if (!sourceUrl || !currentPipelineHash) {
logRenderDebug("render-aborted-prerequisites", { logRenderDebug("render-aborted-prerequisites", {
@@ -768,7 +773,11 @@ export default function RenderNode({ id, data, selected, width, height }: NodePr
lastRenderError: "Custom width and height are required.", lastRenderError: "Custom width and height are required.",
lastRenderErrorHash: currentPipelineHash, lastRenderErrorHash: currentPipelineHash,
}; };
await persistImmediately(next); if (mode === "upload") {
await persistImmediately(next);
} else {
applyLocalDataImmediately(next);
}
return; return;
} }
@@ -864,7 +873,7 @@ export default function RenderNode({ id, data, selected, width, height }: NodePr
const shouldUploadAfterRender = mode === "upload"; const shouldUploadAfterRender = mode === "upload";
if (!shouldUploadAfterRender) { if (!shouldUploadAfterRender) {
await persistImmediately(renderNext); applyLocalDataImmediately(renderNext);
return; return;
} }
@@ -959,7 +968,11 @@ export default function RenderNode({ id, data, selected, width, height }: NodePr
lastRenderError: message, lastRenderError: message,
lastRenderErrorHash: currentPipelineHash, lastRenderErrorHash: currentPipelineHash,
}; };
await persistImmediately(next); if (mode === "upload") {
await persistImmediately(next);
} else {
applyLocalDataImmediately(next);
}
} finally { } finally {
if (runId === renderRunIdRef.current) { if (runId === renderRunIdRef.current) {
if (renderAbortControllerRef.current === abortController) { if (renderAbortControllerRef.current === abortController) {