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:
parent
64b0ffcde5
commit
8d6149a124
1 changed files with 23 additions and 4 deletions
|
|
@ -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}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue