refactor: prevent disconnected handles from executing when input template edge is hidden (#6132)

*  (reactflowUtils.ts): add new function filterHiddenFieldsEdges to filter out edges based on hidden fields in node templates

* ♻️ (reactflowUtils.ts): refactor filterHiddenFieldsEdges function to accept targetNode directly instead of nodes array to improve code readability and maintainability

* 🐛 (reactflowUtils.ts): fix a bug where nodeInputType is accessed without null check, causing potential runtime error

---------

Co-authored-by: anovazzi1 <otavio2204@gmail.com>
This commit is contained in:
Cristhian Zanforlin Lousa 2025-02-06 17:34:22 -03:00 committed by GitHub
commit 0b7368e23d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -133,10 +133,36 @@ export function cleanEdges(nodes: AllNodeType[], edges: EdgeType[]) {
}
}
}
newEdges = filterHiddenFieldsEdges(edge, newEdges, targetNode);
});
return newEdges;
}
export function filterHiddenFieldsEdges(
edge: EdgeType,
newEdges: EdgeType[],
targetNode: AllNodeType,
) {
if (targetNode) {
const nodeInputType = edge.data?.targetHandle?.inputTypes;
const nodeTemplates = targetNode.data.node!.template;
Object.keys(nodeTemplates).forEach((key) => {
if (!nodeTemplates[key]?.input_types) return;
if (
nodeTemplates[key]?.input_types?.some((type) =>
nodeInputType?.includes(type),
) &&
!nodeTemplates[key].show
) {
newEdges = newEdges.filter((e) => e.id !== edge.id);
}
});
}
return newEdges;
}
export function detectBrokenEdgesEdges(nodes: AllNodeType[], edges: Edge[]) {
function generateAlertObject(sourceNode, targetNode, edge) {
const targetHandleObject: targetHandleType = scapeJSONParse(