diff --git a/src/services/htmlStorage.service.ts b/src/services/htmlStorage.service.ts
index e995821889..b10d5ddd8f 100644
--- a/src/services/htmlStorage.service.ts
+++ b/src/services/htmlStorage.service.ts
@@ -9,7 +9,8 @@ export class HtmlStorageService implements StorageService {
ConstantsService.vaultTimeoutKey, ConstantsService.vaultTimeoutActionKey, ConstantsService.ssoCodeVerifierKey,
ConstantsService.ssoStateKey, 'ssoOrgIdentifier']);
private localStorageStartsWithKeys = ['twoFactorToken_', ConstantsService.collapsedGroupingsKey + '_'];
- private sessionMemoryStorage = new Map()
+ private memoryStorageStartsWithKeys = ['ciphers_', 'folders_', 'collections_', 'settings_', 'lastSync_'];
+ private memoryStorage = new Map()
constructor(private platformUtilsService: PlatformUtilsService) { }
@@ -31,8 +32,10 @@ export class HtmlStorageService implements StorageService {
let json: string = null;
if (this.isLocalStorage(key)) {
json = window.localStorage.getItem(key);
+ } else if (this.isMemoryStorage(key)) {
+ json = this.memoryStorage.get(key);
} else {
- json = this.sessionMemoryStorage.get(key);
+ json = window.sessionStorage.getItem(key);
}
if (json != null) {
const obj = JSON.parse(json);
@@ -49,8 +52,10 @@ export class HtmlStorageService implements StorageService {
const json = JSON.stringify(obj);
if (this.isLocalStorage(key)) {
window.localStorage.setItem(key, json);
+ } else if (this.isMemoryStorage(key)) {
+ this.memoryStorage.set(key, json);
} else {
- this.sessionMemoryStorage.set(key, json);
+ window.sessionStorage.setItem(key, json);
}
return Promise.resolve();
}
@@ -58,8 +63,10 @@ export class HtmlStorageService implements StorageService {
remove(key: string): Promise {
if (this.isLocalStorage(key)) {
window.localStorage.removeItem(key);
+ } else if (this.isMemoryStorage(key)) {
+ this.memoryStorage.delete(key);
} else {
- this.sessionMemoryStorage.delete(key);
+ window.sessionStorage.removeItem(key);
}
return Promise.resolve();
}
@@ -75,4 +82,13 @@ export class HtmlStorageService implements StorageService {
}
return false;
}
+
+ private isMemoryStorage(key: string): boolean {
+ for (const swKey of this.memoryStorageStartsWithKeys) {
+ if (key.startsWith(swKey)) {
+ return true;
+ }
+ }
+ return false;
+ }
}