diff --git a/app/api/my/rigs/[id]/route.ts b/app/api/my/rigs/[id]/route.ts index fa630313..140c2368 100644 --- a/app/api/my/rigs/[id]/route.ts +++ b/app/api/my/rigs/[id]/route.ts @@ -2,7 +2,7 @@ import { NextRequest, NextResponse } from "next/server"; import { cookies } from "next/headers"; import { directusFetch } from "@/lib/directus"; -const BASE_COLLECTION = "rigs"; // change if your collection name differs +const BASE_COLLECTION = "user_rigs"; async function bearerFromCookies() { // Some Next 15 type defs model cookies() as async—await to satisfy TS in all envs. diff --git a/app/my/rigs/RigBuilderClient.tsx b/app/my/rigs/RigBuilderClient.tsx index 037197d3..ed4221a3 100644 --- a/app/my/rigs/RigBuilderClient.tsx +++ b/app/my/rigs/RigBuilderClient.tsx @@ -163,15 +163,20 @@ export default function RigBuilderClient() { const isGantry = rigTypeVal === "co2_gantry"; const isScan = rigTypeVal === "fiber" || rigTypeVal === "uv" || rigTypeVal === "co2_galvo"; - // Initial loads + // Initial loads (rig types + existing rigs) useEffect(() => { (async () => { try { const [typesRes, rigsRes] = await Promise.all([ - apiJson<{ data: { id: number; name: string }[] }>(`/api/options/rig_type`), + apiJson<{ data: { id: number | string; label?: string; name?: string }[] }>(`/api/options/user_rig_type`), apiJson<{ data: RigRow[] }>(`/api/my/rigs`), ]); - setRigTypes(typesRes.data ?? []); + + const mappedTypes: RigType[] = (typesRes?.data ?? []).map((t) => ({ + id: t.id, + name: (t.label ?? t.name ?? String(t.id)) as any, + })); + setRigTypes(mappedTypes); setRigs(rigsRes.data ?? []); } catch (e: any) { if (!handleAuthError(e)) { @@ -202,12 +207,17 @@ export default function RigBuilderClient() { } (async () => { + // LASER sources by target (matches settings_* targets), fallback to no target try { - // LASER sources by target (matches anonymous form targets) - const srcJson = await apiJson<{ data: Option[] }>( + const withTarget = await apiJson<{ data: Option[] }>( `/api/options/laser_source?target=${encodeURIComponent(settingsTarget)}` ); - setSourceOpts(srcJson.data ?? []); + let list = withTarget?.data ?? []; + if (!list.length) { + const fallback = await apiJson<{ data: Option[] }>(`/api/options/laser_source`); + list = fallback?.data ?? []; + } + setSourceOpts(list); } catch (e: any) { if (!handleAuthError(e)) console.error("[laser_source] load failed:", e); setSourceOpts([]); @@ -463,7 +473,7 @@ export default function RigBuilderClient() { - {/* Swap to live options if/when exposed by API */} + {/* Static until API endpoint for these is exposed */} 10 mm 14 mm 20 mm @@ -483,6 +493,7 @@ export default function RigBuilderClient() { + {/* Static until API endpoint for these is exposed */} 1.5×