'use client'; import { useState } from 'react'; import { Button } from '@/components/ui/button'; import GoogleIcon from '../../../../public/icons/google.svg'; import { InputField } from '@/components/ui/inputfield'; import { validate, registerUser } from './register'; import { useAuthContext } from '@/lib/contexts/Auth.context'; import Image from 'next/image'; import { useRouter } from 'next/navigation'; export default function RegisterForm({ redirectTo }: { redirectTo?: string }) { const [errors, setErrors] = useState({}); const [loading, setLoading] = useState(false); const router = useRouter(); const { setUser } = useAuthContext(); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setLoading(true); setErrors({}); const formData = new FormData(e.currentTarget); const username = formData.get('username')?.toString() || ''; const email = formData.get('email')?.toString() || ''; const password = formData.get('password')?.toString() || ''; const passwordConfirm = formData.get('passwordConfirm')?.toString() || ''; const validationErrors = validate( username, email, password, passwordConfirm, ); if (Object.keys(validationErrors).length > 0) { setErrors(validationErrors); setLoading(false); return; } const { data, error } = await registerUser(username, email, password); if (error) { setErrors(error); } else if (data) { setUser(data); if (redirectTo) router.push(redirectTo); } setLoading(false); }; return (
{errors.username && (

{errors.username}

)}
{errors.email && (

{errors.email}

)}
{errors.password && (

{errors.password}

)}
{errors.passwordConfirm && (

{errors.passwordConfirm}

)}
{errors.general &&

{errors.general}

}
); }