import axios from 'axios';
import { useEffect, useMemo, useState } from 'react';
import { toast } from 'react-toastify';
import BackendError, { ErrorInfo } from '../../components/BackendError';
import SubmitButton from '../../components/Common/SubmitButton';
import TextInput from '../../components/Common/TextInput';
import { useAuth } from '../../context/AuthContext';
import { useConceptNavigation } from '../../context/NagivationContext';
import { IUserUpdatePassword } from '../../models/library';
function ProcessError({error}: {error: ErrorInfo}): React.ReactElement {
if (axios.isAxiosError(error) && error.response && error.response.status === 400) {
return (
Неверно введен старый пароль
);
} else {
return ();
}
}
function EditorPassword() {
const { navigateTo } = useConceptNavigation();
const { updatePassword, error, setError, loading } = useAuth();
const [oldPassword, setOldPassword] = useState('');
const [newPassword, setNewPassword] = useState('');
const [newPasswordRepeat, setNewPasswordRepeat] = useState('');
const passwordColor = useMemo(
() => {
return !!newPassword && !!newPasswordRepeat && newPassword !== newPasswordRepeat ? 'clr-warning' : 'clr-input';
}, [newPassword, newPasswordRepeat]);
const canSubmit = useMemo(
() => {
return !!oldPassword && !!newPassword && !!newPasswordRepeat && newPassword === newPasswordRepeat;
}, [newPassword, newPasswordRepeat, oldPassword]);
function handleSubmit(event: React.FormEvent) {
event.preventDefault();
if (newPassword !== newPasswordRepeat) {
toast.error('Пароли не совпадают');
return;
}
const data: IUserUpdatePassword = {
old_password: oldPassword,
new_password: newPassword,
};
updatePassword(data, () => {
toast.success('Изменения сохранены');
navigateTo('/login');
});
}
useEffect(() => {
setError(undefined);
}, [newPassword, oldPassword, newPasswordRepeat, setError]);
return (
)
}
export default EditorPassword;