import { useState, useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; import { useForm } from 'react-hook-form'; import { useRecoilValue } from 'recoil'; import store from '~/store'; import { localize } from '~/localization/Translation'; import { useRegisterUserMutation, TRegisterUser, useGetStartupConfig, } from '@librechat/data-provider'; import { GoogleIcon, OpenIDIcon, GithubIcon, DiscordIcon } from '~/components'; function Registration() { const navigate = useNavigate(); const { data: startupConfig } = useGetStartupConfig(); const lang = useRecoilValue(store.lang); const { register, watch, handleSubmit, formState: { errors }, } = useForm({ mode: 'onChange' }); const [error, setError] = useState(false); const [errorMessage, setErrorMessage] = useState(''); const registerUser = useRegisterUserMutation(); const password = watch('password'); const onRegisterUserFormSubmit = (data: TRegisterUser) => { registerUser.mutate(data, { onSuccess: () => { navigate('/chat/new'); }, onError: (error) => { setError(true); //@ts-ignore - error is of type unknown if (error.response?.data?.message) { //@ts-ignore - error is of type unknown setErrorMessage(error.response?.data?.message); } }, }); }; useEffect(() => { if (startupConfig?.registrationEnabled === false) { navigate('/login'); } }, [startupConfig, navigate]); return (

{localize(lang, 'com_auth_create_account')}

{error && (
{localize(lang, 'com_auth_error_create')} {errorMessage}
)}
onRegisterUserFormSubmit(data))} >
{errors.name && ( {/* @ts-ignore not sure why*/} {errors.name.message} )}
{errors.username && ( {/* @ts-ignore not sure why */} {errors.username.message} )}
{errors.email && ( {/* @ts-ignore - Type 'string | FieldError | Merge> | undefined' is not assignable to type 'ReactNode' */} {errors.email.message} )}
{errors.password && ( {/* @ts-ignore not sure why */} {errors.password.message} )}
{ // e.preventDefault(); // return false; // }} {...register('confirm_password', { validate: (value) => value === password || localize(lang, 'com_auth_password_not_match'), })} aria-invalid={!!errors.confirm_password} className="peer block w-full appearance-none rounded-t-md border-0 border-b-2 border-gray-300 bg-gray-50 px-2.5 pb-2.5 pt-5 text-sm text-gray-900 focus:border-green-500 focus:outline-none focus:ring-0" placeholder=" " >
{errors.confirm_password && ( {/* @ts-ignore not sure why */} {errors.confirm_password.message} )}

{' '} {localize(lang, 'com_auth_already_have_account')}{' '} {localize(lang, 'com_auth_login')}

{startupConfig?.socialLoginEnabled && ( <>
Or
)} {startupConfig?.googleLoginEnabled && startupConfig?.socialLoginEnabled && ( <> )} {startupConfig?.openidLoginEnabled && startupConfig?.socialLoginEnabled && ( <> )} {startupConfig?.githubLoginEnabled && startupConfig?.socialLoginEnabled && ( <> )} {startupConfig?.discordLoginEnabled && startupConfig?.socialLoginEnabled && ( <> )}
); } export default Registration;