From 1c803f9efe960e4f78a0416145b9168781da32bf Mon Sep 17 00:00:00 2001 From: James Calfee <james@jcalfee.info> Date: Tue, 29 Nov 2016 11:56:27 -0600 Subject: [PATCH] Logout other tabs (work in progress, I plan to force push a bug fix) #667 --- app/Main.js | 6 ++++++ app/redux/UserSaga.js | 21 ++++++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/app/Main.js b/app/Main.js index bea08edcb..fdef2b105 100644 --- a/app/Main.js +++ b/app/Main.js @@ -7,11 +7,17 @@ import Iso from 'iso'; import universalRender from 'shared/UniversalRender'; import ConsoleExports from './utils/ConsoleExports'; import {serverApiRecordEvent} from 'app/utils/ServerApiClient'; +import {logoutStorageHandler} from 'app/redux/UserSaga' window.onerror = error => { serverApiRecordEvent('client_error', error); }; +if(process.env.BROWSER) { + // You must trigger a storage event from another tab or window.. + window.addEventListener('storage', logoutStorageHandler, false) +} + Iso.bootstrap(initial_state => { console.log('Initial state', initial_state); window.$STM_Config = initial_state.offchain.config; diff --git a/app/redux/UserSaga.js b/app/redux/UserSaga.js index a06851fe3..483b44901 100644 --- a/app/redux/UserSaga.js +++ b/app/redux/UserSaga.js @@ -300,12 +300,31 @@ function* saveLogin_localStorage() { } function* logout() { + console.log('logout...'); yield put(user.actions.saveLoginConfirm(false)) // Just incase it is still showing - if (process.env.BROWSER) + if (process.env.BROWSER) { localStorage.removeItem('autopost2') + localStorage.logout_event = String(Date.now()) + } serverApiLogout(); } +function* logoutAction() { + yield put(user.actions.logout()) +} + +export function logoutStorageHandler(storageEvent) { + console.log('storageEvent', storageEvent) + if(storageEvent.key === 'logout_event') { + const iterator = logoutAction() + let ret + do { + ret = iterator.next() + console.log('ret', ret) + } while(!ret.done) + } +} + function* loginError({payload: {/*error*/}}) { serverApiLogout(); } -- GitLab