html/memory storage services
This commit is contained in:
parent
561120c51c
commit
9f1c7a0a32
|
@ -6,9 +6,10 @@ import {
|
||||||
import { ToasterModule } from 'angular2-toaster';
|
import { ToasterModule } from 'angular2-toaster';
|
||||||
|
|
||||||
import { BroadcasterMessagingService } from '../services/broadcasterMessaging.service';
|
import { BroadcasterMessagingService } from '../services/broadcasterMessaging.service';
|
||||||
|
import { HtmlStorageService } from '../services/htmlStorage.service';
|
||||||
import { I18nService } from '../services/i18n.service';
|
import { I18nService } from '../services/i18n.service';
|
||||||
|
import { MemoryStorageService } from '../services/memoryStorage.service';
|
||||||
import { WebPlatformUtilsService } from '../services/webPlatformUtils.service';
|
import { WebPlatformUtilsService } from '../services/webPlatformUtils.service';
|
||||||
import { WebStorageService } from '../services/webStorage.service';
|
|
||||||
|
|
||||||
import { AuthGuardService } from 'jslib/angular/services/auth-guard.service';
|
import { AuthGuardService } from 'jslib/angular/services/auth-guard.service';
|
||||||
import { BroadcasterService } from 'jslib/angular/services/broadcaster.service';
|
import { BroadcasterService } from 'jslib/angular/services/broadcaster.service';
|
||||||
|
@ -70,10 +71,11 @@ const stateService = new StateService();
|
||||||
const broadcasterService = new BroadcasterService();
|
const broadcasterService = new BroadcasterService();
|
||||||
const messagingService = new BroadcasterMessagingService(broadcasterService);
|
const messagingService = new BroadcasterMessagingService(broadcasterService);
|
||||||
const platformUtilsService = new WebPlatformUtilsService(messagingService, i18nService);
|
const platformUtilsService = new WebPlatformUtilsService(messagingService, i18nService);
|
||||||
const storageService: StorageServiceAbstraction = new WebStorageService();
|
const storageService: StorageServiceAbstraction = new HtmlStorageService();
|
||||||
|
const secureStorageService: StorageServiceAbstraction = new MemoryStorageService();
|
||||||
const cryptoFunctionService: CryptoFunctionServiceAbstraction = new WebCryptoFunctionService(window,
|
const cryptoFunctionService: CryptoFunctionServiceAbstraction = new WebCryptoFunctionService(window,
|
||||||
platformUtilsService);
|
platformUtilsService);
|
||||||
const cryptoService = new CryptoService(storageService, storageService, cryptoFunctionService);
|
const cryptoService = new CryptoService(storageService, secureStorageService, cryptoFunctionService);
|
||||||
const tokenService = new TokenService(storageService);
|
const tokenService = new TokenService(storageService);
|
||||||
const appIdService = new AppIdService(storageService);
|
const appIdService = new AppIdService(storageService);
|
||||||
const apiService = new ApiService(tokenService, platformUtilsService,
|
const apiService = new ApiService(tokenService, platformUtilsService,
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
import { StorageService } from 'jslib/abstractions/storage.service';
|
||||||
|
import { ConstantsService } from 'jslib/services';
|
||||||
|
|
||||||
|
export class HtmlStorageService implements StorageService {
|
||||||
|
private localStorageKeys = new Set(['appId', 'anonymousAppId', 'rememberedEmail',
|
||||||
|
ConstantsService.disableFaviconKey, ConstantsService.lockOptionKey, ConstantsService.localeKey,
|
||||||
|
ConstantsService.lockOptionKey]);
|
||||||
|
|
||||||
|
get<T>(key: string): Promise<T> {
|
||||||
|
let json: string = null;
|
||||||
|
if (this.localStorageKeys.has(key)) {
|
||||||
|
json = window.localStorage.getItem(key);
|
||||||
|
} else {
|
||||||
|
json = window.sessionStorage.getItem(key);
|
||||||
|
}
|
||||||
|
if (json != null) {
|
||||||
|
const obj = JSON.parse(json);
|
||||||
|
return Promise.resolve(obj as T);
|
||||||
|
}
|
||||||
|
return Promise.resolve(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
save(key: string, obj: any): Promise<any> {
|
||||||
|
if (obj == null) {
|
||||||
|
return this.remove(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
const json = JSON.stringify(obj);
|
||||||
|
if (this.localStorageKeys.has(key)) {
|
||||||
|
window.localStorage.setItem(key, json);
|
||||||
|
} else {
|
||||||
|
window.sessionStorage.setItem(key, json);
|
||||||
|
}
|
||||||
|
return Promise.resolve();
|
||||||
|
}
|
||||||
|
|
||||||
|
remove(key: string): Promise<any> {
|
||||||
|
if (this.localStorageKeys.has(key)) {
|
||||||
|
window.localStorage.removeItem(key);
|
||||||
|
} else {
|
||||||
|
window.sessionStorage.removeItem(key);
|
||||||
|
}
|
||||||
|
return Promise.resolve();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
import { StorageService } from 'jslib/abstractions/storage.service';
|
||||||
|
|
||||||
|
export class MemoryStorageService implements StorageService {
|
||||||
|
private store = new Map<string, any>();
|
||||||
|
|
||||||
|
get<T>(key: string): Promise<T> {
|
||||||
|
if (this.store.has(key)) {
|
||||||
|
const obj = this.store.get(key);
|
||||||
|
return Promise.resolve(obj as T);
|
||||||
|
}
|
||||||
|
return Promise.resolve(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
save(key: string, obj: any): Promise<any> {
|
||||||
|
if (obj == null) {
|
||||||
|
return this.remove(key);
|
||||||
|
}
|
||||||
|
this.store.set(key, obj);
|
||||||
|
return Promise.resolve();
|
||||||
|
}
|
||||||
|
|
||||||
|
remove(key: string): Promise<any> {
|
||||||
|
this.store.delete(key);
|
||||||
|
return Promise.resolve();
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,60 +0,0 @@
|
||||||
import { StorageService } from 'jslib/abstractions/storage.service';
|
|
||||||
import { ConstantsService } from 'jslib/services';
|
|
||||||
|
|
||||||
export class WebStorageService implements StorageService {
|
|
||||||
private memoryStore = new Map<string, any>();
|
|
||||||
private memoryKeys = new Set(['key']);
|
|
||||||
private localStorageKeys = new Set(['appId', 'anonymousAppId', 'rememberedEmail',
|
|
||||||
ConstantsService.disableFaviconKey, ConstantsService.lockOptionKey, ConstantsService.localeKey,
|
|
||||||
ConstantsService.lockOptionKey]);
|
|
||||||
|
|
||||||
get<T>(key: string): Promise<T> {
|
|
||||||
if (this.memoryKeys.has(key)) {
|
|
||||||
if (this.memoryStore.has(key)) {
|
|
||||||
const obj = this.memoryStore.get(key);
|
|
||||||
return Promise.resolve(obj as T);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
let json: string = null;
|
|
||||||
if (this.localStorageKeys.has(key)) {
|
|
||||||
json = window.localStorage.getItem(key);
|
|
||||||
} else {
|
|
||||||
json = window.sessionStorage.getItem(key);
|
|
||||||
}
|
|
||||||
if (json != null) {
|
|
||||||
const obj = JSON.parse(json);
|
|
||||||
return Promise.resolve(obj as T);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return Promise.resolve(null);
|
|
||||||
}
|
|
||||||
|
|
||||||
save(key: string, obj: any): Promise<any> {
|
|
||||||
if (obj == null) {
|
|
||||||
return this.remove(key);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.memoryKeys.has(key)) {
|
|
||||||
this.memoryStore.set(key, obj);
|
|
||||||
} else {
|
|
||||||
const json = JSON.stringify(obj);
|
|
||||||
if (this.localStorageKeys.has(key)) {
|
|
||||||
window.localStorage.setItem(key, json);
|
|
||||||
} else {
|
|
||||||
window.sessionStorage.setItem(key, json);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return Promise.resolve();
|
|
||||||
}
|
|
||||||
|
|
||||||
remove(key: string): Promise<any> {
|
|
||||||
if (this.memoryKeys.has(key)) {
|
|
||||||
this.memoryStore.delete(key);
|
|
||||||
} else if (this.localStorageKeys.has(key)) {
|
|
||||||
window.localStorage.removeItem(key);
|
|
||||||
} else {
|
|
||||||
window.sessionStorage.removeItem(key);
|
|
||||||
}
|
|
||||||
return Promise.resolve();
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue