fix: prefer generated image as canvas reference
Some checks failed
Lint / build (20) (push) Has been cancelled
Playwright Tests / test (push) Has been cancelled

This commit is contained in:
Your Name 2026-04-26 14:07:22 +08:00
parent 0e12d4209c
commit 0b3f1e7c15

View File

@ -1209,6 +1209,10 @@ function getNodeSourceMediaUrl(node: CloneNode | null | undefined) {
return getDraftString(node, "sourceUrl") || getNodeMediaUrl(node);
}
function getNodeReferenceMediaUrl(node: CloneNode | null | undefined) {
return getNodeMediaUrl(node) || getDraftString(node, "sourceUrl");
}
function getOfficialImagePresetFunctionKey(value?: unknown) {
const text = String(value || "").trim();
if (!text) return null;
@ -2739,7 +2743,7 @@ export function LiblibVideoCanvasReplica({ canvasId, isLoading = false }: Liblib
async (nodeId: string, action: ImageToolbarAction, option?: string) => {
const anchor = nodes.find((node) => node.id === nodeId);
if (!anchor) return;
const sourceUrl = getNodeSourceMediaUrl(anchor) || CHARACTER_IMAGE_URL;
const sourceUrl = getNodeReferenceMediaUrl(anchor) || CHARACTER_IMAGE_URL;
if (action === "download") {
if (!sourceUrl) {
@ -3468,11 +3472,11 @@ export function LiblibVideoCanvasReplica({ canvasId, isLoading = false }: Liblib
.filter((item): item is CloneNode => Boolean(item));
const imageUrls = incomingNodes
.filter((item) => item.inputType === "image")
.map((item) => getNodeSourceMediaUrl(item))
.map((item) => getNodeReferenceMediaUrl(item))
.filter(Boolean);
const videoUrls = incomingNodes
.filter((item) => item.inputType === "video")
.map((item) => getNodeSourceMediaUrl(item))
.map((item) => getNodeReferenceMediaUrl(item))
.filter(Boolean);
try {
@ -3625,11 +3629,11 @@ export function LiblibVideoCanvasReplica({ canvasId, isLoading = false }: Liblib
.filter((item): item is CloneNode => Boolean(item));
const imageUrls = incomingNodes
.filter((item) => item.inputType === "image")
.map((item) => getNodeSourceMediaUrl(item))
.map((item) => getNodeReferenceMediaUrl(item))
.filter(Boolean);
const videoUrls = incomingNodes
.filter((item) => item.inputType === "video")
.map((item) => getNodeSourceMediaUrl(item))
.map((item) => getNodeReferenceMediaUrl(item))
.filter(Boolean);
const action = String(node.draftValues?.action || "");
const params = (node.draftValues?.params || {}) as Record<string, unknown>;
@ -3660,7 +3664,7 @@ export function LiblibVideoCanvasReplica({ canvasId, isLoading = false }: Liblib
? "hd-upscale"
: "image-repaint";
const definition = getConfiguredFunction(videoCanvasFunctionConfig, functionKey);
const sourceUrl = imageUrls[0] || getNodeSourceMediaUrl(node);
const sourceUrl = imageUrls[0] || getNodeReferenceMediaUrl(node);
const prompt =
functionKey === MULTI_VIEW_NINE_GRID_FUNCTION_KEY
? composeMultiViewNineGridPrompt(definition, String(params.option || node.title))
@ -4978,7 +4982,7 @@ function PresetWorkflowControls({
modelOptions={modelOptions}
nodes={nodes}
onSubmit={onComposerSubmit}
referenceThumbnailUrl={getNodeSourceMediaUrl(selectedNode) || getNodeMediaUrl(selectedNode) || CHARACTER_IMAGE_URL}
referenceThumbnailUrl={getNodeReferenceMediaUrl(selectedNode) || CHARACTER_IMAGE_URL}
/>
</div>
);