Clear the login busy state after .well-known discovery

This always clear the login busy state after .well-known discovery without
waiting for the resulting server config. This is important for the case where
the HS that a full MXID resolves to matches the default HS, as without it we'd
be stuck in a busy state forever.

Fixes https://github.com/vector-im/riot-web/issues/10014
This commit is contained in:
J. Ryan Stinnett 2019-06-11 15:41:47 +01:00
parent f07aff2816
commit 21099052fc

View file

@ -241,7 +241,7 @@ module.exports = React.createClass({
const doWellknownLookup = username[0] === "@"; const doWellknownLookup = username[0] === "@";
this.setState({ this.setState({
username: username, username: username,
busy: doWellknownLookup, // unset later by the result of onServerConfigChange busy: doWellknownLookup,
errorText: null, errorText: null,
canTryLogin: true, canTryLogin: true,
}); });
@ -250,6 +250,16 @@ module.exports = React.createClass({
try { try {
const result = await AutoDiscoveryUtils.validateServerName(serverName); const result = await AutoDiscoveryUtils.validateServerName(serverName);
this.props.onServerConfigChange(result); this.props.onServerConfigChange(result);
// We'd like to rely on new props coming in via `onServerConfigChange`
// so that we know the servers have definitely updated before clearing
// the busy state. In the case of a full MXID that resolves to the same
// HS as Riot's default HS though, there may not be any server change.
// To avoid this trap, we clear busy here. For cases where the server
// actually has changed, `_initLoginLogic` will be called and manages
// busy state for its own liveness check.
this.setState({
busy: false,
});
} catch (e) { } catch (e) {
console.error("Problem parsing URL or unhandled error doing .well-known discovery:", e); console.error("Problem parsing URL or unhandled error doing .well-known discovery:", e);