"use client"; import { useRouter } from "next/navigation"; import { useState } from "react"; import SubmitDialogButton from "./submit-dialog-button"; import DeleteAccount from "./delete-account"; import { displayNameSchema, usernameSchema } from "@/lib/schemas"; import dayjs from "dayjs"; export default function ProfileSettings() { const router = useRouter(); const [displayName, setDisplayName] = useState(""); const [username, setUsername] = useState(""); const [displayNameChangeError, setDisplayNameChangeError] = useState(undefined); const [usernameChangeError, setUsernameChangeError] = useState(undefined); const usernameDate = dayjs().add(90, "days"); const handleSubmitDisplayNameChange = async (close: () => void) => { const parsed = displayNameSchema.safeParse(displayName); if (!parsed.success) { setDisplayNameChangeError(parsed.error.errors[0].message); return; } const response = await fetch("/api/auth/display-name", { method: "PATCH", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ displayName }), }); if (!response.ok) { const { error } = await response.json(); setDisplayNameChangeError(error); return; } close(); router.refresh(); }; const handleSubmitUsernameChange = async (close: () => void) => { const parsed = usernameSchema.safeParse(username); if (!parsed.success) { setUsernameChangeError(parsed.error.errors[0].message); return; } const response = await fetch("/api/auth/username", { method: "PATCH", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ username }), }); if (!response.ok) { const { error } = await response.json(); setUsernameChangeError(error); return; } close(); router.refresh(); }; return (

Profile Settings

Update your account info, and username.

{/* Separator */}

Account Info
{/* Change Name */}

This is a display name shown on your profile — feel free to change it anytime

setDisplayName(e.target.value)} />

New display name:

'{displayName}'

{/* Change Username */}

Your unique tag on the site. Can only be changed once every 90 days

setUsername(e.target.value)} /> @

After submitting, you can change it again on{" "} {usernameDate.toDate().toLocaleDateString("en-US", { month: "long", day: "numeric", year: "numeric" })}.

New username:

'@{username}'

{/* Separator */}

Danger Zone
{/* Delete Account */}

This will permanently remove your account and all uploaded Miis. This action cannot be undone

); }