"use client"; import { useRouter, useSearchParams } from "next/navigation"; import { useEffect, useState } from "react"; interface Gym { id: string; name: string; } interface GymSelectorProps { currentGymId?: string; userRole: string; } export function GymSelector({ userRole }: GymSelectorProps) { const router = useRouter(); const searchParams = useSearchParams(); const [gyms, setGyms] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { // Only fetch gyms for superAdmin if (userRole !== "superAdmin") { setLoading(false); return; } async function fetchGyms() { try { const response = await fetch("/api/gyms"); const data = await response.json(); // API returns array directly if (Array.isArray(data)) { setGyms(data); } } catch (error) { console.error("Failed to fetch gyms:", error); } finally { setLoading(false); } } fetchGyms(); }, [userRole]); const handleGymChange = (gymId: string) => { const params = new URLSearchParams(searchParams.toString()); if (gymId === "all") { params.delete("gymId"); } else { params.set("gymId", gymId); } router.push(`?${params.toString()}`); }; // Only show for superAdmin if (userRole !== "superAdmin") { return null; } const selectedGymId = searchParams.get("gymId") ?? "all"; if (loading) { return (
); } return (
); }