diff --git a/app/Main.js b/app/Main.js index bea08edcb7cbd7c7c11eadcea8ce4e6e61bdfb88..fdef2b105889f9a8915a852e45d95608fb187c0f 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 a06851fe35fcf2979cf9389aa91a7b77f683cbff..483b44901360afa382f5afc282f79a110e8aba01 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(); }