import React from "react"; import { useNavigate } from "react-router-dom"; import { useApi } from "@/contexts/ApiContext"; import { useToast } from "@/hooks/use-toast"; import { RobotRecord } from "@/hooks/useRobots"; import RobotTile from "./RobotTile"; interface RobotConfigManagerProps { selectedName: string | null; selectedRecord: RobotRecord | null; availableNames: string[]; isLoading: boolean; selectRobot: (name: string) => void; createRobot: (name: string) => Promise; deleteRobot: (name: string) => Promise; } const RobotConfigManager: React.FC = ({ selectedName, selectedRecord, availableNames, isLoading, selectRobot, createRobot, deleteRobot, }) => { const navigate = useNavigate(); const { baseUrl, fetchWithHeaders } = useApi(); const { toast } = useToast(); const handleConfigure = (name: string) => { navigate("/calibration", { state: { robot_name: name } }); }; const handleTeleop = async (robot: RobotRecord) => { try { const res = await fetchWithHeaders(`${baseUrl}/move-arm`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ leader_port: robot.leader_port, follower_port: robot.follower_port, leader_config: robot.leader_config, follower_config: robot.follower_config, }), }); const data = await res.json(); if (res.ok) { toast({ title: "Teleoperation Started", description: data.message || `Started teleoperation for ${robot.name}.`, }); navigate("/teleoperation"); } else { toast({ title: "Error Starting Teleoperation", description: data.message || "Failed to start.", variant: "destructive", }); } } catch (e) { toast({ title: "Connection Error", description: "Could not connect to the backend server.", variant: "destructive", }); } }; return ( ); }; export default RobotConfigManager;