Only re-render LoggedInView if MatrixClientPeg.get() is truthy

pull/21833/head
Luke Barnard 2017-05-31 15:13:27 +01:00
parent d83f18ab46
commit d0e270bd1c
1 changed files with 11 additions and 0 deletions

View File

@ -24,6 +24,7 @@ import PageTypes from '../../PageTypes';
import sdk from '../../index'; import sdk from '../../index';
import dis from '../../dispatcher'; import dis from '../../dispatcher';
import sessionStore from '../../stores/SessionStore'; import sessionStore from '../../stores/SessionStore';
import MatrixClientPeg from '../../MatrixClientPeg';
/** /**
* This is what our MatrixChat shows when we are logged in. The precise view is * This is what our MatrixChat shows when we are logged in. The precise view is
@ -91,6 +92,16 @@ export default React.createClass({
} }
}, },
// Child components assume that the client peg will not be null, so give them some
// sort of assurance here by only allowing a re-render if the client is truthy.
//
// This is required because `LoggedInView` maintains its own state and if this state
// updates after the client peg has been made null (during logout), then it will
// attempt to re-render and the children will throw errors.
shouldComponentUpdate: function() {
return Boolean(MatrixClientPeg.get());
},
getScrollStateForRoom: function(roomId) { getScrollStateForRoom: function(roomId) {
return this._scrollStateMap[roomId]; return this._scrollStateMap[roomId];
}, },