// Hooks import { useState, useContext } from 'react' import { useBackend } from 'shared/hooks/use-backend.mjs' import { useTranslation } from 'next-i18next' // Context import { ModalContext } from 'shared/context/modal-context.mjs' // Dependencies import { validateEmail, validateTld } from 'shared/utils.mjs' // Components import Link from 'next/link' import { Robot } from 'shared/components/robot/index.mjs' import { EmailValidButton } from 'shared/components/buttons/email-valid-button.mjs' import { LeftIcon, HelpIcon } from 'shared/components/icons.mjs' import { ModalWrapper } from 'shared/components/wrappers/modal.mjs' import { EmailInput } from 'shared/components/inputs.mjs' // Translation namespaces used on this page const namespaces = ['signup', 'errors'] const DarkLink = ({ href, txt }) => ( {txt} ) export const SignUp = () => { // Context const { setModal } = useContext(ModalContext) const backend = useBackend() const { t, i18n } = useTranslation(namespaces) const [email, setEmail] = useState('') const [emailValid, setEmailValid] = useState(false) const [result, setResult] = useState(false) const [loading, setLoading] = useState(false) const updateEmail = (value) => { setEmail(value) const valid = (validateEmail(value) && validateTld(value)) || false setEmailValid(valid === true ? true : false) } const signupHandler = async (evt) => { evt.preventDefault() setLoading(true) if (!emailValid) return let res try { res = await backend.signUp({ email, language: i18n.language, setResult, }) } catch (err) { // Here to keep the stupid linter happy console.log(err) } if (res.data.result === 'created') setResult('success') else { setModal(

An error occured while trying to process your request

{t('err2')}

{t('err3')}

{t('contact')}
) } setLoading(false) } const loadingClasses = loading ? 'opacity-50' : '' return ( <>

{result ? ( result === 'success' ? ( {t('emailSent')}! ) : ( An error occured while trying to process your request ) ) : ( {t('signup:createAFreeSewingAccount')} )}

{result ? ( result === 'success' ? ( <>

{t('checkYourInbox')} FreeSewing.org

{t('clickSignupLink')}

{t('contact')}
) : ( <>

{t('err2')}

{t('err3')}

{t('contact')}
) ) : ( <>

{t('toReceiveSignupLink')}:

{t('alreadyHaveAnAccount')}

)} ) }