diff --git a/src/Lifecycle.js b/src/Lifecycle.js index 7378e982ef..65ff2d6511 100644 --- a/src/Lifecycle.js +++ b/src/Lifecycle.js @@ -385,6 +385,8 @@ function _persistCredentialsToLocalStorage(credentials) { console.log(`Session persisted for ${credentials.userId}`); } +let _isLoggingOut = false; + /** * Logs the current session out and transitions to the logged-out state */ @@ -404,6 +406,7 @@ export function logout() { return; } + _isLoggingOut = true; MatrixClientPeg.get().logout().then(onLoggedOut, (err) => { // Just throwing an error here is going to be very unhelpful @@ -419,6 +422,10 @@ export function logout() { ).done(); } +export function isLoggingOut() { + return _isLoggingOut; +} + /** * Starts the matrix client and all other react-sdk services that * listen for events while a session is logged in. @@ -449,6 +456,7 @@ async function startMatrixClient() { * storage. Used after a session has been logged out. */ export function onLoggedOut() { + _isLoggingOut = false; stopMatrixClient(); _clearStorage().done(); dis.dispatch({action: 'on_logged_out'}); diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index 9ea0cb42c8..e1c21f27e1 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -1262,6 +1262,7 @@ export default React.createClass({ }, true); }); cli.on('Session.logged_out', function(call) { + if (Lifecycle.isLoggingOut()) return; const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); Modal.createTrackedDialog('Signed out', '', ErrorDialog, { title: _t('Signed Out'),