diff --git a/src/frontend/src/stores/flowStore.ts b/src/frontend/src/stores/flowStore.ts index 5e7563974..c15cd6a3a 100644 --- a/src/frontend/src/stores/flowStore.ts +++ b/src/frontend/src/stores/flowStore.ts @@ -38,6 +38,7 @@ import { scapeJSONParse, scapedJSONStringfy, updateEdgesIds, + updateGroupRecursion, updateIds, updateProxyIdsOnTemplate, validateNodes, @@ -225,6 +226,11 @@ const useFlowStore = create((set, get) => ({ ); }, paste: (selection, position) => { + + function updateGroup(){ + + } + if ( selection.nodes.some((node) => node.data.type === "ChatInput") && checkChatInput(get().nodes) @@ -261,13 +267,7 @@ const useFlowStore = create((set, get) => ({ let newId = getNodeId(node.data.type); idsMap[node.id] = newId; - if (node.data.node!.flow) { - let newFlow = node.data.node!.flow; - const idsMap = updateIds(newFlow.data!); - updateProxyIdsOnTemplate(node.data.node!.template, idsMap); - let flowEdges = selection.edges; - updateEdgesIds(flowEdges, idsMap); - } + updateGroupRecursion(node,selection.edges) // Create a new node object const newNode: NodeType = { diff --git a/src/frontend/src/utils/reactflowUtils.ts b/src/frontend/src/utils/reactflowUtils.ts index 62c522129..cba490475 100644 --- a/src/frontend/src/utils/reactflowUtils.ts +++ b/src/frontend/src/utils/reactflowUtils.ts @@ -1273,3 +1273,18 @@ export function isInputType(type: string): boolean { export function isOutputType(type: string): boolean { return OUTPUT_TYPES.has(type); } + +export function updateGroupRecursion(groupNode:NodeType,edges:Edge[]){ + if(groupNode.data.node?.flow){ + groupNode.data.node.flow.data!.nodes.forEach((node)=>{ + if(node.data.node?.flow){ + updateGroupRecursion(node,node.data.node.flow.data!.edges); + } + }) + let newFlow = groupNode.data.node!.flow; + const idsMap = updateIds(newFlow.data!); + updateProxyIdsOnTemplate(groupNode.data.node!.template, idsMap); + let flowEdges = edges; + updateEdgesIds(flowEdges, idsMap); + } +} \ No newline at end of file