import React, { useState } from 'react'; import Link from 'next/link'; import { useForm } from 'react-hook-form'; import { useTranslation } from 'react-i18next'; import { useRouter } from 'next/router'; import axios from 'axios'; import Field from '../../common/Field'; import ArrowBigRight from '../../icons/ArrowBigRight'; import RoundedButton from '../../common/RoundedButton'; import Team from '../../icons/Team'; import InviteLink from '../../common/InviteLink'; import Avatar from './Avatar'; import Legal from './Legal'; import { SignUpFormData, SignUpProps } from '../../../model/components/signUp'; import { CustomResponse } from '../../../model/common'; const SignUp: React.FC = ({ departments, teams, selectedTeam, }) => { const { register, formState: { errors }, handleSubmit, getValues, setError, clearErrors, } = useForm(); const { t } = useTranslation(); const router = useRouter(); const [createdTeam, setTeam] = useState(); const [avatar, setAvatar] = useState(); const onCreateTeam = async (): Promise => { if (!getValues('team')) { setError('team', { type: 'required', message: 'EMPTY_TEAM' }); } else { try { const response = await axios.post>( '/api/createTeam', { team: getValues('team'), }, ); if (response.data.ok) { clearErrors('team'); setTeam(response.data.data); } else { setError('team', { message: response.data.error }); } } catch (err) { setError('team', { message: err.message || err.stack || err }); } } }; const onSubmit = async (data: SignUpFormData): Promise => { const { email, existingTeam, password, department, licenseNumber, name } = data; const response = await axios.post>('/api/register', { email, team: selectedTeam || createdTeam || existingTeam, password, departments, licenseNumber, name, department, avatar, isExistingTeam: !selectedTeam && !createdTeam, }); if (response.data?.ok) { router.push('/'); } else if (response.data.error) { setError('email', { message: response.data.error }); } }; return (

Registro

Rellena tus datos, crea o selecciona un equipo al que quieras unirte y regístrate para participar.

La contraseña deberá tener
8 carateres min. /
Mayúsculas, minúsculas y números.

Todos los campos son necesarios

value !== getValues('password') ? 'PASSWORDS_DONT_MATCH' : undefined, })} /> {!selectedTeam ? ( <> clearErrors('team')} /> {createdTeam ? ( ) : (
)} ) : null} } />
); }; export default SignUp;