diff --git a/src/frontend/src/types/utils/reactflowUtils.ts b/src/frontend/src/types/utils/reactflowUtils.ts index ecbbda4e4..d7207ac62 100644 --- a/src/frontend/src/types/utils/reactflowUtils.ts +++ b/src/frontend/src/types/utils/reactflowUtils.ts @@ -8,3 +8,9 @@ export type cleanEdgesType = { }; updateEdge: (edge: Edge[]) => void; }; + +export type updateEdgesHandleIdsType = { + nodes: NodeType[]; + edges: Edge[]; + setEdges: (edges: Edge[]) => void; +}; diff --git a/src/frontend/src/utils/reactflowUtils.ts b/src/frontend/src/utils/reactflowUtils.ts index 063daee74..d08204685 100644 --- a/src/frontend/src/utils/reactflowUtils.ts +++ b/src/frontend/src/utils/reactflowUtils.ts @@ -1,8 +1,16 @@ import _ from "lodash"; import { Connection, ReactFlowInstance } from "reactflow"; import { APITemplateType } from "../types/api"; -import { FlowType, NodeType } from "../types/flow"; -import { cleanEdgesType } from "../types/utils/reactflowUtils"; +import { + FlowType, + NodeType, + sourceHandleType, + targetHandleType, +} from "../types/flow"; +import { + cleanEdgesType, + updateEdgesHandleIdsType, +} from "../types/utils/reactflowUtils"; import { toNormalCase } from "./utils"; export function cleanEdges({ @@ -232,3 +240,31 @@ export function addVersionToDuplicates(flow: FlowType, flows: FlowType[]) { return newName; } + +export function updateEdgesHandleIds({ + edges, + nodes, + setEdges, +}: updateEdgesHandleIdsType) { + let newEdges = _.cloneDeep(edges); + newEdges.forEach((edge) => { + const sourceNode = edge.source; + const targetNode = edge.target; + let source = edge.sourceHandle; + let target = edge.targetHandle; + //right + let newSource: sourceHandleType; + //left + let newTarget: targetHandleType; + if (target) { + let splittedtarget = target.split("|"); + let inputTypes: string[]; + if (splittedtarget[0].split(";").length > 1) { + newTarget.inputTypes = splittedtarget[0].split(";"); + } else { + newTarget.type = splittedtarget[0]; + } + } + }); + setEdges(newEdges); +}