diff --git a/skins/base/css/templates/Login.css b/skins/base/css/templates/Login.css index fe5646f9..49feffbe 100644 --- a/skins/base/css/templates/Login.css +++ b/skins/base/css/templates/Login.css @@ -82,11 +82,19 @@ limitations under the License. opacity: 0.8; } +.mx_Login_loader { + position: absolute; + left: 50%; + margin-top: 12px; +} + .mx_Login_error { color: #ff2020; font-weight: bold; text-align: center; - margin-bottom: 24px; + height: 24px; + margin-top: 12px; + margin-bottom: 12px; } .mx_Login_create:link { diff --git a/skins/base/views/templates/Login.js b/skins/base/views/templates/Login.js index a783296d..887c7ca7 100644 --- a/skins/base/views/templates/Login.js +++ b/skins/base/views/templates/Login.js @@ -74,14 +74,14 @@ module.exports = React.createClass({ */ getFormVals: function() { return { - 'username': this.refs.user.getDOMNode().value, - 'password': this.refs.pass.getDOMNode().value + 'username': this.refs.user.getDOMNode().value.trim(), + 'password': this.refs.pass.getDOMNode().value.trim() }; }, onHsUrlChanged: function() { - this.customHsUrl = this.refs.serverConfig.getHsUrl(); - this.customIsUrl = this.refs.serverConfig.getIsUrl(); + this.customHsUrl = this.refs.serverConfig.getHsUrl().trim(); + this.customIsUrl = this.refs.serverConfig.getIsUrl().trim(); MatrixClientPeg.replaceUsingUrls( this.getHsUrl(), this.getIsUrl() @@ -93,23 +93,24 @@ module.exports = React.createClass({ // XXX: HSes do not have to offer password auth, so we // need to update and maybe show a different component // when a new HS is entered. - /*if (this.updateHsTimeout) { + if (this.updateHsTimeout) { clearTimeout(this.updateHsTimeout); } var self = this; this.updateHsTimeout = setTimeout(function() { self.onHSChosen(); - }, 500);*/ + }, 500); }, componentForStep: function(step) { switch (step) { case 'choose_hs': + case 'fetch_stages': var serverConfigStyle = {}; serverConfigStyle.display = this.state.serverConfigVisible ? 'block' : 'none'; return (