"use client"; import { useState, type FormEvent } from "react"; import { useRouter } from "next/navigation"; import { TextField, FormError } from "@/components/FormField"; export function RegisterForm() { const router = useRouter(); const [error, setError] = useState(null); const [loading, setLoading] = useState(false); async function handleSubmit(e: FormEvent) { e.preventDefault(); setError(null); setLoading(true); const data = new FormData(e.currentTarget); const name = String(data.get("name") ?? ""); const email = String(data.get("email") ?? ""); const password = String(data.get("password") ?? ""); try { const createRes = await fetch("/api/customers", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ name, email, password }), }); if (!createRes.ok) { const body = await createRes.json().catch(() => null); setError(body?.errors?.[0]?.message || "Die Registrierung ist fehlgeschlagen. Ist die E-Mail-Adresse schon vergeben?"); setLoading(false); return; } const loginRes = await fetch("/api/customers/login", { method: "POST", headers: { "Content-Type": "application/json" }, credentials: "include", body: JSON.stringify({ email, password }), }); if (!loginRes.ok) { router.push("/login"); return; } router.push("/konto"); router.refresh(); } catch { setError("Verbindung fehlgeschlagen. Bitte versuche es erneut."); setLoading(false); } } return (
{error && {error}} ); }