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.35 kB
JavaScript
import { StrategyCacheService } from '../core/strategyCache';
import { BaseSyncStorageStrategy } from './baseSyncStorage';
import { Inject, Injectable, NgZone, PLATFORM_ID } from '@angular/core';
import { LOCAL_STORAGE } from '../core/nativeStorage';
import { StorageStrategies } from '../constants/strategy';
import { isPlatformBrowser } from '@angular/common';
export class LocalStorageStrategy extends BaseSyncStorageStrategy {
constructor(storage, cache, platformId, zone) {
super(storage, cache);
this.storage = storage;
this.cache = cache;
this.platformId = platformId;
this.zone = zone;
this.name = LocalStorageStrategy.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 (key !== null)
this.cache.del(this.name, event.key);
else
this.cache.clear(this.name);
this.keyChanges.next(key);
}));
}
}
LocalStorageStrategy.strategyName = StorageStrategies.Local;
LocalStorageStrategy.decorators = [
{ type: Injectable }
];
LocalStorageStrategy.ctorParameters = () => [
{ type: undefined, decorators: [{ type: Inject, args: [LOCAL_STORAGE,] }] },
{ type: StrategyCacheService },
{ type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },
{ type: NgZone }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxTdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXdlYnN0b3JhZ2Uvc3JjL2xpYi9zdHJhdGVnaWVzL2xvY2FsU3RvcmFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUlsRCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsdUJBQXVCO0lBSWhFLFlBQTZDLE9BQW1CLEVBQzFDLEtBQTJCLEVBQ04sVUFBZSxFQUNwQyxJQUFZO1FBQ2pDLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFKc0IsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUMxQyxVQUFLLEdBQUwsS0FBSyxDQUFzQjtRQUNOLGVBQVUsR0FBVixVQUFVLENBQUs7UUFDcEMsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUx6QixTQUFJLEdBQVcsb0JBQW9CLENBQUMsWUFBWSxDQUFDO1FBT3pELElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUFFLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ3RFLENBQUM7SUFFUyxxQkFBcUI7UUFDOUIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDLEtBQW1CLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUM5RSxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssSUFBSSxDQUFDLE9BQU87Z0JBQUUsT0FBTztZQUMvQyxNQUFNLEdBQUcsR0FBVyxLQUFLLENBQUMsR0FBRyxDQUFDO1lBQzlCLElBQUksR0FBRyxLQUFLLElBQUk7Z0JBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7O2dCQUNsRCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBbkJlLGlDQUFZLEdBQVcsaUJBQWlCLENBQUMsS0FBSyxDQUFDOztZQUYvRCxVQUFVOzs7NENBS0csTUFBTSxTQUFDLGFBQWE7WUFiMUIsb0JBQW9COzRDQWVkLE1BQU0sU0FBQyxXQUFXO1lBYkosTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U3RyYXRlZ3lDYWNoZVNlcnZpY2V9IGZyb20gJy4uL2NvcmUvc3RyYXRlZ3lDYWNoZSc7XG5pbXBvcnQge0Jhc2VTeW5jU3RvcmFnZVN0cmF0ZWd5fSBmcm9tICcuL2Jhc2VTeW5jU3RvcmFnZSc7XG5pbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgTmdab25lLCBQTEFURk9STV9JRH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0xPQ0FMX1NUT1JBR0V9IGZyb20gJy4uL2NvcmUvbmF0aXZlU3RvcmFnZSc7XG5pbXBvcnQge1N0b3JhZ2VTdHJhdGVnaWVzfSBmcm9tICcuLi9jb25zdGFudHMvc3RyYXRlZ3knO1xuaW1wb3J0IHtpc1BsYXRmb3JtQnJvd3Nlcn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7V2ViU3RvcmFnZX0gZnJvbSAnLi4vY29yZS9pbnRlcmZhY2VzL3dlYlN0b3JhZ2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTG9jYWxTdG9yYWdlU3RyYXRlZ3kgZXh0ZW5kcyBCYXNlU3luY1N0b3JhZ2VTdHJhdGVneSB7XG5cdHN0YXRpYyByZWFkb25seSBzdHJhdGVneU5hbWU6IHN0cmluZyA9IFN0b3JhZ2VTdHJhdGVnaWVzLkxvY2FsO1xuXHRyZWFkb25seSBuYW1lOiBzdHJpbmcgPSBMb2NhbFN0b3JhZ2VTdHJhdGVneS5zdHJhdGVneU5hbWU7XG5cblx0Y29uc3RydWN0b3IoQEluamVjdChMT0NBTF9TVE9SQUdFKSBwcm90ZWN0ZWQgc3RvcmFnZTogV2ViU3RvcmFnZSxcblx0ICAgICAgICAgICAgcHJvdGVjdGVkIGNhY2hlOiBTdHJhdGVneUNhY2hlU2VydmljZSxcblx0ICAgICAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJvdGVjdGVkIHBsYXRmb3JtSWQ6IGFueSxcblx0ICAgICAgICAgICAgcHJvdGVjdGVkIHpvbmU6IE5nWm9uZSkge1xuXHRcdHN1cGVyKHN0b3JhZ2UsIGNhY2hlKTtcblx0XHRpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgdGhpcy5saXN0ZW5FeHRlcm5hbENoYW5nZXMoKTtcblx0fVxuXG5cdHByb3RlY3RlZCBsaXN0ZW5FeHRlcm5hbENoYW5nZXMoKSB7XG5cdFx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3N0b3JhZ2UnLCAoZXZlbnQ6IFN0b3JhZ2VFdmVudCkgPT4gdGhpcy56b25lLnJ1bigoKSA9PiB7XG5cdFx0XHRpZiAoZXZlbnQuc3RvcmFnZUFyZWEgIT09IHRoaXMuc3RvcmFnZSkgcmV0dXJuO1xuXHRcdFx0Y29uc3Qga2V5OiBzdHJpbmcgPSBldmVudC5rZXk7XG5cdFx0XHRpZiAoa2V5ICE9PSBudWxsKSB0aGlzLmNhY2hlLmRlbCh0aGlzLm5hbWUsIGV2ZW50LmtleSk7XG5cdFx0XHRlbHNlIHRoaXMuY2FjaGUuY2xlYXIodGhpcy5uYW1lKTtcblx0XHRcdHRoaXMua2V5Q2hhbmdlcy5uZXh0KGtleSk7XG5cdFx0fSkpO1xuXHR9XG5cbn1cbiJdfQ==