diff --git a/src/Lifecycle.js b/src/Lifecycle.js index f32f105889..795489c1fa 100644 --- a/src/Lifecycle.js +++ b/src/Lifecycle.js @@ -386,6 +386,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 */ @@ -405,6 +407,7 @@ export function logout() { return; } + _isLoggingOut = true; MatrixClientPeg.get().logout().then(onLoggedOut, (err) => { // Just throwing an error here is going to be very unhelpful @@ -420,6 +423,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. @@ -451,6 +458,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 e0bbf50d5a..4bcfd77ff7 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'),