From 50b402e5d9cfedb576d16c3f529ac679caeb61dd Mon Sep 17 00:00:00 2001 From: trafficlunar Date: Thu, 10 Apr 2025 22:52:37 +0100 Subject: [PATCH] fix: wrap username change in try/catch and remove GET function --- src/app/api/auth/username/route.ts | 20 +++++++++----------- src/app/components/username-form.tsx | 2 +- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/app/api/auth/username/route.ts b/src/app/api/auth/username/route.ts index f691bab..9dd62e1 100644 --- a/src/app/api/auth/username/route.ts +++ b/src/app/api/auth/username/route.ts @@ -10,13 +10,6 @@ const usernameSchema = z .max(20, "Username cannot be more than 20 characters long") .regex(/^[a-zA-Z0-9_]+$/, "Username can only contain letters, numbers, and underscores"); -export async function GET() { - const session = await auth(); - if (!session) return NextResponse.json({ error: "Unauthorized" }, { status: 401 }); - - return NextResponse.json({ username: session.user.username }); -} - export async function PATCH(request: Request) { const session = await auth(); if (!session) return NextResponse.json({ error: "Unauthorized" }, { status: 401 }); @@ -30,10 +23,15 @@ export async function PATCH(request: Request) { const existingUser = await prisma.user.findUnique({ where: { username } }); if (existingUser) return NextResponse.json({ error: "Username is already taken" }, { status: 400 }); - await prisma.user.update({ - where: { email: session.user?.email ?? undefined }, - data: { username }, - }); + try { + await prisma.user.update({ + where: { email: session.user?.email ?? undefined }, + data: { username }, + }); + } catch (error) { + console.error("Failed to update username:", error); + return NextResponse.json({ error: "Failed to update username" }, { status: 500 }); + } return NextResponse.json({ success: true }); } diff --git a/src/app/components/username-form.tsx b/src/app/components/username-form.tsx index 4945927..cdab7c4 100644 --- a/src/app/components/username-form.tsx +++ b/src/app/components/username-form.tsx @@ -5,7 +5,7 @@ import { redirect } from "next/navigation"; export default function UsernameForm() { const [username, setUsername] = useState(""); - const [error, setError] = useState(null); + const [error, setError] = useState(undefined); const handleSubmit = async (event: FormEvent) => { event.preventDefault();