From 230a8b3826fc1a25e01c91b8a0e2bfd884a54703 Mon Sep 17 00:00:00 2001 From: Cristhian Zanforlin Lousa Date: Tue, 26 Sep 2023 09:11:19 -0300 Subject: [PATCH 1/6] =?UTF-8?q?=F0=9F=90=9B=20fix(PageComponent/index.tsx)?= =?UTF-8?q?:=20add=20timer=20to=20automatically=20save=20flow=20every=2030?= =?UTF-8?q?=20seconds=20to=20prevent=20data=20loss?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/PageComponent/index.tsx | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/frontend/src/pages/FlowPage/components/PageComponent/index.tsx b/src/frontend/src/pages/FlowPage/components/PageComponent/index.tsx index eae785fc7..050cad05c 100644 --- a/src/frontend/src/pages/FlowPage/components/PageComponent/index.tsx +++ b/src/frontend/src/pages/FlowPage/components/PageComponent/index.tsx @@ -160,6 +160,29 @@ export default function Page({ setExtraNavigation({ title: "Components" }); }, [setExtraComponent, setExtraNavigation]); + const [seconds, setSeconds] = useState(0); + + useEffect(() => { + const interval = setInterval(() => { + setSeconds((prevSeconds) => { + console.log(prevSeconds); + + let updatedSeconds = prevSeconds + 1; + + if (updatedSeconds % 30 === 0) { + saveFlow(flow); + updatedSeconds = 0; + } + + return updatedSeconds; + }); + }, 1000); + + return () => { + clearInterval(interval); + }; + }, []); + const onEdgesChangeMod = useCallback( (change: EdgeChange[]) => { onEdgesChange(change); From 1b3564ed3dff3a7ea232382d6e2abe162fcb9a49 Mon Sep 17 00:00:00 2001 From: Cristhian Zanforlin Lousa Date: Tue, 26 Sep 2023 09:46:39 -0300 Subject: [PATCH 2/6] =?UTF-8?q?=F0=9F=94=A5=20refactor(PageComponent/index?= =?UTF-8?q?.tsx):=20remove=20console.log=20statement=20for=20improved=20co?= =?UTF-8?q?de=20cleanliness?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/pages/FlowPage/components/PageComponent/index.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/frontend/src/pages/FlowPage/components/PageComponent/index.tsx b/src/frontend/src/pages/FlowPage/components/PageComponent/index.tsx index 050cad05c..73b322d16 100644 --- a/src/frontend/src/pages/FlowPage/components/PageComponent/index.tsx +++ b/src/frontend/src/pages/FlowPage/components/PageComponent/index.tsx @@ -165,8 +165,6 @@ export default function Page({ useEffect(() => { const interval = setInterval(() => { setSeconds((prevSeconds) => { - console.log(prevSeconds); - let updatedSeconds = prevSeconds + 1; if (updatedSeconds % 30 === 0) { From 6fd2b0c7432efa374e9052cea1458861f5f7559d Mon Sep 17 00:00:00 2001 From: anovazzi1 Date: Tue, 26 Sep 2023 19:42:46 -0300 Subject: [PATCH 3/6] fix(tabsContext.tsx): add optional 'silent' parameter to the saveFlow function to control whether to show success message or not fix(PageComponent/index.tsx): pass 'true' as the second argument to the saveFlow function to prevent showing success message when saving flow every 30 seconds fix(types/tabs/index.ts): update the saveFlow function signature to include the optional 'silent' parameter --- src/frontend/src/contexts/tabsContext.tsx | 8 +++++--- .../src/pages/FlowPage/components/PageComponent/index.tsx | 2 +- src/frontend/src/types/tabs/index.ts | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/frontend/src/contexts/tabsContext.tsx b/src/frontend/src/contexts/tabsContext.tsx index 6190a6e56..88f5005fe 100644 --- a/src/frontend/src/contexts/tabsContext.tsx +++ b/src/frontend/src/contexts/tabsContext.tsx @@ -52,7 +52,7 @@ const TabsContextInitialValue: TabsContextType = { isBuilt: false, setIsBuilt: (state: boolean) => {}, hardReset: () => {}, - saveFlow: async (flow: FlowType) => {}, + saveFlow: async (flow: FlowType, silent?: boolean) => {}, lastCopiedSelection: null, setLastCopiedSelection: (selection: any) => {}, tabsState: {}, @@ -588,13 +588,15 @@ export function TabsProvider({ children }: { children: ReactNode }) { }); } - async function saveFlow(newFlow: FlowType) { + async function saveFlow(newFlow: FlowType, silent?: boolean) { try { // updates flow in db const updatedFlow = await updateFlowInDatabase(newFlow); if (updatedFlow) { // updates flow in state - setSuccessData({ title: "Changes saved successfully" }); + if (!silent) { + setSuccessData({ title: "Changes saved successfully" }); + } setFlows((prevState) => { const newFlows = [...prevState]; const index = newFlows.findIndex((flow) => flow.id === newFlow.id); diff --git a/src/frontend/src/pages/FlowPage/components/PageComponent/index.tsx b/src/frontend/src/pages/FlowPage/components/PageComponent/index.tsx index 73b322d16..beef5a201 100644 --- a/src/frontend/src/pages/FlowPage/components/PageComponent/index.tsx +++ b/src/frontend/src/pages/FlowPage/components/PageComponent/index.tsx @@ -168,7 +168,7 @@ export default function Page({ let updatedSeconds = prevSeconds + 1; if (updatedSeconds % 30 === 0) { - saveFlow(flow); + saveFlow(flow, true); updatedSeconds = 0; } diff --git a/src/frontend/src/types/tabs/index.ts b/src/frontend/src/types/tabs/index.ts index 4c5b99dd7..a06b514a4 100644 --- a/src/frontend/src/types/tabs/index.ts +++ b/src/frontend/src/types/tabs/index.ts @@ -2,7 +2,7 @@ import { tweakType } from "../components"; import { FlowType } from "../flow"; export type TabsContextType = { - saveFlow: (flow: FlowType) => Promise; + saveFlow: (flow: FlowType, silent?: boolean) => Promise; save: () => void; tabId: string; isLoading: boolean; From fdde05d29e39ca6409d5a97a2987c0be50c48daa Mon Sep 17 00:00:00 2001 From: anovazzi1 Date: Tue, 26 Sep 2023 20:15:04 -0300 Subject: [PATCH 4/6] fix(baseModal): update onChangeOpenModal prop type to accept an optional boolean parameter to improve flexibility and avoid potential errors --- src/frontend/src/modals/baseModal/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/frontend/src/modals/baseModal/index.tsx b/src/frontend/src/modals/baseModal/index.tsx index dc2008e68..263f335fd 100644 --- a/src/frontend/src/modals/baseModal/index.tsx +++ b/src/frontend/src/modals/baseModal/index.tsx @@ -70,7 +70,7 @@ interface BaseModalProps { | "medium-h-full"; disable?: boolean; - onChangeOpenModal?: (open: boolean) => void; + onChangeOpenModal?: (open?: boolean) => void; } function BaseModal({ open, From cb74a0fb448f9e305241706d020a65920d719133 Mon Sep 17 00:00:00 2001 From: anovazzi1 Date: Tue, 26 Sep 2023 20:39:26 -0300 Subject: [PATCH 5/6] fix(nodeToolbarComponent): add check to disable button when nodeLength is 0 to prevent unwanted actions feat(nodeToolbarComponent): add event handler to ignore events with "disabled" keyword to prevent unwanted actions --- .../FlowPage/components/nodeToolbarComponent/index.tsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx b/src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx index e1e3bd5c4..f84d194ea 100644 --- a/src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx +++ b/src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx @@ -62,6 +62,9 @@ export default function NodeToolbarComponent({ setShowNode((prev) => !prev); updateNodeInternals(data.id); } + if(event.includes("disabled")){ + return; + } }; return ( @@ -153,8 +156,8 @@ export default function NodeToolbarComponent({ - -
+ +