import * as React from 'react'; import { useNavigate } from 'react-router-dom'; import { useMutation } from '@apollo/client'; import Paper from '@mui/material/Paper'; import Typography from '@mui/material/Typography'; import LoadingButton from '@mui/lab/LoadingButton'; import * as yup from 'yup'; import { yupResolver } from '@hookform/resolvers/yup'; import useAuthentication from 'hooks/useAuthentication'; import * as URLS from 'config/urls'; import { CREATE_USER } from 'graphql/mutations/create-user.ee'; import Form from 'components/Form'; import TextField from 'components/TextField'; import { LOGIN } from 'graphql/mutations/login'; import useFormatMessage from 'hooks/useFormatMessage'; const validationSchema = yup.object().shape({ fullName: yup.string().trim().required('signupForm.mandatoryInput'), email: yup .string() .trim() .email('signupForm.validateEmail') .required('signupForm.mandatoryInput'), password: yup.string().required('signupForm.mandatoryInput'), confirmPassword: yup .string() .required('signupForm.mandatoryInput') .oneOf([yup.ref('password')], 'signupForm.passwordsMustMatch'), }); const initialValues = { fullName: '', email: '', password: '', confirmPassword: '', }; function SignUpForm() { const navigate = useNavigate(); const authentication = useAuthentication(); const formatMessage = useFormatMessage(); const [createUser] = useMutation(CREATE_USER); const [login, { loading }] = useMutation(LOGIN); React.useEffect(() => { if (authentication.isAuthenticated) { navigate(URLS.DASHBOARD); } }, [authentication.isAuthenticated]); const handleSubmit = async (values: any) => { const { fullName, email, password } = values; await createUser({ variables: { input: { fullName, email, password }, }, }); const { data } = await login({ variables: { input: { email, password }, }, }); const { token } = data.login; authentication.updateToken(token); }; return ( theme.palette.text.disabled, pb: 2, mb: 2, }} gutterBottom > {formatMessage('signupForm.title')}
( <> {formatMessage('signupForm.submit')} )} /> ); } export default SignUpForm;