From a490471e4ff94eabbcfe46e82e84870b54ada86c Mon Sep 17 00:00:00 2001 From: makearmy Date: Sun, 28 Sep 2025 11:44:34 -0400 Subject: [PATCH] routing fixes --- app/api/me/route.ts | 14 +++---- app/api/options/laser_source/route.ts | 47 ++++++++-------------- app/api/options/material_opacity/route.ts | 23 +++++------ app/components/forms/SettingsSubmit.tsx | 10 ++--- makearmy-app.zip => makearmy-app1131.zip | Bin 212611 -> 213695 bytes 5 files changed, 37 insertions(+), 57 deletions(-) rename makearmy-app.zip => makearmy-app1131.zip (85%) diff --git a/app/api/me/route.ts b/app/api/me/route.ts index 7e525a15..98535788 100644 --- a/app/api/me/route.ts +++ b/app/api/me/route.ts @@ -8,8 +8,8 @@ function readCookie(name: string, cookieHeader: string) { export async function GET(req: Request) { const base = process.env.NEXT_PUBLIC_API_BASE_URL!; - // NOTE: include username explicitly - const url = `${base}/users/me?fields=id,username,display_name,first_name,last_name,email`; + // <- add username to the requested fields + const url = `${base}/users/me?fields=id,username,display_name,first_name,last_name,email`; const cookieHeader = req.headers.get("cookie") ?? ""; const ma_at = readCookie("ma_at", cookieHeader); @@ -18,14 +18,12 @@ export async function GET(req: Request) { if (cookieHeader) headers.cookie = cookieHeader; if (ma_at) headers.authorization = `Bearer ${ma_at}`; - const res = await fetch(url, { headers, cache: "no-store" }); - const body = await res.json().catch(() => ({})); + const res = await fetch(url, { headers, cache: "no-store" }); + const text = await res.text().catch(() => ""); + let body: any; try { body = text ? JSON.parse(text) : {}; } catch { body = {}; } return new NextResponse(JSON.stringify(body), { status: res.status, - headers: { - "content-type": "application/json", - "cache-control": "no-store", - }, + headers: { "content-type": "application/json", "cache-control": "no-store" }, }); } diff --git a/app/api/options/laser_source/route.ts b/app/api/options/laser_source/route.ts index fc4ca460..f6b84678 100644 --- a/app/api/options/laser_source/route.ts +++ b/app/api/options/laser_source/route.ts @@ -4,51 +4,36 @@ export const dynamic = "force-dynamic"; import { NextRequest, NextResponse } from "next/server"; const BASE = (process.env.DIRECTUS_URL || "").replace(/\/$/, ""); -function nmForTarget(target?: string | null) { - // Optional: narrow list per tab; adjust if your data differs. - switch (target) { - case "fiber": return 1064; - case "uv": return 355; - case "co2-galvo": - case "co2-gantry": return 10600; - default: return null; - } -} - export async function GET(req: NextRequest) { try { - const ma_at = req.cookies.get("ma_at")?.value; - if (!ma_at) return NextResponse.json({ error: "Not authenticated" }, { status: 401 }); + const userAt = req.cookies.get("ma_at")?.value; + if (!userAt) return NextResponse.json({ error: "Not authenticated" }, { status: 401 }); - const target = req.nextUrl.searchParams.get("target"); // "fiber" | "uv" | "co2-galvo" | "co2-gantry" const url = new URL(`${BASE}/items/laser_source`); - // Your collection has make/model (no single "name") - url.searchParams.set("fields", "id,make,model,nm"); + // IMPORTANT: schema uses submission_id as the FK target + url.searchParams.set("fields", "submission_id,make,model,nm"); url.searchParams.set("sort", "make,model"); - const nm = nmForTarget(target); - if (nm != null) { - url.searchParams.set("filter[nm][_eq]", String(nm)); - } - const res = await fetch(String(url), { - headers: { Accept: "application/json", Authorization: `Bearer ${ma_at}` }, + headers: { Accept: "application/json", Authorization: `Bearer ${userAt}` }, cache: "no-store", }); const text = await res.text().catch(() => ""); + const json = text ? JSON.parse(text) : {}; if (!res.ok) { - return NextResponse.json( - { error: `Directus ${res.status}: ${text || res.statusText}` }, - { status: res.status } - ); + return NextResponse.json({ error: `Directus ${res.status}: ${text || res.statusText}` }, { status: res.status }); } - const json = text ? JSON.parse(text) : { data: [] }; - const data = (json?.data ?? []).map((r: any) => ({ - id: r.id, - label: [r.make, r.model].filter(Boolean).join(" ").trim() || String(r.id), - })); + const rows: Array<{ submission_id: string | number; make?: string; model?: string; nm?: string | number }> = + json?.data ?? []; + + const data = rows + .map((r) => { + const parts = [r.make, r.model, r.nm ? `${r.nm}nm` : null].filter(Boolean); + return { id: r.submission_id, label: parts.join(" ") }; + }) + .filter((x) => x.label); return NextResponse.json({ data }); } catch (e: any) { diff --git a/app/api/options/material_opacity/route.ts b/app/api/options/material_opacity/route.ts index 1dd8d702..9d4ca6ec 100644 --- a/app/api/options/material_opacity/route.ts +++ b/app/api/options/material_opacity/route.ts @@ -6,31 +6,28 @@ const BASE = (process.env.DIRECTUS_URL || "").replace(/\/$/, ""); export async function GET(req: NextRequest) { try { - const ma_at = req.cookies.get("ma_at")?.value; - if (!ma_at) return NextResponse.json({ error: "Not authenticated" }, { status: 401 }); + const userAt = req.cookies.get("ma_at")?.value; + if (!userAt) return NextResponse.json({ error: "Not authenticated" }, { status: 401 }); const url = new URL(`${BASE}/items/material_opacity`); url.searchParams.set("fields", "id,opacity"); - url.searchParams.set("sort", "sort,opacity"); + url.searchParams.set("sort", "opacity"); const res = await fetch(String(url), { - headers: { Accept: "application/json", Authorization: `Bearer ${ma_at}` }, + headers: { Accept: "application/json", Authorization: `Bearer ${userAt}` }, cache: "no-store", }); const text = await res.text().catch(() => ""); + const json = text ? JSON.parse(text) : {}; if (!res.ok) { - return NextResponse.json( - { error: `Directus ${res.status}: ${text || res.statusText}` }, - { status: res.status } - ); + return NextResponse.json({ error: `Directus ${res.status}: ${text || res.statusText}` }, { status: res.status }); } - const json = text ? JSON.parse(text) : { data: [] }; - const data = (json?.data ?? []).map((r: any) => ({ - id: r.id, - label: r.opacity ?? String(r.id), - })); + const rows: Array<{ id: number | string; opacity?: string | number }> = json?.data ?? []; + const data = rows + .map(({ id, opacity }) => ({ id, label: String(opacity ?? "") })) + .filter((x) => x.label); return NextResponse.json({ data }); } catch (e: any) { diff --git a/app/components/forms/SettingsSubmit.tsx b/app/components/forms/SettingsSubmit.tsx index ff691599..69b05d23 100644 --- a/app/components/forms/SettingsSubmit.tsx +++ b/app/components/forms/SettingsSubmit.tsx @@ -168,14 +168,14 @@ export default function SettingsSubmit({ initialTarget }: { initialTarget?: Targ }; }, []); - // Prefer username; then email; then names/display; lastly short id + // Prefer username; then display_name; then full name; then email. const meLabel = (me?.username && me.username.trim()) || - (me?.email && me.email.trim()) || - ([me?.first_name, me?.last_name].filter(Boolean).join(" ").trim()) || (me?.display_name && me.display_name.trim()) || - (me?.id && `User ${shortId(me.id)}`) || - "Unknown user"; + ([me?.first_name, me?.last_name].filter(Boolean).join(" ").trim()) || + (me?.email && me.email.trim()) || + ""; + // Options const mats = useOptions("material"); diff --git a/makearmy-app.zip b/makearmy-app1131.zip similarity index 85% rename from makearmy-app.zip rename to makearmy-app1131.zip index 71180d84298442df2c05960fa2ef544dc2758ff6..e34d9bc5605aa10909a82aeb3030cceb49f07e21 100644 GIT binary patch delta 14120 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 Nv9OT8q1TUC{|CV&YI6Vp