From bf45c515dbbcffc15ed2c9c7bdf3388527df3b72 Mon Sep 17 00:00:00 2001 From: makearmy Date: Mon, 29 Sep 2025 19:12:10 -0400 Subject: [PATCH] build bug fixes --- app/rigs/page.tsx | 56 +++++++++++++++++------------- components/portal/RigsSwitcher.tsx | 14 +++++--- 2 files changed, 40 insertions(+), 30 deletions(-) diff --git a/app/rigs/page.tsx b/app/rigs/page.tsx index f7bf1a9f..08a67007 100644 --- a/app/rigs/page.tsx +++ b/app/rigs/page.tsx @@ -1,30 +1,36 @@ -// app/rigs/page.tsx -import RigBuilderServer from "./RigBuilderServer"; -import RigsListClient from "./RigsListClient"; +// app/portal/rigs/page.tsx +import { cookies } from "next/headers"; +import { redirect } from "next/navigation"; +import RigsSwitcher from "@/components/portal/RigsSwitcher"; -export default function Page() { - return ( -
-
-

Rigs

-

- Manage rigs used when submitting settings. -

-
+type Opt = { id: string | number; label: string }; -
- {/* Left: existing rigs */} -
-

My Rigs

- -
+export default async function Page() { + const jar = await cookies(); // Next 15: async + const ma_at = jar.get("ma_at")?.value; + if (!ma_at) { + redirect("/auth/sign-in?next=/portal/rigs"); + } - {/* Right: create a new rig (server-provided rig types) */} -
-

Create Rig

- -
-
-
+ const DIRECTUS = (process.env.DIRECTUS_URL || "").replace(/\/$/, ""); + const res = await fetch( + `${DIRECTUS}/items/user_rig_type?fields=id,name&sort=sort`, + { + headers: { + Authorization: `Bearer ${ma_at}`, + Accept: "application/json", + "Cache-Control": "no-store", + }, + cache: "no-store", + } ); + + // Be resilient: if this fails, just show no options so the page still builds + const json = res.ok ? await res.json().catch(() => ({ data: [] })) : { data: [] }; + const rigTypes: Opt[] = (json?.data ?? []).map((r: any) => ({ + id: r.id, + label: r.name ?? String(r.id), + })); + + return ; } diff --git a/components/portal/RigsSwitcher.tsx b/components/portal/RigsSwitcher.tsx index dddec8d3..244c5ba0 100644 --- a/components/portal/RigsSwitcher.tsx +++ b/components/portal/RigsSwitcher.tsx @@ -6,12 +6,14 @@ import { cn } from "@/lib/utils"; import RigsListClient from "@/app/rigs/RigsListClient"; import RigBuilderClient from "@/app/rigs/RigBuilderClient"; +type Opt = { id: string | number; label: string }; + const TABS = [ { key: "my", label: "My Rigs" }, { key: "add", label: "Add Rig" }, ]; -function Panel({ tab }: { tab: string }) { +function Panel({ tab, rigTypes }: { tab: string; rigTypes: Opt[] }) { switch (tab) { case "my": return ( @@ -22,7 +24,7 @@ function Panel({ tab }: { tab: string }) { case "add": return (
- +
); default: @@ -30,7 +32,7 @@ function Panel({ tab }: { tab: string }) { } } -export default function RigsSwitcher() { +export default function RigsSwitcher({ rigTypes }: { rigTypes: Opt[] }) { const router = useRouter(); const sp = useSearchParams(); const active = sp.get("t") || "my"; @@ -50,7 +52,9 @@ export default function RigsSwitcher() { onClick={() => setTab(key)} className={cn( "rounded-md border px-3 py-1.5 text-sm transition", - active === key ? "bg-primary text-primary-foreground" : "hover:bg-muted" + active === key + ? "bg-primary text-primary-foreground" + : "hover:bg-muted" )} > {label} @@ -58,7 +62,7 @@ export default function RigsSwitcher() { ))} - + ); }