import { Show } from 'solid-js/web' import { t } from '../../../utils/intl' import styles from './AuthModal.module.scss' import { clsx } from 'clsx' import { createSignal, JSX } from 'solid-js' import { useRouter } from '../../../stores/router' import { email, setEmail } from './sharedLogic' import type { AuthModalSearchParams } from './types' import { isValidEmail } from './validators' import { checkEmail, register } from '../../../stores/auth' import { ApiError } from '../../../utils/apiClient' type FormFields = { email: string } type ValidationErrors = Partial> export const ForgotPasswordForm = () => { const { changeSearchParam } = useRouter() const handleEmailInput = (newEmail: string) => { setValidationErrors(({ email: _notNeeded, ...rest }) => rest) setEmail(newEmail) } const [submitError, setSubmitError] = createSignal('') const [isSubmitting, setIsSubmitting] = createSignal(false) const [validationErrors, setValidationErrors] = createSignal({}) const handleSubmit = async (event: Event) => { event.preventDefault() setSubmitError('') const newValidationErrors: ValidationErrors = {} if (!email()) { newValidationErrors.email = t('Please enter email') } else if (!isValidEmail(email())) { newValidationErrors.email = t('Invalid email') } setValidationErrors(newValidationErrors) const isValid = Object.keys(newValidationErrors).length === 0 if (!isValid) { return } setIsSubmitting(true) try { // TODO: send mail with link to new password form } catch (error) { setSubmitError(error.message) } finally { setIsSubmitting(false) } } return (

{t('Forgot password?')}

{t('Everything is ok, please give us your email address')}
  • {submitError()}
handleEmailInput(event.currentTarget.value)} />
changeSearchParam('mode', 'login')}> {t('I know the password')}
) }