setting owner fixes + laser_soft write update

This commit is contained in:
makearmy 2025-10-01 13:55:47 -04:00
parent 273ca51829
commit 3800cba048
6 changed files with 19 additions and 21 deletions

View file

@ -128,13 +128,8 @@ export async function POST(req: Request) {
if (!setting_title) return NextResponse.json({ error: "Missing required: setting_title" }, { status: 400 });
// Derive uploader from the authenticated user (ignore any spoofed value in body)
const me = await dxGET<any>("/users/me?fields=username,display_name,first_name,last_name,email", bearer);
const uploader =
me?.display_name ||
me?.username ||
[me?.first_name, me?.last_name].filter(Boolean).join(" ") ||
me?.email ||
"user";
const me = await dxGET<any>("/users/me?fields=id,username", bearer);
const uploader = me?.username || "user";
// Relations & numerics
const mat = body?.mat ?? null;
@ -148,7 +143,7 @@ export async function POST(req: Request) {
const setting_notes = String(body?.setting_notes || "").trim();
// Fiber-only
const laser_soft = target === "settings_fiber" ? body?.laser_soft ?? null : undefined;
const laser_soft = body?.laser_soft ?? null;
const repeat_all = target === "settings_fiber" ? num(body?.repeat_all, null) : undefined;
// Upload / accept existing file ids
@ -162,6 +157,7 @@ export async function POST(req: Request) {
const up = await uploadFile(photoFile, (photoFile as File).name, bearer, {
folderNamePath: folderPathFor(target, "photo"),
title: setting_title,
owner: me?.id || null,
});
photo_id = up.id;
}
@ -197,6 +193,7 @@ export async function POST(req: Request) {
photo: photo_id,
screen: screen_id ?? null,
laser_soft: laser_soft,
mat,
mat_coat,
@ -217,7 +214,6 @@ export async function POST(req: Request) {
};
if (target === "settings_fiber") {
payload.laser_soft = laser_soft ?? null;
payload.repeat_all = repeat_all ?? null;
}

View file

@ -6,6 +6,7 @@ import Link from "next/link";
import Image from "next/image";
type Owner = {
username?: string | null;
id?: string | number;
first_name?: string | null;
last_name?: string | null;
@ -36,7 +37,7 @@ export default function CO2GalvoSettingsPage() {
"submission_id",
"setting_title",
"uploader",
"owner.id",
"owner.id", "owner.username",
"owner.first_name",
"owner.last_name",
"owner.email",
@ -64,8 +65,7 @@ export default function CO2GalvoSettingsPage() {
const ownerLabel = (o?: Owner) => {
if (!o) return "—";
const name = [o.first_name, o.last_name].filter(Boolean).join(" ").trim();
return name || o.email || "—";
return o.username || "—";
};
const highlight = (text?: string) => {

View file

@ -6,6 +6,7 @@ import Link from "next/link";
import Image from "next/image";
type Owner = {
username?: string | null;
id?: string | number;
first_name?: string | null;
last_name?: string | null;
@ -36,7 +37,7 @@ export default function CO2GantrySettingsPage() {
"submission_id",
"setting_title",
"uploader",
"owner.id",
"owner.id", "owner.username",
"owner.first_name",
"owner.last_name",
"owner.email",
@ -65,8 +66,7 @@ export default function CO2GantrySettingsPage() {
const ownerLabel = (o?: Owner) => {
if (!o) return "—";
const name = [o.first_name, o.last_name].filter(Boolean).join(" ").trim();
return name || o.email || "—";
return o.username || "—";
};
const highlight = (text?: string) => {

View file

@ -31,7 +31,7 @@ export default function FiberSettingsPage() {
"submission_id",
"setting_title",
"uploader",
"owner.display_name",
"owner.username",
"owner.first_name",
"owner.last_name",
"owner.email",
@ -55,6 +55,8 @@ export default function FiberSettingsPage() {
const ownerName = (row: any) => {
const o = row?.owner || {};
return o.username || "—";
};
return (
o.display_name ||
[o.first_name, o.last_name].filter(Boolean).join(" ") ||

View file

@ -6,6 +6,7 @@ import Link from "next/link";
import Image from "next/image";
type Owner = {
username?: string | null;
id?: string | number;
first_name?: string | null;
last_name?: string | null;
@ -37,7 +38,7 @@ export default function UVSettingsPage() {
"setting_title",
"uploader",
// owner (M2O) minimal, safe fields
"owner.id",
"owner.id", "owner.username",
"owner.first_name",
"owner.last_name",
"owner.email",
@ -65,8 +66,7 @@ export default function UVSettingsPage() {
const ownerLabel = (o?: Owner) => {
if (!o) return "—";
const name = [o.first_name, o.last_name].filter(Boolean).join(" ").trim();
return name || o.email || "—";
return o.username || "—";
};
const highlight = (text?: string) => {

View file

@ -5,13 +5,13 @@ export default function OwnerBadge({
uploader,
className = '',
}: {
owner?: { id?: string | number; display_name?: string } | null;
owner?: { id?: string | number; username?: string } | null;
uploader?: string | null;
className?: string;
}) {
const hasOwner = !!owner?.id;
const label = hasOwner ? 'Owner' : 'Uploader';
const name = owner?.display_name ?? uploader ?? '—';
const name = owner?.username ?? uploader ?? '—';
return (
<span