Move guest registration into the login logic

This commit is contained in:
Richard van der Hoff 2016-08-11 13:05:16 +01:00
parent 5b71b28dcf
commit e06763d421
3 changed files with 47 additions and 33 deletions

View file

@ -207,34 +207,6 @@ module.exports = React.createClass({
}
},
_registerAsGuest: function(showWarning) {
var self = this;
console.log("Doing guest login on %s", this.getCurrentHsUrl());
var hsUrl = this.getCurrentHsUrl();
var isUrl = this.getCurrentIsUrl();
MatrixClientPeg.replaceUsingUrls(hsUrl, isUrl);
MatrixClientPeg.get().registerGuest().done(function(creds) {
console.log("Registered as guest: %s", creds.user_id);
Lifecycle.setLoggedIn({
userId: creds.user_id,
accessToken: creds.access_token,
homeserverUrl: hsUrl,
identityServerUrl: isUrl,
guest: true
});
}, function(err) {
if (showWarning) {
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
Modal.createDialog(ErrorDialog, {
title: "Failed to login as guest",
description: err.data
});
}
console.error("Failed to register as guest: " + err + " " + err.data);
});
},
onAction: function(payload) {
var roomIndexDelta = 1;
@ -1106,7 +1078,7 @@ module.exports = React.createClass({
customIsUrl={this.getCurrentIsUrl()}
fallbackHsUrl={this.getFallbackHsUrl()}
onForgotPasswordClick={this.onForgotPasswordClick}
onLoginAsGuestClick={this.props.enableGuest && this.props.config && this._registerAsGuest.bind(this, true)}
enableGuest={this.props.enableGuest}
onCancelClick={this.guestCreds ? this.onReturnToGuestClick : null}
/>
);

View file

@ -27,10 +27,14 @@ var ServerConfig = require("../../views/login/ServerConfig");
/**
* A wire component which glues together login UI components and Signup logic
*/
module.exports = React.createClass({displayName: 'Login',
module.exports = React.createClass({
displayName: 'Login',
propTypes: {
onLoggedIn: React.PropTypes.func.isRequired,
enableGuest: React.PropTypes.bool,
customHsUrl: React.PropTypes.string,
customIsUrl: React.PropTypes.string,
defaultHsUrl: React.PropTypes.string,
@ -45,7 +49,6 @@ module.exports = React.createClass({displayName: 'Login',
// login shouldn't care how password recovery is done.
onForgotPasswordClick: React.PropTypes.func,
onLoginAsGuestClick: React.PropTypes.func,
onCancelClick: React.PropTypes.func,
},
@ -82,7 +85,26 @@ module.exports = React.createClass({displayName: 'Login',
self.setState({
busy: false
});
}).done();
},
_onLoginAsGuestClick: function() {
var self = this;
self.setState({
busy: true,
errorText: null,
loginIncorrect: false,
});
this._loginLogic.loginAsGuest().then(function(data) {
self.props.onLoggedIn(data);
}, function(error) {
self._setStateFromError(error, true);
}).finally(function() {
self.setState({
busy: false
});
}).done();
},
onUsernameChanged: function(username) {
@ -221,9 +243,9 @@ module.exports = React.createClass({displayName: 'Login',
var loader = this.state.busy ? <div className="mx_Login_loader"><Loader /></div> : null;
var loginAsGuestJsx;
if (this.props.onLoginAsGuestClick) {
if (this.props.enableGuest) {
loginAsGuestJsx =
<a className="mx_Login_create" onClick={this.props.onLoginAsGuestClick} href="#">
<a className="mx_Login_create" onClick={this._onLoginAsGuestClick} href="#">
Login as guest
</a>
}