// 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, horFlexClasses, horFlexClassesNoSm } from 'shared/utils.mjs' // Components import Link from 'next/link' import { Robot } from 'shared/components/robot/index.mjs' import { LeftIcon, HelpIcon, GoogleIcon, GitHubIcon, KeyIcon, SettingsIcon, EmailIcon, } 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 export const ns = ['susi', 'errors'] export const SignUp = () => { // Context const { setModal } = useContext(ModalContext) const backend = useBackend() const { t, i18n } = useTranslation(ns) 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('susi:err2')}

{t('susi:err3')}

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

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

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

{t('susi:checkYourInbox')} FreeSewing.org

{t('susi:clickSignupLink')}

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

{t('susi:err2')}

{t('susi:err3')}

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

{t('toReceiveSignupLink')}:

{['Google', 'Github'].map((provider) => ( ))}
{t('susi:signInHere')} {t('susi:migrateV2Account')} )}
) }