import * as React from 'react'; import { useNavigate, Link as RouterLink } from 'react-router-dom'; import Paper from '@mui/material/Paper'; import Link from '@mui/material/Link'; import Typography from '@mui/material/Typography'; import LoadingButton from '@mui/lab/LoadingButton'; import useAuthentication from 'hooks/useAuthentication'; import useCloud from 'hooks/useCloud'; import * as URLS from 'config/urls'; import Form from 'components/Form'; import TextField from 'components/TextField'; import useFormatMessage from 'hooks/useFormatMessage'; import useCreateAccessToken from 'hooks/useCreateAccessToken'; import { Alert } from '@mui/material'; function LoginForm() { const isCloud = useCloud(); const navigate = useNavigate(); const formatMessage = useFormatMessage(); const authentication = useAuthentication(); const { mutateAsync: createAccessToken, isPending: loading, error, isError, } = useCreateAccessToken(); React.useEffect(() => { if (authentication.isAuthenticated) { navigate(URLS.DASHBOARD); } }, [authentication.isAuthenticated]); const handleSubmit = async (values) => { try { const { email, password } = values; const { data } = await createAccessToken({ email, password, }); const { token } = data; authentication.updateToken(token); } catch {} }; const renderError = () => { const errors = error?.response?.data?.errors?.general || [ formatMessage('loginForm.error'), ]; return errors.map((error) => ( {error} )); }; return ( theme.palette.text.disabled, pb: 2, mb: 2, }} gutterBottom > {formatMessage('loginForm.title')}
{isCloud && ( {formatMessage('loginForm.forgotPasswordText')} )} {isError && renderError()} {formatMessage('loginForm.submit')} {isCloud && ( {formatMessage('loginForm.noAccount')}   {formatMessage('loginForm.signUp')} )}
); } export default LoginForm;