From 35b480af5bd068bb3a143f187ee5cb7feb52559c Mon Sep 17 00:00:00 2001 From: Daniel James Smith Date: Mon, 23 Jan 2023 19:47:39 +0100 Subject: [PATCH] Fix storage reseed on logout The check for the set vault-timeout needs to happen before all cleaning stateService Remove check inside of reseedStorage as happens outside prior to calling it (logout/settings.component) --- apps/browser/src/background/main.background.ts | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/apps/browser/src/background/main.background.ts b/apps/browser/src/background/main.background.ts index f281fe356d..fcde4e7c15 100644 --- a/apps/browser/src/background/main.background.ts +++ b/apps/browser/src/background/main.background.ts @@ -678,6 +678,9 @@ export default class MainBackground { this.vaultFilterService.clear(), ]); + //Needs to be checked before state is cleaned + const needStorageReseed = await this.needsStorageReseed(); + await this.stateService.clean({ userId: userId }); if (userId == null || userId === (await this.stateService.getUserId())) { @@ -685,17 +688,25 @@ export default class MainBackground { this.messagingService.send("doneLoggingOut", { expired: expired, userId: userId }); } + if (needStorageReseed) { + await this.reseedStorage(); + } + if (BrowserApi.manifestVersion === 3) { BrowserApi.sendMessage("updateBadge"); } await this.refreshBadge(); await this.mainContextMenuHandler.noAccess(); - await this.reseedStorage(); this.notificationsService.updateConnection(false); await this.systemService.clearPendingClipboard(); await this.systemService.startProcessReload(this.authService); } + private async needsStorageReseed(): Promise { + const currentVaultTimeout = await this.stateService.getVaultTimeout(); + return currentVaultTimeout == null ? false : true; + } + async collectPageDetailsForContentScript(tab: any, sender: string, frameId: number = null) { if (tab == null || !tab.id) { return; @@ -736,11 +747,6 @@ export default class MainBackground { return; } - const currentVaultTimeout = await this.stateService.getVaultTimeout(); - if (currentVaultTimeout == null) { - return; - } - const getStorage = (): Promise => new Promise((resolve) => { chrome.storage.local.get(null, (o: any) => resolve(o));