import { useState } from 'react'; import * as Yup from 'yup'; import { useNavigate } from 'react-router-dom'; import { Form, Formik, FormikHelpers } from 'formik'; import { AuthWrapper } from '@/components/auth-wrapper/authWrapper.tsx'; import { AuthInputs } from '@/components/inputs/authInputs.tsx'; import { AuthButton } from '@/components/buttons/authButton.tsx'; import { useToast } from '@/hooks/useToast.ts'; import { AuthLogo } from '@/components/auth-logo/authLogo.tsx'; import { useAuth } from '@/providers/authProvider.tsx'; import '@/styles/cards.css'; interface FormValues { username: string; password: string; confirmPassword: string; secretKey: string; } export const SignUpPage = () => { const navigate = useNavigate(); const { signUp } = useAuth(); const { toastSuccess } = useToast(); const [respError, setRespError] = useState(''); const initialValues: FormValues = { username: '', password: '', confirmPassword: '', secretKey: '', }; const validationSchema = Yup.object().shape({ username: Yup.string() .min(3, 'Minimum 3 symbol') .required('Required field'), password: Yup.string() .min(6, 'Minimum 6 symbol') .required('Required field'), confirmPassword: Yup.string() .oneOf([Yup.ref('password')], 'Passwords must match') .required('Required field'), secretKey: Yup.string().required('Required field'), }); const handleSubmit = async ( e: FormValues, formikHelpers: FormikHelpers ) => { const { resetForm } = formikHelpers; try { await signUp({ username: e.username, password: e.password, secretKey: e.secretKey, }); toastSuccess('Signed Up successfully.'); navigate('/applications'); resetForm(); } catch (e) { setRespError(typeof e === 'string' ? e : ''); } }; return (
{/*
*/}

Register

) => { handleSubmit(values, formikHelpers); }}> {() => (
{respError && respError}
{}} /> { navigate('/signin'); }} />
)}
); };