notifier-connected
This commit is contained in:
parent
57baccccf2
commit
a405172b76
|
@ -1,7 +1,7 @@
|
||||||
import type { ConfirmEmailSearchParams } from './types'
|
import type { ConfirmEmailSearchParams } from './types'
|
||||||
|
|
||||||
import { clsx } from 'clsx'
|
import { clsx } from 'clsx'
|
||||||
import { createEffect, createSignal, onMount, Show } from 'solid-js'
|
import { createEffect, createMemo, createSignal, onMount, Show } from 'solid-js'
|
||||||
|
|
||||||
import { useLocalize } from '../../../context/localize'
|
import { useLocalize } from '../../../context/localize'
|
||||||
import { useSession } from '../../../context/session'
|
import { useSession } from '../../../context/session'
|
||||||
|
@ -17,9 +17,7 @@ export const EmailConfirm = () => {
|
||||||
actions: { confirmEmail, loadSession, loadAuthor },
|
actions: { confirmEmail, loadSession, loadAuthor },
|
||||||
session,
|
session,
|
||||||
} = useSession()
|
} = useSession()
|
||||||
const [confirmedEmail, setConfirmedEmail] = createSignal<boolean>(
|
const [confirmedEmail, setConfirmedEmail] = createSignal<boolean>(false)
|
||||||
Boolean(session()?.user?.email_verified),
|
|
||||||
)
|
|
||||||
|
|
||||||
const [isTokenExpired, setIsTokenExpired] = createSignal(false)
|
const [isTokenExpired, setIsTokenExpired] = createSignal(false)
|
||||||
const [isTokenInvalid, setIsTokenInvalid] = createSignal(false)
|
const [isTokenInvalid, setIsTokenInvalid] = createSignal(false)
|
||||||
|
@ -28,12 +26,13 @@ export const EmailConfirm = () => {
|
||||||
onMount(async () => {
|
onMount(async () => {
|
||||||
const token = searchParams().access_token
|
const token = searchParams().access_token
|
||||||
if (token) {
|
if (token) {
|
||||||
|
changeSearchParam({})
|
||||||
try {
|
try {
|
||||||
await confirmEmail({ token })
|
await confirmEmail({ token })
|
||||||
await loadSession()
|
await loadSession()
|
||||||
changeSearchParam({})
|
|
||||||
await loadAuthor()
|
await loadAuthor()
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
// TODO: adapt this code to authorizer
|
||||||
if (error instanceof ApiError) {
|
if (error instanceof ApiError) {
|
||||||
if (error.code === 'token_expired') {
|
if (error.code === 'token_expired') {
|
||||||
setIsTokenExpired(true)
|
setIsTokenExpired(true)
|
||||||
|
@ -51,7 +50,15 @@ export const EmailConfirm = () => {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
createEffect(() => setConfirmedEmail(session()?.user?.email_verified))
|
createEffect(() => {
|
||||||
|
const confirmed = session()?.user?.email_verified
|
||||||
|
if (confirmed) {
|
||||||
|
console.debug(`[EmailConfirm] email successfully verified`)
|
||||||
|
setConfirmedEmail(confirmed)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
const email = createMemo(() => session()?.user?.email)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
|
@ -60,7 +67,7 @@ export const EmailConfirm = () => {
|
||||||
<div class={styles.title}>Ссылка больше не действительна</div>
|
<div class={styles.title}>Ссылка больше не действительна</div>
|
||||||
<div class={styles.text}>
|
<div class={styles.text}>
|
||||||
<a href="/?modal=auth&mode=login">
|
<a href="/?modal=auth&mode=login">
|
||||||
{/*TODO: temp solution, should be send link again, but we don't have email here*/}
|
{/*TODO: temp solution, should be send link again */}
|
||||||
Вход
|
Вход
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -69,15 +76,15 @@ export const EmailConfirm = () => {
|
||||||
<div class={styles.title}>Неправильная ссылка</div>
|
<div class={styles.title}>Неправильная ссылка</div>
|
||||||
<div class={styles.text}>
|
<div class={styles.text}>
|
||||||
<a href="/?modal=auth&mode=login">
|
<a href="/?modal=auth&mode=login">
|
||||||
{/*TODO: temp solution, should be send link again, but we don't have email here*/}
|
{/*TODO: temp solution, should be send link again */}
|
||||||
Вход
|
Вход
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</Show>
|
</Show>
|
||||||
<Show when={Boolean(confirmedEmail())}>
|
<Show when={confirmedEmail()}>
|
||||||
<div class={styles.title}>{t('Hooray! Welcome!')}</div>
|
<div class={styles.title}>{t('Hooray! Welcome!')}</div>
|
||||||
<div class={styles.text}>
|
<div class={styles.text}>
|
||||||
{t("You've confirmed email")} {confirmedEmail()}
|
{t("You've confirmed email")} {email()}
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<button class={clsx('button', styles.submitButton)} onClick={() => hideModal()}>
|
<button class={clsx('button', styles.submitButton)} onClick={() => hideModal()}>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user