From 9df4819905be5b6be2569cb65d5a1b16084a1945 Mon Sep 17 00:00:00 2001 From: SleepWalker Date: Mon, 2 May 2016 13:11:10 +0300 Subject: [PATCH] Do not request password till newPassword and newRePassword are valid --- src/pages/profile/ChangePasswordPage.jsx | 29 ++++++++++++++++++------ 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/src/pages/profile/ChangePasswordPage.jsx b/src/pages/profile/ChangePasswordPage.jsx index 85c04e0..dcb4cc9 100644 --- a/src/pages/profile/ChangePasswordPage.jsx +++ b/src/pages/profile/ChangePasswordPage.jsx @@ -37,11 +37,26 @@ function goToProfile() { export default connect(null, { changePassword: (form) => { return (dispatch) => { - // TODO: судя по всему registerPopup было явно лишним. Надо еще раз - // обдумать API и переписать - dispatch(registerPopup('requestPassword', PasswordRequestForm)); - dispatch(createPopup('requestPassword', (props) => { - return { + accounts.changePassword(form.serialize()) + .catch((resp) => { + // prevalidate user input, because requestPassword popup will block the + // entire form from input, so it must be valid + if (resp.errors) { + Reflect.deleteProperty(resp.errors, 'password'); + + if (Object.keys(resp.errors).length) { + form.setErrors(resp.errors); + return Promise.reject(resp); + } + } + + return Promise.resolve(); + }) + .then(() => { + // TODO: судя по всему registerPopup было явно лишним. Надо еще раз + // обдумать API и переписать + dispatch(registerPopup('requestPassword', PasswordRequestForm)); + dispatch(createPopup('requestPassword', (props) => ({ form, onSubmit: () => { // TODO: hide this logic in action @@ -62,8 +77,8 @@ export default connect(null, { .then(props.onClose) .then(() => dispatch(goToProfile())); } - }; - })); + }))); + }); }; } })(ChangePasswordPage);