fix: honor PSD super locked image slots
This commit is contained in:
parent
6e647021cd
commit
b189ca1b58
@ -150,11 +150,14 @@ export async function executeAgentPsdTemplateRenderRequest(
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isAgentPsdTemplateLayerUserEditable(layer)) {
|
const canReplaceImageLayer =
|
||||||
|
isAgentPsdImageLayerSlot(layer) && layer.isEditable;
|
||||||
|
const canEditTextLayer = isAgentPsdTemplateLayerUserEditable(layer);
|
||||||
|
if (!canReplaceImageLayer && !canEditTextLayer) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isAgentPsdImageLayerSlot(layer)) {
|
if (canReplaceImageLayer) {
|
||||||
const explicitUrl = String(body.imageAssignments[layer.id] || "").trim();
|
const explicitUrl = String(body.imageAssignments[layer.id] || "").trim();
|
||||||
if (explicitUrl) {
|
if (explicitUrl) {
|
||||||
imageAssignments[layer.id] = explicitUrl;
|
imageAssignments[layer.id] = explicitUrl;
|
||||||
@ -172,7 +175,7 @@ export async function executeAgentPsdTemplateRenderRequest(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isAgentPsdTextLayerSlot(layer)) {
|
if (canEditTextLayer && isAgentPsdTextLayerSlot(layer)) {
|
||||||
if (Object.hasOwn(body.textAssignments, layer.id)) {
|
if (Object.hasOwn(body.textAssignments, layer.id)) {
|
||||||
textAssignments[layer.id] = String(
|
textAssignments[layer.id] = String(
|
||||||
body.textAssignments[layer.id] ?? ""
|
body.textAssignments[layer.id] ?? ""
|
||||||
|
|||||||
@ -411,10 +411,9 @@ export function parseAgentPsdTemplateLayers(value: unknown) {
|
|||||||
layers.push({
|
layers.push({
|
||||||
...baseRecord,
|
...baseRecord,
|
||||||
slotType: "image",
|
slotType: "image",
|
||||||
isDefaultResultSource:
|
isDefaultResultSource: isEditable && record.isDefaultResultSource === true,
|
||||||
isEditable && !isSuperLocked && record.isDefaultResultSource === true,
|
|
||||||
allowUserUploadOverride:
|
allowUserUploadOverride:
|
||||||
isEditable && !isSuperLocked ? record.allowUserUploadOverride !== false : false,
|
isEditable ? record.allowUserUploadOverride !== false : false,
|
||||||
replaceMode: normalizeAgentPsdTemplateReplaceMode(record.replaceMode),
|
replaceMode: normalizeAgentPsdTemplateReplaceMode(record.replaceMode),
|
||||||
contentBounds: normalizeAgentPsdTemplateImageContentBounds(
|
contentBounds: normalizeAgentPsdTemplateImageContentBounds(
|
||||||
record.contentBounds,
|
record.contentBounds,
|
||||||
@ -617,7 +616,7 @@ export function getAgentPsdTemplateRuntimeMissingLayers(template: AgentPsdTempla
|
|||||||
if (hasUsableRenderBase) {
|
if (hasUsableRenderBase) {
|
||||||
return (
|
return (
|
||||||
isAgentPsdImageLayerSlot(layer) &&
|
isAgentPsdImageLayerSlot(layer) &&
|
||||||
isAgentPsdTemplateLayerUserEditable(layer) &&
|
layer.isEditable &&
|
||||||
!hasAgentPsdTemplateStoredLayerSource(layer)
|
!hasAgentPsdTemplateStoredLayerSource(layer)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -728,7 +728,11 @@ function shouldPrepareLayerPreview(
|
|||||||
layer: AgentPsdTemplateLayerSlot,
|
layer: AgentPsdTemplateLayerSlot,
|
||||||
assetProfile: PsdTemplateLayerAssetProfile
|
assetProfile: PsdTemplateLayerAssetProfile
|
||||||
) {
|
) {
|
||||||
return assetProfile === "full" || isAgentPsdTemplateLayerUserEditable(layer);
|
return (
|
||||||
|
assetProfile === "full" ||
|
||||||
|
isAgentPsdTemplateLayerUserEditable(layer) ||
|
||||||
|
(isAgentPsdImageLayerSlot(layer) && layer.isEditable)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function shouldPrepareLayerSource(
|
function shouldPrepareLayerSource(
|
||||||
@ -739,7 +743,7 @@ function shouldPrepareLayerSource(
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return isAgentPsdImageLayerSlot(layer) && isAgentPsdTemplateLayerUserEditable(layer);
|
return isAgentPsdImageLayerSlot(layer) && layer.isEditable;
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function preparePsdTemplateRenderAssets(params: {
|
export async function preparePsdTemplateRenderAssets(params: {
|
||||||
@ -795,8 +799,7 @@ export async function preparePsdTemplateRenderAssets(params: {
|
|||||||
isAgentPsdTextLayerSlot(targetLayer) &&
|
isAgentPsdTextLayerSlot(targetLayer) &&
|
||||||
targetLayer.styleSource !== "custom";
|
targetLayer.styleSource !== "custom";
|
||||||
const shouldResolveImageBounds =
|
const shouldResolveImageBounds =
|
||||||
isAgentPsdTemplateLayerUserEditable(targetLayer) &&
|
isAgentPsdImageLayerSlot(targetLayer) && targetLayer.isEditable;
|
||||||
isAgentPsdImageLayerSlot(targetLayer);
|
|
||||||
|
|
||||||
if (
|
if (
|
||||||
!shouldUploadPreview &&
|
!shouldUploadPreview &&
|
||||||
|
|||||||
@ -10,7 +10,6 @@ import {
|
|||||||
AGENT_PSD_TEMPLATE_ASSET_VERSION,
|
AGENT_PSD_TEMPLATE_ASSET_VERSION,
|
||||||
hasAgentPsdTemplateRenderSegments,
|
hasAgentPsdTemplateRenderSegments,
|
||||||
isAgentPsdImageLayerSlot,
|
isAgentPsdImageLayerSlot,
|
||||||
isAgentPsdLayerSuperLocked,
|
|
||||||
isAgentPsdTemplateLayerUserEditable,
|
isAgentPsdTemplateLayerUserEditable,
|
||||||
isAgentPsdTextLayerSlot,
|
isAgentPsdTextLayerSlot,
|
||||||
type AgentPsdTemplate,
|
type AgentPsdTemplate,
|
||||||
@ -42,7 +41,7 @@ function hasMissingLayerAssets(template: AgentPsdTemplate) {
|
|||||||
if (hasRenderBase) {
|
if (hasRenderBase) {
|
||||||
return (
|
return (
|
||||||
isAgentPsdImageLayerSlot(layer) &&
|
isAgentPsdImageLayerSlot(layer) &&
|
||||||
isAgentPsdTemplateLayerUserEditable(layer) &&
|
layer.isEditable &&
|
||||||
!String(layer.sourceUrl || "").trim()
|
!String(layer.sourceUrl || "").trim()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -74,19 +73,13 @@ function hasStaticTemplateLayers(template: AgentPsdTemplate) {
|
|||||||
|
|
||||||
function repairEditableImageLayerSelection(template: AgentPsdTemplate) {
|
function repairEditableImageLayerSelection(template: AgentPsdTemplate) {
|
||||||
const imageLayers = template.layers.filter(isAgentPsdImageLayerSlot);
|
const imageLayers = template.layers.filter(isAgentPsdImageLayerSlot);
|
||||||
const unlockedImageLayers = imageLayers.filter(
|
if (imageLayers.length === 0) {
|
||||||
(layer) => !isAgentPsdLayerSuperLocked(layer)
|
|
||||||
);
|
|
||||||
if (unlockedImageLayers.length === 0) {
|
|
||||||
return template.layers;
|
return template.layers;
|
||||||
}
|
}
|
||||||
|
|
||||||
const editableImageLayers = unlockedImageLayers.filter(
|
const editableImageLayers = imageLayers.filter((layer) => layer.isEditable);
|
||||||
isAgentPsdTemplateLayerUserEditable
|
const defaultImageLayer = imageLayers.find(
|
||||||
);
|
(layer) => layer.isEditable && layer.isDefaultResultSource
|
||||||
const defaultImageLayer = unlockedImageLayers.find(
|
|
||||||
(layer) =>
|
|
||||||
isAgentPsdTemplateLayerUserEditable(layer) && layer.isDefaultResultSource
|
|
||||||
);
|
);
|
||||||
const shouldAutoRepairSelection =
|
const shouldAutoRepairSelection =
|
||||||
editableImageLayers.length === 0 ||
|
editableImageLayers.length === 0 ||
|
||||||
@ -98,7 +91,7 @@ function repairEditableImageLayerSelection(template: AgentPsdTemplate) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const nextPrimaryLayerId = pickPrimaryPsdImageLayerId({
|
const nextPrimaryLayerId = pickPrimaryPsdImageLayerId({
|
||||||
imageLayers: unlockedImageLayers,
|
imageLayers,
|
||||||
canvasWidth: template.width,
|
canvasWidth: template.width,
|
||||||
canvasHeight: template.height,
|
canvasHeight: template.height,
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user