// Hooks import { useEffect, useState } from 'react' import { useApp } from 'site/hooks/useApp.mjs' import { useBackend } from 'site/hooks/useBackend.mjs' import { useToast } from 'site/hooks/useToast.mjs' import { useRouter } from 'next/router' import { useTranslation } from 'next-i18next' // Dependencies import { serverSideTranslations } from 'next-i18next/serverSideTranslations' import Link from 'next/link' // Components import { PageWrapper, ns as pageNs } from 'site/components/wrappers/page.mjs' import { BareLayout } from 'site/components/layouts/bare.mjs' import { Spinner } from 'shared/components/spinner.mjs' import { Robot } from 'shared/components/robot/index.mjs' import { BackToAccountButton } from 'site/components/account/shared.mjs' import { HelpIcon } from 'shared/components/icons.mjs' // Translation namespaces used on this page const ns = Array.from(new Set([...pageNs, 'account'])) const ConfirmSignUpPage = (props) => { const app = useApp(props) const backend = useBackend(app) const toast = useToast() const { t } = useTranslation(ns) const router = useRouter() const [error, setError] = useState(false) // Get confirmation ID and check from url const [id, check] = router.asPath.slice(1).split('/').slice(2) useEffect(() => { // Async inside useEffect requires this approach const confirmEmail = async () => { app.startLoading() const result = await backend.loadConfirmation({ id, check }) if (result?.result === 'success' && result.confirmation) { const changed = await backend.updateAccount({ confirm: 'emailchange', confirmation: result.confirmation.id, check: result.confirmation.check, }) if (changed) { app.stopLoading() setError(false) toast.for.settingsSaved() router.push('/account') } else { app.stopLoading() setError(true) } } else { app.stopLoading() setError(true) } } // Call async methods if (app.token) confirmEmail() }, [id, check, app.token]) // Short-circuit errors if (error) return ( {t('account:politeOhCrap')} {t('account:vagueError')} {t('contactSupport')} ) return ( {t('account:oneMomentPlease')} ) } export default ConfirmSignUpPage export async function getStaticProps({ locale }) { return { props: { ...(await serverSideTranslations(locale, ns)), }, } } export async function getStaticPaths() { return { paths: [], fallback: true, } }
{t('account:vagueError')}