tidy(ui): validateConnection code clarity

This commit is contained in:
psychedelicious 2024-05-19 00:30:49 +10:00
parent 00c2d8f95d
commit 059d5a682c

View File

@ -56,7 +56,8 @@ export const validateConnection: ValidateConnectionFunc = (c, nodes, edges, temp
* We may need to ignore an edge when validating a connection. * We may need to ignore an edge when validating a connection.
* *
* For example, while an edge is being updated, it still exists in the array of edges. As we validate the new connection, * For example, while an edge is being updated, it still exists in the array of edges. As we validate the new connection,
* the user experience should be that the edge is temporarily removed from the graph, so we need to ignore it. * the user experience should be that the edge is temporarily removed from the graph, so we need to ignore it, else
* the validation will fail unexpectedly.
*/ */
const filteredEdges = edges.filter((e) => e.id !== ignoreEdge?.id); const filteredEdges = edges.filter((e) => e.id !== ignoreEdge?.id);
@ -100,21 +101,18 @@ export const validateConnection: ValidateConnectionFunc = (c, nodes, edges, temp
} }
if (targetNode.data.type === 'collect' && c.targetHandle === 'item') { if (targetNode.data.type === 'collect' && c.targetHandle === 'item') {
// Collect nodes shouldn't mix and match field types // Collect nodes shouldn't mix and match field types.
const collectItemType = getCollectItemType(templates, nodes, edges, targetNode.id); const collectItemType = getCollectItemType(templates, nodes, edges, targetNode.id);
if (collectItemType) { if (collectItemType && !areTypesEqual(sourceFieldTemplate.type, collectItemType)) {
if (!areTypesEqual(sourceFieldTemplate.type, collectItemType)) { return buildRejectResult('nodes.cannotMixAndMatchCollectionItemTypes');
return buildRejectResult('nodes.cannotMixAndMatchCollectionItemTypes');
}
} }
} }
if ( if (filteredEdges.find(getTargetEqualityPredicate(c))) {
filteredEdges.find(getTargetEqualityPredicate(c)) && // CollectionItemField inputs can have multiple input connections
// except CollectionItem inputs can have multiple input connections if (targetFieldTemplate.type.name !== 'CollectionItemField') {
targetFieldTemplate.type.name !== 'CollectionItemField' return buildRejectResult('nodes.inputMayOnlyHaveOneConnection');
) { }
return buildRejectResult('nodes.inputMayOnlyHaveOneConnection');
} }
if (!validateConnectionTypes(sourceFieldTemplate.type, targetFieldTemplate.type)) { if (!validateConnectionTypes(sourceFieldTemplate.type, targetFieldTemplate.type)) {