import { useEffect } from "react"; import { useToast } from "@/hooks/use-toast"; const FLAG = "lelab:teleop-stopped"; /** * One-time confirmation that teleoperation was stopped during the previous * page's unload (a browser navigation, reload, or tab close from the * teleoperation page set a sessionStorage flag, since React cleanup can't run * in those cases). On the next fresh load we surface a toast wherever the user * landed, then clear the flag. In-app navigation away from teleop toasts * directly and never sets the flag, so this never double-fires. */ const TeleopStopNotice = () => { const { toast } = useToast(); useEffect(() => { let stopped = false; try { stopped = sessionStorage.getItem(FLAG) === "1"; if (stopped) sessionStorage.removeItem(FLAG); } catch { /* sessionStorage unavailable — nothing to show */ } if (stopped) { toast({ title: "Teleoperation stopped", description: "The arm was disconnected cleanly when you left the page.", }); } }, [toast]); return null; }; export default TeleopStopNotice;