Merge pull request #3067 from matrix-org/travis/fail-fast-but-not-too-fast

Fail more softly on homeserver liveliness errors
This commit is contained in:
Travis Ralston 2019-06-07 07:43:45 -06:00 committed by GitHub
commit 795a273e26
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 272 additions and 41 deletions

View file

@ -108,6 +108,8 @@ export default class ModularServerConfig extends React.PureComponent {
busy: false,
errorText: message,
});
return null;
}
}
@ -132,7 +134,8 @@ export default class ModularServerConfig extends React.PureComponent {
onSubmit = async (ev) => {
ev.preventDefault();
ev.stopPropagation();
await this.validateServer();
const result = await this.validateServer();
if (!result) return; // Do not continue.
if (this.props.onAfterSubmit) {
this.props.onAfterSubmit();

View file

@ -53,11 +53,13 @@ module.exports = React.createClass({
onEditServerDetailsClick: PropTypes.func,
flows: PropTypes.arrayOf(PropTypes.object).isRequired,
serverConfig: PropTypes.instanceOf(ValidatedServerConfig).isRequired,
canSubmit: PropTypes.bool,
},
getDefaultProps: function() {
return {
onValidationChange: console.error,
canSubmit: true,
};
},
@ -80,6 +82,8 @@ module.exports = React.createClass({
onSubmit: async function(ev) {
ev.preventDefault();
if (!this.props.canSubmit) return;
const allFieldsValid = await this.verifyFieldsBeforeSubmit();
if (!allFieldsValid) {
return;
@ -540,7 +544,7 @@ module.exports = React.createClass({
}
const registerButton = (
<input className="mx_Login_submit" type="submit" value={_t("Register")} />
<input className="mx_Login_submit" type="submit" value={_t("Register")} disabled={!this.props.canSubmit} />
);
return (

View file

@ -109,6 +109,8 @@ export default class ServerConfig extends React.PureComponent {
busy: false,
errorText: message,
});
return null;
}
}
@ -137,7 +139,8 @@ export default class ServerConfig extends React.PureComponent {
onSubmit = async (ev) => {
ev.preventDefault();
ev.stopPropagation();
await this.validateServer();
const result = await this.validateServer();
if (!result) return; // Do not continue.
if (this.props.onAfterSubmit) {
this.props.onAfterSubmit();