"use client"; import { useState } from "react"; import { Eye, EyeOff } from "lucide-react"; interface Props { user: any; setUser: (user: any) => void; onClose: () => void; } export default function UsernameTab({ user, setUser, onClose }: Props) { const [newUsername, setNewUsername] = useState(""); const [currentPassword, setCurrentPassword] = useState(""); const [errorMsg, setErrorMsg] = useState(""); const [successMsg, setSuccessMsg] = useState(""); const [isSubmitting, setIsSubmitting] = useState(false); const [showCurrent, setShowCurrent] = useState(false); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setIsSubmitting(true); setErrorMsg(""); setSuccessMsg(""); try { const res = await fetch('/api/auth/change-username', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ currentPassword, newUsername }), }); const data = await res.json(); if (res.ok) { setSuccessMsg("Username changed successfully!"); setCurrentPassword(""); setNewUsername(""); if (user) { setUser({ ...user, username: data.newUsername }); } } else { setErrorMsg(data.error || "Failed to change username."); } } catch (err: any) { setErrorMsg(err.message || "A system error occurred."); } finally { setIsSubmitting(false); } }; return (
{errorMsg && (
{errorMsg}
)} {successMsg && (
{successMsg}
)}
setNewUsername(e.target.value)} required className="w-full rounded-lg border border-border bg-background/50 backdrop-blur-sm px-4 py-2.5 text-sm text-white placeholder-slate-500 focus:border-primary focus:ring-1 focus:ring-primary/50 transition-all focus:outline-none" placeholder="Enter new username (min. 4 characters)" />
setCurrentPassword(e.target.value)} required className="w-full rounded-lg border border-border bg-background/50 backdrop-blur-sm px-4 py-2.5 text-sm text-white placeholder-slate-500 focus:border-primary focus:ring-1 focus:ring-primary/50 transition-all focus:outline-none pr-10" placeholder="Enter password to continue" />
); }