fix(ui): fix non-nodes validation logic being applied to nodes invoke button

This commit is contained in:
psychedelicious
2023-09-05 12:44:39 +10:00
parent 52bd2bbb13
commit 8b305651f9

View File

@ -31,52 +31,54 @@ const selector = createSelector(
reasons.push('No initial image selected'); reasons.push('No initial image selected');
} }
if (activeTabName === 'nodes' && nodes.shouldValidateGraph) { if (activeTabName === 'nodes') {
if (!nodes.nodes.length) { if (nodes.shouldValidateGraph) {
reasons.push('No nodes in graph'); if (!nodes.nodes.length) {
} reasons.push('No nodes in graph');
nodes.nodes.forEach((node) => {
if (!isInvocationNode(node)) {
return;
} }
const nodeTemplate = nodes.nodeTemplates[node.data.type]; nodes.nodes.forEach((node) => {
if (!isInvocationNode(node)) {
if (!nodeTemplate) {
// Node type not found
reasons.push('Missing node template');
return;
}
const connectedEdges = getConnectedEdges([node], nodes.edges);
forEach(node.data.inputs, (field) => {
const fieldTemplate = nodeTemplate.inputs[field.name];
const hasConnection = connectedEdges.some(
(edge) =>
edge.target === node.id && edge.targetHandle === field.name
);
if (!fieldTemplate) {
reasons.push('Missing field template');
return; return;
} }
if ( const nodeTemplate = nodes.nodeTemplates[node.data.type];
fieldTemplate.required &&
field.value === undefined && if (!nodeTemplate) {
!hasConnection // Node type not found
) { reasons.push('Missing node template');
reasons.push( return;
`${node.data.label || nodeTemplate.title} -> ${ }
field.label || fieldTemplate.title
} missing input` const connectedEdges = getConnectedEdges([node], nodes.edges);
forEach(node.data.inputs, (field) => {
const fieldTemplate = nodeTemplate.inputs[field.name];
const hasConnection = connectedEdges.some(
(edge) =>
edge.target === node.id && edge.targetHandle === field.name
); );
return;
} if (!fieldTemplate) {
reasons.push('Missing field template');
return;
}
if (
fieldTemplate.required &&
field.value === undefined &&
!hasConnection
) {
reasons.push(
`${node.data.label || nodeTemplate.title} -> ${
field.label || fieldTemplate.title
} missing input`
);
return;
}
});
}); });
}); }
} else { } else {
if (!model) { if (!model) {
reasons.push('No model selected'); reasons.push('No model selected');