import type { ConfirmEmailSearchParams } from './types' import { clsx } from 'clsx' import { createEffect, createMemo, createSignal, onMount, Show } from 'solid-js' import { useLocalize } from '../../../context/localize' import { useSession } from '../../../context/session' import { ApiError } from '../../../graphql/error' import { useRouter } from '../../../stores/router' import { hideModal } from '../../../stores/ui' import styles from './AuthModal.module.scss' export const EmailConfirm = () => { const { t } = useLocalize() const { actions: { confirmEmail, loadSession, loadAuthor }, session, } = useSession() const [confirmedEmail, setConfirmedEmail] = createSignal(false) const [isTokenExpired, setIsTokenExpired] = createSignal(false) const [isTokenInvalid, setIsTokenInvalid] = createSignal(false) const { searchParams, changeSearchParam } = useRouter() onMount(async () => { const token = searchParams().access_token if (token) { changeSearchParam({}) try { await confirmEmail({ token }) await loadSession() await loadAuthor() } catch (error) { // TODO: adapt this code to authorizer if (error instanceof ApiError) { if (error.code === 'token_expired') { setIsTokenExpired(true) return } if (error.code === 'token_invalid') { setIsTokenInvalid(true) return } } console.log(error) } } }) createEffect(() => { const confirmed = session()?.user?.email_verified if (confirmed) { console.debug(`[EmailConfirm] email successfully verified`) setConfirmedEmail(confirmed) } }) const email = createMemo(() => session()?.user?.email) return (
{/* TODO: texts */}
Ссылка больше не действительна
Неправильная ссылка
{t('Hooray! Welcome!')}
{t("You've confirmed email")} {email()}
) }