diff --git a/src/components/ChangePasswordForm.js b/src/components/ChangePasswordForm.js index 8cbd301..78a7289 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 + }, (userError) => this._setErrorState(userError || 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 + }, (userError) => this._setErrorState(userError || err)); + } + + return this._setErrorState(err); } - this.setState({ + const done = this.setState.bind(this, { isFormProcessing: false, isFormSent: true }); + + if (onSubmitSuccess) { + return onSubmitSuccess({ + data: data + }, done); + } + + done(); }); }; 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 dc98c6d..6d047fb 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 + }, (userError) => this._setErrorState(userError || 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 + }, (userError) => this._setErrorState(userError || 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(); }); }; diff --git a/src/components/UserProfileForm.js b/src/components/UserProfileForm.js index 4cb2822..2196540 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 + }, (userError) => this._setErrorState(userError || 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 + }, (userError) => this._setErrorState(userError || 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); + } }); }); };