makearmy-app/app/rigs/RigBuilderServer.tsx

47 lines
1.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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 its 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} />;
}