Disable the submit button while .well-known is underway

To give the user a little feedback about something happening. This definitely needs to be improved in the future though.
This commit is contained in:
Travis Ralston 2018-12-07 15:37:20 -07:00
parent 6707186edc
commit a969237dc0
2 changed files with 13 additions and 2 deletions

View file

@ -94,6 +94,7 @@ module.exports = React.createClass({
discoveredHsUrl: "", discoveredHsUrl: "",
discoveredIsUrl: "", discoveredIsUrl: "",
discoveryError: "", discoveryError: "",
findingHomeserver: false,
}; };
}, },
@ -299,10 +300,11 @@ module.exports = React.createClass({
_tryWellKnownDiscovery: async function(serverName) { _tryWellKnownDiscovery: async function(serverName) {
if (!serverName.trim()) { if (!serverName.trim()) {
// Nothing to discover // Nothing to discover
this.setState({discoveryError: "", discoveredHsUrl: "", discoveredIsUrl: ""}); this.setState({discoveryError: "", discoveredHsUrl: "", discoveredIsUrl: "", findingHomeserver: false});
return; return;
} }
this.setState({findingHomeserver: true});
try { try {
const discovery = await AutoDiscovery.findClientConfig(serverName); const discovery = await AutoDiscovery.findClientConfig(serverName);
const state = discovery["m.homeserver"].state; const state = discovery["m.homeserver"].state;
@ -311,12 +313,14 @@ module.exports = React.createClass({
discoveredHsUrl: "", discoveredHsUrl: "",
discoveredIsUrl: "", discoveredIsUrl: "",
discoveryError: discovery["m.homeserver"].error, discoveryError: discovery["m.homeserver"].error,
findingHomeserver: false,
}); });
} else if (state === AutoDiscovery.PROMPT) { } else if (state === AutoDiscovery.PROMPT) {
this.setState({ this.setState({
discoveredHsUrl: "", discoveredHsUrl: "",
discoveredIsUrl: "", discoveredIsUrl: "",
discoveryError: "", discoveryError: "",
findingHomeserver: false,
}); });
} else if (state === AutoDiscovery.SUCCESS) { } else if (state === AutoDiscovery.SUCCESS) {
this.setState({ this.setState({
@ -326,6 +330,7 @@ module.exports = React.createClass({
? discovery["m.identity_server"].base_url ? discovery["m.identity_server"].base_url
: "", : "",
discoveryError: "", discoveryError: "",
findingHomeserver: false,
}); });
} else { } else {
console.warn("Unknown state for m.homeserver in discovery response: ", discovery); console.warn("Unknown state for m.homeserver in discovery response: ", discovery);
@ -333,6 +338,7 @@ module.exports = React.createClass({
discoveredHsUrl: "", discoveredHsUrl: "",
discoveredIsUrl: "", discoveredIsUrl: "",
discoveryError: _t("Unknown failure discovering homeserver"), discoveryError: _t("Unknown failure discovering homeserver"),
findingHomeserver: false,
}); });
} }
} catch (e) { } catch (e) {
@ -485,6 +491,7 @@ module.exports = React.createClass({
loginIncorrect={this.state.loginIncorrect} loginIncorrect={this.state.loginIncorrect}
hsUrl={this.state.enteredHomeserverUrl} hsUrl={this.state.enteredHomeserverUrl}
hsName={this.props.defaultServerName} hsName={this.props.defaultServerName}
disableSubmit={this.state.findingHomeserver}
/> />
); );
}, },

View file

@ -41,6 +41,7 @@ class PasswordLogin extends React.Component {
loginIncorrect: false, loginIncorrect: false,
hsDomain: "", hsDomain: "",
hsName: null, hsName: null,
disableSubmit: false,
} }
constructor(props) { constructor(props) {
@ -291,6 +292,8 @@ class PasswordLogin extends React.Component {
); );
} }
const disableSubmit = this.props.disableSubmit || matrixIdText === '';
return ( return (
<div> <div>
<form onSubmit={this.onSubmitForm}> <form onSubmit={this.onSubmitForm}>
@ -304,7 +307,7 @@ class PasswordLogin extends React.Component {
/> />
<br /> <br />
{ forgotPasswordJsx } { forgotPasswordJsx }
<input className="mx_Login_submit" type="submit" value={_t('Sign in')} disabled={matrixIdText === ''} /> <input className="mx_Login_submit" type="submit" value={_t('Sign in')} disabled={disableSubmit} />
</form> </form>
</div> </div>
); );
@ -329,6 +332,7 @@ PasswordLogin.propTypes = {
onPasswordChanged: PropTypes.func, onPasswordChanged: PropTypes.func,
loginIncorrect: PropTypes.bool, loginIncorrect: PropTypes.bool,
hsName: PropTypes.string, hsName: PropTypes.string,
disableSubmit: PropTypes.bool,
}; };
module.exports = PasswordLogin; module.exports = PasswordLogin;