import axios from 'axios';
import { useEffect, useState } from 'react';
import { useLocation, useNavigate } from 'react-router-dom';
import BackendError, { ErrorInfo } from '../components/BackendError';
import Form from '../components/Common/Form';
import SubmitButton from '../components/Common/SubmitButton';
import TextInput from '../components/Common/TextInput';
import TextURL from '../components/Common/TextURL';
import { useAuth } from '../context/AuthContext';
import { useConceptTheme } from '../context/ThemeContext';
import { IUserLoginData } from '../utils/models';
function ProcessError({error}: {error: ErrorInfo}): React.ReactElement {
if (axios.isAxiosError(error) && error.response && error.response.status === 400) {
return (
На Портале отсутствует такое сочетание имени пользователя и пароля
);
} else {
return ( );
}
}
function LoginPage() {
const {mainHeight} = useConceptTheme();
const location = useLocation();
const navigate = useNavigate();
const search = useLocation().search;
const { user, login, loading, error, setError } = useAuth();
const [username, setUsername] = useState('');
const [password, setPassword] = useState('');
useEffect(() => {
const name = new URLSearchParams(search).get('username');
setUsername(name ?? '');
setPassword('');
}, [search]);
useEffect(() => {
setError(undefined);
}, [username, password, setError]);
function handleSubmit(event: React.FormEvent) {
event.preventDefault();
if (!loading) {
const data: IUserLoginData = {
username: username,
password: password
};
login(data, () => {
if (location.key !== 'default') {
navigate(-1);
} else {
navigate('/library');
}
});
}
}
return (
{ user &&
{`Вы вошли в систему как ${user.username}`}
}
{ !user &&
}
);
}
export default LoginPage;