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:
parent
fdad49764a
commit
0b7368e23d
1 changed files with 26 additions and 0 deletions
|
|
@ -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(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue