From af1fdf715e9e2cd153d4971b519dc2c9530ba284 Mon Sep 17 00:00:00 2001 From: Mo Bitar Date: Tue, 10 Jul 2018 10:37:47 -0500 Subject: [PATCH] Fix clearing all data on signout --- src/app.js | 2 ++ src/lib/keysManager.js | 7 ++++++- src/lib/sfjs/authManager.js | 5 +++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/app.js b/src/app.js index b19ce726..e6bc021b 100644 --- a/src/app.js +++ b/src/app.js @@ -12,6 +12,7 @@ import KeysManager from './lib/keysManager' import Auth from './lib/sfjs/authManager' import ModelManager from './lib/sfjs/modelManager' import Sync from './lib/sfjs/syncManager' +import Storage from './lib/sfjs/storageManager' import ReviewManager from './lib/reviewManager'; import GlobalStyles from "./Styles" import Icons from "./Icons" @@ -78,6 +79,7 @@ export default class App { this.signoutObserver = Auth.get().addEventHandler((event) => { if(event == SFAuthManager.DidSignOutEvent) { this.optionsState.reset(); + Storage.get().clearAllModels(); KeysManager.get().clearAccountKeysAndData(); ModelManager.get().handleSignout(); Sync.get().handleSignout(); diff --git a/src/lib/keysManager.js b/src/lib/keysManager.js index 03abd886..b2d98d53 100644 --- a/src/lib/keysManager.js +++ b/src/lib/keysManager.js @@ -125,10 +125,15 @@ export default class KeysManager { this.loadLocalStateFromKeys(null); this.accountAuthParams = null; this.user = null; - Storage.get().setItem(FirstRunKey, "false") + Storage.get().setItem(FirstRunKey, "false"); }.bind(this)); } + /* + We need to register local storage keys, so that when we want to sign out, we don't accidentally + clear internal keys, like first_run. (If you accidentally delete the first_run key when you sign out, + then the next time you sign in and refresh, it will treat it as a new run, and delete all data.) + */ registerAccountRelatedStorageKeys(storageKeys) { this.accountRelatedStorageKeys = _.uniq(this.accountRelatedStorageKeys.concat(storageKeys)); } diff --git a/src/lib/sfjs/authManager.js b/src/lib/sfjs/authManager.js index d7926d09..3f1ed1dc 100644 --- a/src/lib/sfjs/authManager.js +++ b/src/lib/sfjs/authManager.js @@ -37,6 +37,11 @@ export default class Auth extends SFAuthManager { return !keys.jwt; } + async signout(clearAllData) { + // DONT clear all data. We will do this ourselves manually, as we need to preserve certain data keys. + super.signout(false); + } + async getAuthParams() { return KeysManager.get().activeAuthParams(); }