Fix version going blank after logging in

Don't use replaceState in MatrixClient: there's lots of stuff in
MatrixClient's state now (including the app version) so replacing
the entire state doesn't really make sense (and also blows away
all of the nice defaults we set in getInitialState). Instead,
setState of the things we actually care about wherever we used
replaceState.

Also add a couple of state variables to getInitialState that were
missing.

Fixes https://github.com/vector-im/vector-web/issues/2322
This commit is contained in:
David Baker 2016-09-29 17:23:07 +01:00
parent 66ef1e8156
commit 8cbddfcf28

View file

@ -105,6 +105,9 @@ module.exports = React.createClass({
version: null,
newVersion: null,
upgradeUsername: null,
guestAccessToken: null,
};
return s;
},
@ -261,13 +264,20 @@ module.exports = React.createClass({
newState.register_is_url = payload.params.is_url;
newState.register_id_sid = payload.params.sid;
}
this.replaceState(newState);
this.setState(newState);
this.notifyNewScreen('register');
break;
case 'start_login':
if (this.state.logged_in) return;
this.replaceState({
this.setState({
screen: 'login',
currentRoomAlias: null,
currentRoomId: null,
viewUserId: null,
logged_in: false,
ready: false,
upgradeUsername: null,
guestAccessToken: null,
});
this.notifyNewScreen('login');
break;
@ -279,8 +289,13 @@ module.exports = React.createClass({
case 'start_upgrade_registration':
// stash our guest creds so we can backout if needed
this.guestCreds = MatrixClientPeg.getCredentials();
this.replaceState({
this.setState({
screen: "register",
currentRoomAlias: null,
currentRoomId: null,
viewUserId: null,
logged_in: false,
ready: false,
upgradeUsername: MatrixClientPeg.get().getUserIdLocalpart(),
guestAccessToken: MatrixClientPeg.get().getAccessToken(),
});
@ -288,8 +303,15 @@ module.exports = React.createClass({
break;
case 'start_password_recovery':
if (this.state.logged_in) return;
this.replaceState({
screen: 'forgot_password'
this.setState({
screen: 'forgot_password',
currentRoomAlias: null,
currentRoomId: null,
viewUserId: null,
logged_in: false,
ready: false,
upgradeUsername: null,
guestAccessToken: null,
});
this.notifyNewScreen('forgot_password');
break;
@ -595,9 +617,17 @@ module.exports = React.createClass({
*/
_onLoggedOut: function() {
this.notifyNewScreen('login');
this.replaceState({
this.setState({
screen: undefined,
currentRoomAlias: null,
currentRoomId: null,
viewUserId: null,
logged_in: false,
ready: false,
upgradeUsername: null,
guestAccessToken: null,
collapse_lhs: false,
collapse_rhs: false,
});
},