From 6d0c52ca314651674436d8d933d37d9233659f20 Mon Sep 17 00:00:00 2001 From: Luka Skukan Date: Tue, 31 Jan 2017 17:21:06 +0100 Subject: [PATCH 1/5] Add submit handlers to ChangePasswordForm --- src/components/ChangePasswordForm.js | 45 +++++++++++++++++++++------- 1 file changed, 35 insertions(+), 10 deletions(-) diff --git a/src/components/ChangePasswordForm.js b/src/components/ChangePasswordForm.js index 8cbd301..552b79e 100644 --- a/src/components/ChangePasswordForm.js +++ b/src/components/ChangePasswordForm.js @@ -68,16 +68,29 @@ export default class ChangePasswordForm extends React.Component { this.state.spToken = this.props.spToken; } + _setErrorState(err) { + this.setState({ + isFormProcessing: false, + errorMessage: err.message + }); + } + onFormSubmit(e) { e.preventDefault(); e.persist(); + const {onSubmitError, onSubmitSuccess} = this.props; + var next = (err, data) => { if (err) { - return this.setState({ - isFormProcessing: false, - errorMessage: err.message - }); + if (onSubmitError) { + return onSubmitError({ + data: data, + error: err + }, this._setErrorState.bind(this, err)); + } + + return this._setErrorState(err); } // If the user didn't specify any data, @@ -97,16 +110,28 @@ export default class ChangePasswordForm extends React.Component { err.message = 'The reset password token is not valid. Please try resetting your password again.'; } - return this.setState({ - isFormProcessing: false, - errorMessage: err.message - }); + if (onSubmitError) { + return onSubmitError({ + data: data, + error: err + }, this._setErrorState.bind(this, err)); + } + + return this._setErrorState(err); } - this.setState({ + const done = () => (this.setState({ isFormProcessing: false, isFormSent: true - }); + })); + + if (onSubmitSuccess) { + return onSubmitSuccess({ + data: data + }, done); + } + + done(); }); }; From fa180c3a13fea7b6f1dd3308fdc3ba37f5c4162d Mon Sep 17 00:00:00 2001 From: Luka Skukan Date: Tue, 31 Jan 2017 17:24:17 +0100 Subject: [PATCH 2/5] Simplify code a bit --- src/components/ChangePasswordForm.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/ChangePasswordForm.js b/src/components/ChangePasswordForm.js index 552b79e..d175835 100644 --- a/src/components/ChangePasswordForm.js +++ b/src/components/ChangePasswordForm.js @@ -120,10 +120,10 @@ export default class ChangePasswordForm extends React.Component { return this._setErrorState(err); } - const done = () => (this.setState({ + const done = this.setState.bind(this, { isFormProcessing: false, isFormSent: true - })); + }); if (onSubmitSuccess) { return onSubmitSuccess({ From bd0d7dbdb3eb7472848f505261b409d0abaf395e Mon Sep 17 00:00:00 2001 From: Luka Skukan Date: Tue, 31 Jan 2017 17:25:27 +0100 Subject: [PATCH 3/5] Add error and success handlers to ResetPasswordForm --- src/components/ResetPasswordForm.js | 53 +++++++++++++++++++++-------- 1 file changed, 39 insertions(+), 14 deletions(-) diff --git a/src/components/ResetPasswordForm.js b/src/components/ResetPasswordForm.js index dc98c6d..8882d21 100644 --- a/src/components/ResetPasswordForm.js +++ b/src/components/ResetPasswordForm.js @@ -53,16 +53,29 @@ export default class ResetPasswordForm extends React.Component { isFormSent: false }; + _setErrorState(err) { + this.setState({ + isFormProcessing: false, + errorMessage: err.message + }); + } + onFormSubmit(e) { e.preventDefault(); e.persist(); + const {onSubmitError, onSubmitSuccess} = this.props; + var next = (err, data) => { if (err) { - return this.setState({ - isFormProcessing: false, - errorMessage: err.message - }); + if (onSubmitError) { + return onSubmitError({ + data: data, + error: err + }, this._setErrorState.bind(this, err)); + } + + return this._setErrorState(err); } // If the user didn't specify any data, @@ -71,17 +84,29 @@ export default class ResetPasswordForm extends React.Component { UserActions.forgotPassword(data, (err) => { if (err) { - this.setState({ - isFormProcessing: false, - errorMessage: err.message - }); - } else { - this.setState({ - isFormSent: true, - isFormProcessing: false, - errorMessage: null - }); + if (onSubmitError) { + return onSubmitError({ + data: data, + error: err + }, this._setErrorState.bind(this, err)); + } + + return this._setErrorState(err); } + + const done = this.setState.bind(this, { + isFormSent: true, + isFormProcessing: false, + errorMessage: null + }); + + if (onSubmitSuccess) { + return onSubmitSuccess({ + data: data + }, done); + } + + done(); }); }; From bd79f3b9d658f6b9f8d7768adc6d6dd6db563d1f Mon Sep 17 00:00:00 2001 From: Luka Skukan Date: Wed, 1 Feb 2017 00:02:05 +0100 Subject: [PATCH 4/5] Add success and error handlers to profile form --- src/components/UserProfileForm.js | 43 +++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/src/components/UserProfileForm.js b/src/components/UserProfileForm.js index 4cb2822..78c6a2b 100644 --- a/src/components/UserProfileForm.js +++ b/src/components/UserProfileForm.js @@ -115,17 +115,29 @@ export default class UserProfileForm extends React.Component { } }; + _setErrorState(err) { + this.setState({ + isFormProcessing: false, + isFormSuccessful: false, + errorMessage: err.message + }); + } + _onFormSubmit(e) { e.preventDefault(); e.persist(); + const {onSubmitError, onSubmitSuccess} = this.props; + var next = (err, data) => { if (err) { - return this.setState({ - isFormProcessing: false, - isFormSuccessful: false, - errorMessage: err.message - }); + if (onSubmitError) { + return onSubmitError({ + data: data, + error: err + }, this._setErrorState.bind(this, err)); + } + return this._setErrorState(err); } // If the user didn't specify any data, @@ -134,19 +146,28 @@ export default class UserProfileForm extends React.Component { UserActions.updateProfile(data, (err) => { if (err) { - return this.setState({ - isFormProcessing: false, - isFormSuccessful: false, - errorMessage: err.message - }); + if (onSubmitError) { + return onSubmitError({ + data: data, + error: err + }, this._setErrorState.bind(this, err)); + } + + return this._setErrorState(err); } this._updateSessionData(data, () => { - this.setState({ + const done = this.setState.bind(this, { isFormProcessing: false, isFormSuccessful: true, errorMessage: null }); + + if (onSubmitSuccess) { + return onSubmitSuccess({ + data: data + }, done); + } }); }); }; From 92eaeb0d4688329483df5047cc27c85e42c20fee Mon Sep 17 00:00:00 2001 From: Luka Skukan Date: Wed, 1 Feb 2017 12:19:30 +0100 Subject: [PATCH 5/5] Allow setting of custom errors --- src/components/ChangePasswordForm.js | 4 ++-- src/components/LoginForm.js | 4 ++-- src/components/RegistrationForm.js | 6 +++--- src/components/ResetPasswordForm.js | 4 ++-- src/components/UserProfileForm.js | 4 ++-- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/components/ChangePasswordForm.js b/src/components/ChangePasswordForm.js index d175835..78a7289 100644 --- a/src/components/ChangePasswordForm.js +++ b/src/components/ChangePasswordForm.js @@ -87,7 +87,7 @@ export default class ChangePasswordForm extends React.Component { return onSubmitError({ data: data, error: err - }, this._setErrorState.bind(this, err)); + }, (userError) => this._setErrorState(userError || err)); } return this._setErrorState(err); @@ -114,7 +114,7 @@ export default class ChangePasswordForm extends React.Component { return onSubmitError({ data: data, error: err - }, this._setErrorState.bind(this, err)); + }, (userError) => this._setErrorState(userError || err)); } return this._setErrorState(err); diff --git a/src/components/LoginForm.js b/src/components/LoginForm.js index 1627865..fb4b07e 100644 --- a/src/components/LoginForm.js +++ b/src/components/LoginForm.js @@ -176,7 +176,7 @@ export default class LoginForm extends React.Component { return onSubmitError({ data: data, error: err - }, setErrorState.bind(this, err)); + }, (userError) => setErrorState(userError || err)); } return setErrorState(err); @@ -195,7 +195,7 @@ export default class LoginForm extends React.Component { return onSubmitError({ data: data, error: err - }, setErrorState.bind(this, err)); + }, (userError) => setErrorState.bind(userError || err)); } return setErrorState(err); diff --git a/src/components/RegistrationForm.js b/src/components/RegistrationForm.js index 524831b..d7823dd 100644 --- a/src/components/RegistrationForm.js +++ b/src/components/RegistrationForm.js @@ -209,7 +209,7 @@ export default class RegistrationForm extends React.Component { return onSubmitError({ data: data, error: err - }, setErrorState.bind(this, err)); + }, (userError) => setErrorState(userError || err)); } return setErrorState(err); @@ -226,7 +226,7 @@ export default class RegistrationForm extends React.Component { data: data, result: result, error: err - }, setErrorState.bind(this, err)); + }, (userError) => setErrorState(userError || err)); } setErrorState(err); @@ -241,7 +241,7 @@ export default class RegistrationForm extends React.Component { data: data, result: result, error: err - }, setErrorState.bind(this, err)); + }, (userError) => setErrorState(userError || err)); } return setErrorState(err); diff --git a/src/components/ResetPasswordForm.js b/src/components/ResetPasswordForm.js index 8882d21..6d047fb 100644 --- a/src/components/ResetPasswordForm.js +++ b/src/components/ResetPasswordForm.js @@ -72,7 +72,7 @@ export default class ResetPasswordForm extends React.Component { return onSubmitError({ data: data, error: err - }, this._setErrorState.bind(this, err)); + }, (userError) => this._setErrorState(userError || err)); } return this._setErrorState(err); @@ -88,7 +88,7 @@ export default class ResetPasswordForm extends React.Component { return onSubmitError({ data: data, error: err - }, this._setErrorState.bind(this, err)); + }, (userError) => this._setErrorState(userError || err)); } return this._setErrorState(err); diff --git a/src/components/UserProfileForm.js b/src/components/UserProfileForm.js index 78c6a2b..2196540 100644 --- a/src/components/UserProfileForm.js +++ b/src/components/UserProfileForm.js @@ -135,7 +135,7 @@ export default class UserProfileForm extends React.Component { return onSubmitError({ data: data, error: err - }, this._setErrorState.bind(this, err)); + }, (userError) => this._setErrorState(userError || err)); } return this._setErrorState(err); } @@ -150,7 +150,7 @@ export default class UserProfileForm extends React.Component { return onSubmitError({ data: data, error: err - }, this._setErrorState.bind(this, err)); + }, (userError) => this._setErrorState(userError || err)); } return this._setErrorState(err);