"use client"; import { useState } from "react"; import { useAppDispatch, useAppSelector } from "@/lib/hooks"; import { register } from "@/lib/features/auth/authSlice"; import { useRouter } from "next/navigation"; import { Turnstile } from "nextjs-turnstile"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card"; import { AlertCircle, Loader2 } from "lucide-react"; import Link from "next/link"; import Swal from 'sweetalert2' import { registerSchema } from "@/lib/schemas/register"; export default function RegisterPage() { const [username, setUsername] = useState(""); const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [confirmPassword, setConfirmPassword] = useState(""); const [formErrors, setFormErrors] = useState>({}); const [turnstileToken, setTurnstileToken] = useState(null); const dispatch = useAppDispatch(); const { isLoading, error } = useAppSelector((state) => state.auth); const router = useRouter(); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setFormErrors({}); // Zod Validation const result = registerSchema.safeParse({ username, email, password, confirmPassword }); if (!result.success) { const errors: Record = {}; result.error.issues.forEach((issue) => { const path = issue.path[0]; if (typeof path === 'string') { errors[path] = issue.message; } }); setFormErrors(errors); return; } if (!turnstileToken) { Swal.fire({ icon: 'error', title: 'Hata', text: 'Lütfen doğrulamayı tamamlayın (Turnstile).', }) return; } const dispatchResult = await dispatch(register({ username, email, password })); if (register.fulfilled.match(dispatchResult)) { Swal.fire({ position: "center", icon: "success", title: "Kayıt Başarılı!", text: "Lütfen email adresinize gönderilen doğrulama linkine tıklayarak hesabınızı aktif edin.", showConfirmButton: true, confirmButtonText: "Giriş Yap" }).then(() => { router.push("/login"); }); } }; return ( Kayıt Ol Yeni bir hesap oluşturun
setUsername(e.target.value)} // required validation is now handled by Zod manually on submit /> {formErrors.username &&

{formErrors.username}

}
setEmail(e.target.value)} /> {formErrors.email &&

{formErrors.email}

}
setPassword(e.target.value)} /> {formErrors.password &&

{formErrors.password}

}
setConfirmPassword(e.target.value)} /> {formErrors.confirmPassword &&

{formErrors.confirmPassword}

}
setTurnstileToken(token)} />
{error && (
{error}
)}

Zaten hesabınız var mı?{" "} Giriş Yap

); }