// Hooks
import { useState, useContext } from 'react'
import { useBackend } from 'shared/hooks/use-backend.mjs'
import { useTranslation } from 'next-i18next'
import { useLoadingStatus } from 'shared/hooks/use-loading-status.mjs'
// Context
import { ModalContext } from 'shared/context/modal-context.mjs'
// Dependencies
import {
randomString,
validateEmail,
validateTld,
horFlexClasses,
horFlexClassesNoSm,
capitalize,
} from 'shared/utils.mjs'
import { oauthConfig } from 'shared/config/oauth.config.mjs'
// Components
import Link from 'next/link'
import { Robot } from 'shared/components/robot/index.mjs'
import {
LeftIcon,
HelpIcon,
GoogleIcon,
GitHubIcon,
KeyIcon,
SettingsIcon,
EmailIcon,
DownIcon,
} 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 { setLoadingStatus, LoadingStatus } = useLoadingStatus()
const [email, setEmail] = useState('')
const [emailValid, setEmailValid] = useState(false)
const [result, setResult] = useState(false)
const [showAll, setShowAll] = useState(false)
const state = ''
const updateEmail = (value) => {
setEmail(value)
const valid = (validateEmail(value) && validateTld(value)) || false
setEmailValid(valid === true ? true : false)
}
const signupHandler = async (evt) => {
evt.preventDefault()
if (!emailValid) {
setLoadingStatus([true, t('susi:pleaseProvideValidEmail'), true, false])
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(
{t('susi:err2')} {t('susi:err3')}An error occured while trying to process your request
{t('susi:checkYourInbox')} FreeSewing.org
{t('susi:clickSignupLink')}
{t('susi:err2')}
{t('susi:err3')}
{t('toReceiveSignupLink')}:
{showAll ? ( <>