signal-fix

This commit is contained in:
Untone 2024-02-08 20:30:27 +03:00
parent 5812c84756
commit b33c7e136a

View File

@ -1,5 +1,5 @@
import type { JSX } from 'solid-js' import type { JSX } from 'solid-js'
import { Show, createEffect, createMemo, createSignal } from 'solid-js' import { Show, createMemo, createSignal } from 'solid-js'
import type { AuthModalSearchParams } from './types' import type { AuthModalSearchParams } from './types'
import { clsx } from 'clsx' import { clsx } from 'clsx'
@ -41,7 +41,6 @@ export const RegisterForm = () => {
const [isSubmitting, setIsSubmitting] = createSignal(false) const [isSubmitting, setIsSubmitting] = createSignal(false)
const [isSuccess, setIsSuccess] = createSignal(false) const [isSuccess, setIsSuccess] = createSignal(false)
const [validationErrors, setValidationErrors] = createSignal<ValidationErrors>({}) const [validationErrors, setValidationErrors] = createSignal<ValidationErrors>({})
const [infoEmailMessage, setInfoEmailMessage] = createSignal<boolean>(false)
const [passwordError, setPasswordError] = createSignal<string>() const [passwordError, setPasswordError] = createSignal<string>()
const [emailStatus, setEmailStatus] = createSignal<string>('') const [emailStatus, setEmailStatus] = createSignal<string>('')
@ -93,7 +92,6 @@ export const RegisterForm = () => {
return return
} }
setIsSubmitting(true) setIsSubmitting(true)
setInfoEmailMessage(false)
try { try {
const opts = { const opts = {
given_name: cleanName, given_name: cleanName,
@ -115,7 +113,6 @@ export const RegisterForm = () => {
const handleCheckEmailStatus = (status: EmailStatus | string) => { const handleCheckEmailStatus = (status: EmailStatus | string) => {
switch (status) { switch (status) {
case 'not verified': case 'not verified':
setInfoEmailMessage(true)
setValidationErrors((prev) => ({ setValidationErrors((prev) => ({
...prev, ...prev,
email: ( email: (
@ -133,7 +130,6 @@ export const RegisterForm = () => {
break break
case 'verified': case 'verified':
setInfoEmailMessage(true)
setValidationErrors((prev) => ({ setValidationErrors((prev) => ({
email: ( email: (
<> <>
@ -159,7 +155,7 @@ export const RegisterForm = () => {
})) }))
break break
default: default:
setInfoEmailMessage(false) console.info('[RegisterForm] email is not registered')
break break
} }
} }
@ -167,6 +163,7 @@ export const RegisterForm = () => {
const handleEmailBlur = async () => { const handleEmailBlur = async () => {
if (validateEmail(email())) { if (validateEmail(email())) {
const checkResult = await isRegistered(email()) const checkResult = await isRegistered(email())
setEmailStatus(checkResult)
handleCheckEmailStatus(checkResult) handleCheckEmailStatus(checkResult)
} }
} }
@ -190,6 +187,7 @@ export const RegisterForm = () => {
<input <input
name="fullName" name="fullName"
type="text" type="text"
disabled={emailStatus()}
placeholder={t('Full name')} placeholder={t('Full name')}
autocomplete="one-time-code" autocomplete="one-time-code"
onInput={(event) => handleNameInput(event.currentTarget.value)} onInput={(event) => handleNameInput(event.currentTarget.value)}
@ -202,7 +200,7 @@ export const RegisterForm = () => {
<div <div
class={clsx('pretty-form__item', { class={clsx('pretty-form__item', {
'pretty-form__item--error': validationErrors().email && !infoEmailMessage(), 'pretty-form__item--error': validationErrors().email && !emailStatus(),
})} })}
> >
<input <input
@ -215,7 +213,7 @@ export const RegisterForm = () => {
onBlur={handleEmailBlur} onBlur={handleEmailBlur}
/> />
<label for="email">{t('Email')}</label> <label for="email">{t('Email')}</label>
<div class={clsx(styles.validationError, styles.info, { [styles.info]: infoEmailMessage() })}> <div class={clsx(styles.validationError, styles.info, { [styles.info]: emailStatus() })}>
{validationErrors().email} {validationErrors().email}
</div> </div>
</div> </div>