diff --git a/src/components/views/auth/RegistrationForm.js b/src/components/views/auth/RegistrationForm.js index 76b4cdb621..acde4d03fe 100644 --- a/src/components/views/auth/RegistrationForm.js +++ b/src/components/views/auth/RegistrationForm.js @@ -270,11 +270,27 @@ module.exports = React.createClass({ this.validateField(FIELD_USERNAME, ev.type); }, + /** + * A step is required if all flows include that step. + * + * @param {string} step A stage name to check + * @returns {boolean} Whether it is required + */ _authStepIsRequired(step) { - // A step is required if no flow exists which does not include that step - // (Notwithstanding setups like either email or msisdn being required) - return !this.props.flows.some((flow) => { - return !flow.stages.includes(step); + return this.props.flows.every((flow) => { + return flow.stages.includes(step); + }); + }, + + /** + * A step is used if any flows include that step. + * + * @param {string} step A stage name to check + * @returns {boolean} Whether it is used + */ + _authStepIsUsed(step) { + return this.props.flows.some((flow) => { + return flow.stages.includes(step); }); }, @@ -298,24 +314,28 @@ module.exports = React.createClass({ ; } - const emailPlaceholder = this._authStepIsRequired('m.login.email.identity') ? - _t("Email") : - _t("Email (optional)"); + let emailSection; + if (this._authStepIsUsed('m.login.email.identity')) { + const emailPlaceholder = this._authStepIsRequired('m.login.email.identity') ? + _t("Email") : + _t("Email (optional)"); - const emailSection = ( -