UNPKG

@igo2/core

Version:
115 lines (109 loc) 3.97 kB
import { BehaviorSubject } from 'rxjs'; import * as i0 from '@angular/core'; import { Injectable } from '@angular/core'; import * as i1 from '@igo2/core/config'; var StorageScope; (function (StorageScope) { StorageScope["SESSION"] = "Session"; StorageScope["LOCAL"] = "Local"; })(StorageScope || (StorageScope = {})); var StorageServiceEventEnum; (function (StorageServiceEventEnum) { StorageServiceEventEnum["ADDED"] = "Added"; StorageServiceEventEnum["MODIFIED"] = "Modified"; StorageServiceEventEnum["REMOVED"] = "Removed"; StorageServiceEventEnum["CLEARED"] = "Cleared"; })(StorageServiceEventEnum || (StorageServiceEventEnum = {})); class BaseStorage { options; storageChange$ = new BehaviorSubject(undefined); constructor(config) { this.options = config.getConfig('storage') || { key: 'igo' }; } /** * Use to get the data found in storage file */ get(key, scope) { let value; if (!scope || scope === StorageScope.SESSION) { value = sessionStorage.getItem(`${this.options.key}.${key}`); } if (scope === StorageScope.LOCAL || (!value && !scope)) { value = localStorage.getItem(`${this.options.key}.${key}`); } if (value) { try { return JSON.parse(value); } catch { return value; } } return value; } set(key, value, scope = StorageScope.LOCAL) { const previousValue = this.get(key, scope); if (scope === StorageScope.SESSION) { sessionStorage.setItem(`${this.options.key}.${key}`, JSON.stringify(value)); } else { localStorage.setItem(`${this.options.key}.${key}`, JSON.stringify(value)); } const currentValue = this.get(key, scope); if (currentValue !== previousValue) { this.storageChange$.next({ key, scope, event: previousValue !== undefined ? StorageServiceEventEnum.MODIFIED : StorageServiceEventEnum.ADDED, previousValue, currentValue }); } } remove(key, scope = StorageScope.LOCAL) { const previousValue = this.get(key, scope); if (scope === StorageScope.SESSION) { sessionStorage.removeItem(`${this.options.key}.${key}`); } else { localStorage.removeItem(`${this.options.key}.${key}`); } this.storageChange$.next({ key, scope, event: StorageServiceEventEnum.REMOVED, previousValue }); } clear(scope = StorageScope.LOCAL) { if (scope === StorageScope.SESSION) { sessionStorage.clear(); } else { localStorage.clear(); } this.storageChange$.next({ scope, event: StorageServiceEventEnum.CLEARED }); } } class StorageService extends BaseStorage { config; constructor(config) { super(config); this.config = config; } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: StorageService, deps: [{ token: i1.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: StorageService, providedIn: 'root' }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: StorageService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [{ type: i1.ConfigService }] }); /** * Generated bundle index. Do not edit. */ export { BaseStorage, StorageScope, StorageService, StorageServiceEventEnum }; //# sourceMappingURL=igo2-core-storage.mjs.map