"use client"; import { useState } from "react"; import { useDispatch } from "react-redux"; import { useRouter } from "next/navigation"; import { setToken } from "@/redux/slices/authSlice"; import { setProfile } from "@/redux/slices/profileSlice"; import { showToast } from "@/redux/slices/toastSlice"; import authService from "@/services/auth"; import Link from "next/link"; export default function RegisterPage() { const dispatch = useDispatch(); const router = useRouter(); const [formData, setFormData] = useState({ name: "", email: "", password: "", confirmPassword: "", }); const [errors, setErrors] = useState({}); const [isLoading, setIsLoading] = useState(false); const validateForm = () => { const newErrors = {}; if (!formData.name.trim()) { newErrors.name = "نام الزامی است"; } else if (formData.name.trim().length < 3) { newErrors.name = "نام باید حداقل 3 کاراکتر باشد"; } if (!formData.email.trim()) { newErrors.email = "ایمیل الزامی است"; } else if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(formData.email)) { newErrors.email = "ایمیل معتبر نیست"; } if (!formData.password.trim()) { newErrors.password = "رمز عبور الزامی است"; } else if (formData.password.length < 6) { newErrors.password = "رمز عبور باید حداقل 6 کاراکتر باشد"; } if (!formData.confirmPassword.trim()) { newErrors.confirmPassword = "تأیید رمز عبور الزامی است"; } else if (formData.password !== formData.confirmPassword) { newErrors.confirmPassword = "رمز عبور و تأیید آن یکسان نیستند"; } setErrors(newErrors); return Object.keys(newErrors).length === 0; }; const handleChange = (e) => { const { name, value } = e.target; setFormData((prev) => ({ ...prev, [name]: value, })); // پاک کردن error هنگام تایپ if (errors[name]) { setErrors((prev) => ({ ...prev, [name]: "", })); } }; const handleSubmit = async (e) => { e.preventDefault(); if (!validateForm()) { return; } setIsLoading(true); try { const response = await fetch("/api/auth/register", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ name: formData.name, email: formData.email, password: formData.password, }), }); if (!response.ok) { const error = await response.json(); throw new Error(error.message || "خطا در ثبت‌نام"); } const data = await response.json(); dispatch( setProfile( data.user || { name: formData.name, email: formData.email } ) ); dispatch( showToast({ message: "ثبت‌نام شما موفق بود! خوش آمدید", type: "success", }) ); router.push("/"); } catch (error) { dispatch( showToast({ message: error.message || "خطایی در حین ثبت‌نام رخ داد", type: "error", }) ); setErrors((prev) => ({ ...prev, submit: error.message, })); } finally { setIsLoading(false); } }; return (

ثبت‌نام

حساب کاربری جدید ایجاد کنید

{errors.submit && (
{errors.submit}
)}
{/* Name Field */}
{errors.name && (

{errors.name}

)}
{/* Email Field */}
{errors.email && (

{errors.email}

)}
{/* Password Field */}
{errors.password && (

{errors.password}

)}
{/* Confirm Password Field */}
{errors.confirmPassword && (

{errors.confirmPassword}

)}
{/* Submit Button */}
{/* Login Link */}
قبلاً حساب دارید؟{" "} وارد شوید
); }