()
| 324 | ) |
| 325 | |
| 326 | const syncNodes = () => { |
| 327 | const componentNodes = canvas.componentNodes |
| 328 | |
| 329 | const cloneNodes = cloneDeep(nodes) |
| 330 | const cloneEdges = cloneDeep(edges) |
| 331 | let toBeRemovedEdges = [] |
| 332 | |
| 333 | for (let i = 0; i < cloneNodes.length; i++) { |
| 334 | const node = cloneNodes[i] |
| 335 | const componentNode = componentNodes.find((cn) => cn.name === node.data.name) |
| 336 | if (componentNode && componentNode.version > node.data.version) { |
| 337 | const clonedComponentNode = cloneDeep(componentNode) |
| 338 | cloneNodes[i].data = updateOutdatedNodeData(clonedComponentNode, node.data) |
| 339 | toBeRemovedEdges.push(...updateOutdatedNodeEdge(cloneNodes[i].data, cloneEdges)) |
| 340 | } |
| 341 | } |
| 342 | |
| 343 | setNodes(cloneNodes) |
| 344 | setEdges(cloneEdges.filter((edge) => !toBeRemovedEdges.includes(edge))) |
| 345 | setDirty() |
| 346 | setIsSyncNodesButtonEnabled(false) |
| 347 | } |
| 348 | |
| 349 | const saveChatflowSuccess = () => { |
| 350 | dispatch({ type: REMOVE_DIRTY }) |
no test coverage detected