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