2022-10-25 16:25:42 +00:00
|
|
|
import { clsx } from 'clsx'
|
2024-02-04 11:25:21 +00:00
|
|
|
import { Show, createEffect, createSignal } from 'solid-js'
|
2023-11-14 15:10:00 +00:00
|
|
|
|
2024-06-24 17:50:27 +00:00
|
|
|
import { useUI } from '~/context/ui'
|
2023-11-14 15:10:00 +00:00
|
|
|
import { useLocalize } from '../../../context/localize'
|
|
|
|
import { useSession } from '../../../context/session'
|
|
|
|
|
2024-02-04 11:25:21 +00:00
|
|
|
import { email, setEmail } from './sharedLogic'
|
2024-01-13 14:22:04 +00:00
|
|
|
|
2024-06-24 17:50:27 +00:00
|
|
|
import { useSearchParams } from '@solidjs/router'
|
2023-11-14 15:10:00 +00:00
|
|
|
import styles from './AuthModal.module.scss'
|
2022-10-25 16:25:42 +00:00
|
|
|
|
2024-06-25 19:10:00 +00:00
|
|
|
export type ConfirmEmailSearchParams = {
|
|
|
|
access_token?: string
|
|
|
|
token?: string
|
|
|
|
}
|
|
|
|
|
2022-10-25 16:25:42 +00:00
|
|
|
export const EmailConfirm = () => {
|
2023-02-17 09:21:02 +00:00
|
|
|
const { t } = useLocalize()
|
2024-06-24 17:50:27 +00:00
|
|
|
const { hideModal } = useUI()
|
2024-06-25 19:10:00 +00:00
|
|
|
const [, changeSearchParams] = useSearchParams<ConfirmEmailSearchParams>()
|
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(() => {
|
2024-03-07 08:07:46 +00:00
|
|
|
const email = session()?.user?.email
|
|
|
|
const isVerified = session()?.user?.email_verified
|
|
|
|
|
|
|
|
if (email) {
|
|
|
|
setEmail(email.toLowerCase())
|
|
|
|
if (isVerified) setEmailConfirmed(isVerified)
|
2023-12-26 13:06:49 +00:00
|
|
|
if (authError()) {
|
2024-06-24 17:50:27 +00:00
|
|
|
changeSearchParams({}, { replace: true })
|
2023-12-26 13:06:49 +00:00
|
|
|
}
|
2023-12-24 23:37:30 +00:00
|
|
|
}
|
|
|
|
|
2024-03-07 08:07:46 +00:00
|
|
|
if (authError()) {
|
|
|
|
console.debug('[AuthModal.EmailConfirm] auth error:', authError())
|
|
|
|
}
|
2024-01-19 22:53:38 +00:00
|
|
|
})
|
|
|
|
|
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>
|
|
|
|
)
|
|
|
|
}
|