ngx-webstorage
Version:
This library provides an easy to use service to manage the web storages (local and session) from your Angular application. It provides also two decorators to synchronize the component attributes and the web storages.
41 lines • 5.42 kB
JavaScript
import { StrategyCacheService } from '../core/strategyCache';
import { BaseSyncStorageStrategy } from './baseSyncStorage';
import { Inject, Injectable, NgZone, PLATFORM_ID } from '@angular/core';
import { SESSION_STORAGE } from '../core/nativeStorage';
import { StorageStrategies } from '../constants/strategy';
import { isPlatformBrowser } from '@angular/common';
export class SessionStorageStrategy extends BaseSyncStorageStrategy {
constructor(storage, cache, platformId, zone) {
super(storage, cache);
this.storage = storage;
this.cache = cache;
this.platformId = platformId;
this.zone = zone;
this.name = SessionStorageStrategy.strategyName;
if (isPlatformBrowser(this.platformId))
this.listenExternalChanges();
}
listenExternalChanges() {
window.addEventListener('storage', (event) => this.zone.run(() => {
if (event.storageArea !== this.storage)
return;
const key = event.key;
if (event.key !== null)
this.cache.del(this.name, event.key);
else
this.cache.clear(this.name);
this.keyChanges.next(key);
}));
}
}
SessionStorageStrategy.strategyName = StorageStrategies.Session;
SessionStorageStrategy.decorators = [
{ type: Injectable }
];
SessionStorageStrategy.ctorParameters = () => [
{ type: undefined, decorators: [{ type: Inject, args: [SESSION_STORAGE,] }] },
{ type: StrategyCacheService },
{ type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },
{ type: NgZone }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvblN0b3JhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtd2Vic3RvcmFnZS9zcmMvbGliL3N0cmF0ZWdpZXMvc2Vzc2lvblN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDMUQsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFJbEQsTUFBTSxPQUFPLHNCQUF1QixTQUFRLHVCQUF1QjtJQUlsRSxZQUErQyxPQUFtQixFQUM1QyxLQUEyQixFQUNOLFVBQWUsRUFDcEMsSUFBWTtRQUNqQyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBSndCLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDNUMsVUFBSyxHQUFMLEtBQUssQ0FBc0I7UUFDTixlQUFVLEdBQVYsVUFBVSxDQUFLO1FBQ3BDLFNBQUksR0FBSixJQUFJLENBQVE7UUFMekIsU0FBSSxHQUFXLHNCQUFzQixDQUFDLFlBQVksQ0FBQztRQU8zRCxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFBRSxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUN0RSxDQUFDO0lBRVMscUJBQXFCO1FBQzlCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxLQUFtQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDOUUsSUFBSSxLQUFLLENBQUMsV0FBVyxLQUFLLElBQUksQ0FBQyxPQUFPO2dCQUFFLE9BQU87WUFDL0MsTUFBTSxHQUFHLEdBQVcsS0FBSyxDQUFDLEdBQUcsQ0FBQztZQUM5QixJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssSUFBSTtnQkFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQzs7Z0JBQ3hELElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUFuQmUsbUNBQVksR0FBVyxpQkFBaUIsQ0FBQyxPQUFPLENBQUM7O1lBRmpFLFVBQVU7Ozs0Q0FLRyxNQUFNLFNBQUMsZUFBZTtZQWI1QixvQkFBb0I7NENBZWQsTUFBTSxTQUFDLFdBQVc7WUFiSixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTdHJhdGVneUNhY2hlU2VydmljZX0gZnJvbSAnLi4vY29yZS9zdHJhdGVneUNhY2hlJztcbmltcG9ydCB7QmFzZVN5bmNTdG9yYWdlU3RyYXRlZ3l9IGZyb20gJy4vYmFzZVN5bmNTdG9yYWdlJztcbmltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBOZ1pvbmUsIFBMQVRGT1JNX0lEfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U0VTU0lPTl9TVE9SQUdFfSBmcm9tICcuLi9jb3JlL25hdGl2ZVN0b3JhZ2UnO1xuaW1wb3J0IHtTdG9yYWdlU3RyYXRlZ2llc30gZnJvbSAnLi4vY29uc3RhbnRzL3N0cmF0ZWd5JztcbmltcG9ydCB7aXNQbGF0Zm9ybUJyb3dzZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1dlYlN0b3JhZ2V9IGZyb20gJy4uL2NvcmUvaW50ZXJmYWNlcy93ZWJTdG9yYWdlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNlc3Npb25TdG9yYWdlU3RyYXRlZ3kgZXh0ZW5kcyBCYXNlU3luY1N0b3JhZ2VTdHJhdGVneSB7XG5cdHN0YXRpYyByZWFkb25seSBzdHJhdGVneU5hbWU6IHN0cmluZyA9IFN0b3JhZ2VTdHJhdGVnaWVzLlNlc3Npb247XG5cdHJlYWRvbmx5IG5hbWU6IHN0cmluZyA9IFNlc3Npb25TdG9yYWdlU3RyYXRlZ3kuc3RyYXRlZ3lOYW1lO1xuXG5cdGNvbnN0cnVjdG9yKEBJbmplY3QoU0VTU0lPTl9TVE9SQUdFKSBwcm90ZWN0ZWQgc3RvcmFnZTogV2ViU3RvcmFnZSxcblx0ICAgICAgICAgICAgcHJvdGVjdGVkIGNhY2hlOiBTdHJhdGVneUNhY2hlU2VydmljZSxcblx0ICAgICAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJvdGVjdGVkIHBsYXRmb3JtSWQ6IGFueSxcblx0ICAgICAgICAgICAgcHJvdGVjdGVkIHpvbmU6IE5nWm9uZSkge1xuXHRcdHN1cGVyKHN0b3JhZ2UsIGNhY2hlKTtcblx0XHRpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgdGhpcy5saXN0ZW5FeHRlcm5hbENoYW5nZXMoKTtcblx0fVxuXG5cdHByb3RlY3RlZCBsaXN0ZW5FeHRlcm5hbENoYW5nZXMoKSB7XG5cdFx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3N0b3JhZ2UnLCAoZXZlbnQ6IFN0b3JhZ2VFdmVudCkgPT4gdGhpcy56b25lLnJ1bigoKSA9PiB7XG5cdFx0XHRpZiAoZXZlbnQuc3RvcmFnZUFyZWEgIT09IHRoaXMuc3RvcmFnZSkgcmV0dXJuO1xuXHRcdFx0Y29uc3Qga2V5OiBzdHJpbmcgPSBldmVudC5rZXk7XG5cdFx0XHRpZiAoZXZlbnQua2V5ICE9PSBudWxsKSB0aGlzLmNhY2hlLmRlbCh0aGlzLm5hbWUsIGV2ZW50LmtleSk7XG5cdFx0XHRlbHNlIHRoaXMuY2FjaGUuY2xlYXIodGhpcy5uYW1lKTtcblx0XHRcdHRoaXMua2V5Q2hhbmdlcy5uZXh0KGtleSk7XG5cdFx0fSkpO1xuXHR9XG5cbn1cbiJdfQ==