Spaces:
Running
Running
import React from "react"; | |
import { useNavigate } from "react-router-dom"; | |
import VisualizerPanel from "@/components/control/VisualizerPanel"; | |
import { useToast } from "@/hooks/use-toast"; | |
import { useApi } from "@/contexts/ApiContext"; | |
const TeleoperationPage = () => { | |
const navigate = useNavigate(); | |
const { toast } = useToast(); | |
const { baseUrl, fetchWithHeaders } = useApi(); | |
const handleGoBack = async () => { | |
try { | |
// Stop the teleoperation process before navigating back | |
console.log("🛑 Stopping teleoperation..."); | |
const response = await fetchWithHeaders(`${baseUrl}/stop-teleoperation`, { | |
method: "POST", | |
}); | |
if (response.ok) { | |
const result = await response.json(); | |
console.log("✅ Teleoperation stopped:", result.message); | |
toast({ | |
title: "Teleoperation Stopped", | |
description: | |
result.message || | |
"Robot teleoperation has been stopped successfully.", | |
}); | |
} else { | |
const errorText = await response.text(); | |
console.warn( | |
"⚠️ Failed to stop teleoperation:", | |
response.status, | |
errorText | |
); | |
toast({ | |
title: "Warning", | |
description: `Failed to stop teleoperation properly. Status: ${response.status}`, | |
variant: "destructive", | |
}); | |
} | |
} catch (error) { | |
console.error("❌ Error stopping teleoperation:", error); | |
toast({ | |
title: "Error", | |
description: "Failed to communicate with the robot server.", | |
variant: "destructive", | |
}); | |
} finally { | |
// Navigate back regardless of the result | |
navigate("/"); | |
} | |
}; | |
return ( | |
<div className="min-h-screen bg-black flex items-center justify-center p-2 sm:p-4"> | |
<div className="w-full h-[95vh] flex"> | |
<VisualizerPanel onGoBack={handleGoBack} className="lg:w-full" /> | |
</div> | |
</div> | |
); | |
}; | |
export default TeleoperationPage; | |