refactor(PageComponent): add support for setting tabsState.isPending to true when nodes or edges change to indicate that the flow is being edited

feat(PageComponent): import NodeChange from reactflow and add onNodesChangeMod function to handle nodes change and set tabsState.isPending to true
This commit is contained in:
anovazzi1 2023-06-15 18:03:28 -03:00
commit 8d6149a124

View file

@ -1,4 +1,4 @@
import _ from "lodash"; import _, { set } from "lodash";
import { useContext, useRef, useState, useEffect, useCallback } from "react"; import { useContext, useRef, useState, useEffect, useCallback } from "react";
import ReactFlow, { import ReactFlow, {
OnSelectionChangeParams, OnSelectionChangeParams,
@ -15,6 +15,7 @@ import ReactFlow, {
updateEdge, updateEdge,
Background, Background,
Controls, Controls,
NodeChange,
} from "reactflow"; } from "reactflow";
import GenericNode from "../../../../CustomNodes/GenericNode"; import GenericNode from "../../../../CustomNodes/GenericNode";
import Chat from "../../../../components/chatComponent"; import Chat from "../../../../components/chatComponent";
@ -43,7 +44,8 @@ export default function Page({ flow }: { flow: FlowType }) {
lastCopiedSelection, lastCopiedSelection,
setLastCopiedSelection, setLastCopiedSelection,
tabsState, tabsState,
saveFlow saveFlow,
setTabsState
} = useContext(TabsContext); } = useContext(TabsContext);
const { types, reactFlowInstance, setReactFlowInstance, templates } = const { types, reactFlowInstance, setReactFlowInstance, templates } =
useContext(typesContext); useContext(typesContext);
@ -145,8 +147,25 @@ export default function Page({ flow }: { flow: FlowType }) {
let newX = _.cloneDeep(x); let newX = _.cloneDeep(x);
return newX; return newX;
}); });
setTabsState((prev)=>{
let newState = _.cloneDeep(prev);
newState[flow.id].isPending = true;
return newState;
})
}, },
[onEdgesChange, setNodes] [onEdgesChange, setNodes,setTabsState,flow.id]
);
const onNodesChangeMod = useCallback(
(s: NodeChange[]) => {
onNodesChange(s);
setTabsState((prev)=>{
let newState = _.cloneDeep(prev);
newState[flow.id].isPending = true;
return newState;
})
},
[onNodesChange,setTabsState,flow.id]
); );
const onConnect = useCallback( const onConnect = useCallback(
@ -345,7 +364,7 @@ export default function Page({ flow }: { flow: FlowType }) {
onPaneMouseLeave={() => { onPaneMouseLeave={() => {
setDisableCopyPaste(true); setDisableCopyPaste(true);
}} }}
onNodesChange={onNodesChange} onNodesChange={onNodesChangeMod}
onEdgesChange={onEdgesChangeMod} onEdgesChange={onEdgesChangeMod}
onConnect={onConnect} onConnect={onConnect}
disableKeyboardA11y={true} disableKeyboardA11y={true}