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
pull/21833/head
David Baker 2016-09-29 17:23:07 +01:00
parent 66ef1e8156
commit 8cbddfcf28
1 changed files with 36 additions and 6 deletions

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,
});
},