webapp/src/components/Nav/AuthModal/EmailConfirm.tsx

55 lines
1.6 KiB
TypeScript
Raw Normal View History

2022-10-25 16:25:42 +00:00
import { clsx } from 'clsx'
2023-12-26 10:05:15 +00:00
import { createEffect, createSignal, Show } from 'solid-js'
import { useLocalize } from '../../../context/localize'
import { useSession } from '../../../context/session'
import { useRouter } from '../../../stores/router'
import { hideModal } from '../../../stores/ui'
2024-01-13 14:22:04 +00:00
import { setEmail, email } from './sharedLogic'
import styles from './AuthModal.module.scss'
2022-10-25 16:25:42 +00:00
export const EmailConfirm = () => {
2023-02-17 09:21:02 +00:00
const { t } = useLocalize()
2023-12-24 23:37:30 +00:00
const { changeSearchParams } = useRouter()
2023-12-24 21:12:42 +00:00
const { session, authError } = useSession()
const [emailConfirmed, setEmailConfirmed] = createSignal(false)
2023-12-18 07:52:52 +00:00
2023-12-24 23:37:30 +00:00
createEffect(() => {
2023-12-26 13:06:49 +00:00
const e = session()?.user?.email
const v = session()?.user?.email_verified
if (e) {
2024-01-13 14:22:04 +00:00
setEmail(e.toLowerCase())
2023-12-26 13:06:49 +00:00
if (v) setEmailConfirmed(v)
if (authError()) {
changeSearchParams({}, true)
}
2023-12-24 23:37:30 +00:00
}
})
2024-01-19 22:53:38 +00:00
createEffect(() => {
if (authError()) console.debug('[AuthModal.EmailConfirm] auth error: ', authError())
})
2022-10-25 16:25:42 +00:00
return (
<div>
2023-12-24 21:12:42 +00:00
<Show when={authError()}>
2024-01-19 22:53:38 +00:00
<div class={styles.title}>{t('Error')}</div>
<div class={styles.text}>{authError()}</div>
2022-11-14 01:17:12 +00:00
</Show>
2023-12-24 21:12:42 +00:00
<Show when={emailConfirmed()}>
2022-11-14 01:17:12 +00:00
<div class={styles.title}>{t('Hooray! Welcome!')}</div>
2022-10-25 16:25:42 +00:00
<div class={styles.text}>
2024-01-13 14:22:04 +00:00
{t("You've confirmed email")} {email().toLowerCase()}
2022-10-25 16:25:42 +00:00
</div>
2022-11-14 01:17:12 +00:00
<div>
<button class={clsx('button', styles.submitButton)} onClick={() => hideModal()}>
{t('Go to main page')}
</button>
</div>
2022-10-25 16:25:42 +00:00
</Show>
</div>
)
}