From fb916c7bcc77402c4ad60b5b173a00962838059f Mon Sep 17 00:00:00 2001 From: Alex Ruddick Date: Sat, 14 Oct 2023 16:27:44 -0500 Subject: [PATCH] Don't connect mulitple times --- src/ui.tsx | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/ui.tsx b/src/ui.tsx index d98d964..288f672 100644 --- a/src/ui.tsx +++ b/src/ui.tsx @@ -1046,9 +1046,18 @@ function PortSelector({driver, setDriver}: {driver: Driver; setDriver: (d: Drive } function Root() { - const [driver, setDriver] = useState( - IS_WEB ? null as Driver | null : SaxiDriver.connect() - ) + let driver: Driver + let setDriver: null + const [isDriverConnected, setIsDriverConnected] = useState(false); + useEffect(() => { + if (isDriverConnected) return + if (IS_WEB) { + [driver, setDriver] = useState(null as Driver) + } else { + driver = SaxiDriver.connect() + } + setIsDriverConnected(true); + }, [isDriverConnected]); const [state, dispatch] = useReducer(reducer, initialState); const [isPlanning, plan, setPlan] = usePlan(state.paths, state.planOptions); const [isLoadingFile, setIsLoadingFile] = useState(false); @@ -1077,7 +1086,7 @@ function Root() { driver.onplan = (plan: Plan) => { setPlan(plan); }; - }, [driver]) + }, IS_WEB ? [driver] : []) useEffect(() => { const ondrop = (e: DragEvent) => { @@ -1120,7 +1129,7 @@ function Root() { document.body.removeEventListener("dragleave", ondragleave); document.removeEventListener("paste", onpaste); }; - }); + }, []); // Each time new motion is started, save the start time const currentMotionStartedTime = useMemo(() => {