'use client'; import axios from 'axios'; import clsx from 'clsx'; import { useEffect, useState } from 'react'; import { toast } from 'react-toastify'; import { useConceptNavigation } from '@/app/Navigation/NavigationContext'; import { urls } from '@/app/urls'; import { IChangePasswordDTO } from '@/backend/auth/api'; import { useChangePassword } from '@/backend/auth/useChangePassword'; import InfoError, { ErrorData } from '@/components/info/InfoError'; import FlexColumn from '@/components/ui/FlexColumn'; import SubmitButton from '@/components/ui/SubmitButton'; import TextInput from '@/components/ui/TextInput'; import { errors, information } from '@/utils/labels'; function EditorPassword() { const router = useConceptNavigation(); const { changePassword, isPending, error, reset } = useChangePassword(); const [oldPassword, setOldPassword] = useState(''); const [newPassword, setNewPassword] = useState(''); const [newPasswordRepeat, setNewPasswordRepeat] = useState(''); const passwordColor = !!newPassword && !!newPasswordRepeat && newPassword !== newPasswordRepeat ? 'bg-warn-100' : 'clr-input'; const canSubmit = !!oldPassword && !!newPassword && !!newPasswordRepeat && newPassword === newPasswordRepeat; function handleSubmit(event: React.FormEvent) { event.preventDefault(); if (newPassword !== newPasswordRepeat) { toast.error(errors.passwordsMismatch); return; } const data: IChangePasswordDTO = { old_password: oldPassword, new_password: newPassword }; changePassword(data, () => { toast.success(information.changesSaved); router.push(urls.login); }); } useEffect(() => { reset(); }, [newPassword, oldPassword, newPasswordRepeat, reset]); return (
setOldPassword(event.target.value)} /> { setNewPassword(event.target.value); }} /> { setNewPasswordRepeat(event.target.value); }} /> {error ? : null} ); } export default EditorPassword; // ====== Internals ========= function ProcessError({ error }: { error: ErrorData }): React.ReactElement { if (axios.isAxiosError(error) && error.response && error.response.status === 400) { return
Неверно введен старый пароль
; } else { return ; } }