From 251506db102077453253c117fd72a7fb7df4e9da Mon Sep 17 00:00:00 2001 From: whosyourtaco Date: Mon, 21 Nov 2022 11:48:14 +0200 Subject: [PATCH] feat: add api errors to form --- .../ChangePasswordForm/ChangePasswordForm.tsx | 194 ++++++++++-------- 1 file changed, 104 insertions(+), 90 deletions(-) diff --git a/src/pages/Settings/components/ChangePasswordForm/ChangePasswordForm.tsx b/src/pages/Settings/components/ChangePasswordForm/ChangePasswordForm.tsx index 972d5f5..b0c7051 100644 --- a/src/pages/Settings/components/ChangePasswordForm/ChangePasswordForm.tsx +++ b/src/pages/Settings/components/ChangePasswordForm/ChangePasswordForm.tsx @@ -9,106 +9,120 @@ import { Field, Form } from 'react-final-form'; import { ButtonContainer } from '../../../Login/components/LoginForm/LoginForm.style'; - const ChangePasswordForm: React.FC = () => { - const { mutate, isLoading } = useChangePassword(); + const { mutateAsync, isLoading } = useChangePassword(); const handleSubmit = (form: ChangePasswordFormType) => { - mutate(form); + return new Promise((resolve) => { + mutateAsync(form) + .then(() => resolve(true)) + .catch((error) => { + resolve(error.errors); + }); + }); }; return ( -
- {({ handleSubmit, valid, submitting }) => ( - - - - - value}> - {(props) => { - const hasError = props.meta.touched && props.meta.invalid; + + {({ handleSubmit, submitting }) => ( + + + + + value}> + {(props) => { + const hasError = + props.meta.touched && + props.meta.invalid && + (props.meta.submitError || props.meta.error); - return ( - - ); - }} - - - - + return ( + + ); + }} + + + + - - - - value}> - {(props) => { - const hasError = props.meta.touched && props.meta.invalid; - return ( - - ); - }} - - - - + + + + value}> + {(props) => { + const hasError = + props.meta.touched && + props.meta.invalid && + (props.meta.submitError || props.meta.error); + return ( + + ); + }} + + + + - - - - value}> - {(props) => { - const hasError = props.meta.touched && props.meta.invalid; - return ( - - ); - }} - - - - + + + + value}> + {(props) => { + const hasError = + props.meta.touched && + props.meta.invalid && + (props.meta.submitError || props.meta.error); + return ( + + ); + }} + + + + - - - -
- )} - + + + + + )} + ); };