"use client" import { useState } from "react" import { useRouter } from "next/navigation" import Link from "next/link" import type { User, Player } from "@prisma/client" interface EditUserFormProps { user: User & { player?: Player | null }; availablePlayers: Player[]; } export default function EditUserForm({ user, availablePlayers }: EditUserFormProps) { const router = useRouter() const [formData, setFormData] = useState({ email: user.email, name: user.name || "", role: user.role, playerId: user.playerId?.toString() || "", }) const [error, setError] = useState("") const [success, setSuccess] = useState("") const [loading, setLoading] = useState(false) const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setError("") setSuccess("") setLoading(true) try { const response = await fetch(`/api/admin/users/${user.id}`, { method: "PUT", headers: { "Content-Type": "application/json" }, body: JSON.stringify(formData), }) if (!response.ok) { try { const errorData = await response.json() throw new Error(errorData.error || "Failed to update user") } catch (jsonError) { if (jsonError instanceof Error && jsonError.message !== "Failed to update user") { throw jsonError } throw new Error(`Failed to update user: ${response.status} ${response.statusText}`) } } setSuccess("User updated successfully!") setTimeout(() => { router.push("/admin/users") }, 1500) } catch (err) { if (err instanceof Error) { setError(err.message) } else { setError("An unknown error occurred") } } finally { setLoading(false) } } return (
) }