// Hooks import { useState } from 'react' import { useApp } from 'shared/hooks/use-app.mjs' import { useBackend } from 'shared/hooks/use-backend.mjs' import { useTranslation } from 'next-i18next' // Dependencies import { serverSideTranslations } from 'next-i18next/serverSideTranslations' import { validateEmail, validateTld } from 'site/utils.mjs' // Components import Link from 'next/link' import { PageWrapper } from 'shared/components/wrappers/page.mjs' import { BareLayout } from 'site/components/layouts/bare.mjs' import { SusiWrapper } from 'site/components/wrappers/susi.mjs' import { Robot } from 'shared/components/robot/index.mjs' import { EmailValidButton } from 'site/components/buttons/email-valid-button.mjs' import { ButtonText } from '../signin/index.mjs' import { EmailIcon, LeftIcon, RightIcon, WarningIcon, HelpIcon } from 'shared/components/icons.mjs' // Translation namespaces used on this page const namespaces = ['signup', 'errors'] const DarkLink = ({ href, txt }) => ( {txt} ) const SignUpPage = (props) => { const app = useApp(props) const backend = useBackend() const { t, i18n } = useTranslation(namespaces) const [email, setEmail] = useState('') const [emailValid, setEmailValid] = useState(false) const [result, setResult] = useState(false) const [error, setError] = useState(null) const updateEmail = (evt) => { const value = evt.target.value setEmail(value) const valid = (validateEmail(value) && validateTld(value)) || false setEmailValid(valid === true ? true : false) } const signupHandler = async (evt) => { evt.preventDefault() if (!emailValid) return let res try { res = await backend.signUp({ email, language: i18n.language, setResult, }) } catch (err) { setError(app.error(err)) // Here to keep the stupid linter happy console.log(err) } if (res.result === 'success') setResult('success') else { app.setModal(
{t('err2')}
{t('err3')}
{t('checkYourInbox')} FreeSewing.org
{t('clickSignupLink')}
{t('err2')}
{t('err3')}
{t('toReceiveSignupLink')}:
{t('alreadyHaveAnAccount')}