// app/rigs/RigBuilderServer.tsx
import { cookies } from "next/headers";
import { redirect } from "next/navigation";
import RigBuilderClient from "./RigBuilderClient";

type Opt = { id: string | number; label: string };

export default async function RigBuilderServer() {
    const jar = cookies();
    const ma_at = jar.get("ma_at")?.value;
    if (!ma_at) {
        const next = encodeURIComponent("/rigs");
        redirect(`/auth/sign-in?next=${next}`);
    }

    const DIRECTUS = (process.env.DIRECTUS_URL || "").replace(/\/$/, "");
    // Fetch rig types on the SERVER with the user bearer
    const res = await fetch(
        `${DIRECTUS}/items/user_rig_type?fields=id,name&sort=sort`,
        {
            headers: {
                // Build the bearer header explicitly from the raw cookie token
                Authorization: `Bearer ${ma_at}`,
                Accept: "application/json",
                "Cache-Control": "no-store",
            },
            cache: "no-store",
        }
    );

    if (!res.ok) {
        // If perms or token are wrong, fail loud so it’s obvious in dev
        // (You can swap this for a quieter empty list if you prefer)
        const text = await res.text().catch(() => "");
        throw new Error(
            `Failed to load user_rig_type (${res.status}): ${text || res.statusText}`
        );
    }

    const json = await res.json().catch(() => ({ data: [] as any[] }));
    const rigTypes: Opt[] = (json?.data ?? []).map((r: any) => ({
        id: r.id,
        label: r.name ?? String(r.id),
    }));

    return <RigBuilderClient rigTypes={rigTypes} />;
}
