UNPKG

@universis/common

Version:

Universis - common directives and services

107 lines (106 loc) 13.1 kB
import * as tslib_1 from "tslib"; import { AngularDataContext } from '@themost/angular'; import { UserStorageService } from './user-storage'; import { Inject, Injectable, InjectionToken, Optional } from '@angular/core'; import { LocalUserStorageService, SessionUserStorageService } from './browser-storage.service'; export const USER_STORAGE = new InjectionToken('user-storage.location'); export class FallbackUserStorageService { constructor(_context, userStorage) { this._context = _context; this.userStorage = userStorage; this._useSessionStorage = true; this._useLocalStorage = false; this._userStorageService = new UserStorageService(_context); this._userStorageService.hasUserStorage().then((res) => { this._hasUserStorage = res; if (!this._hasUserStorage && userStorage) { if (userStorage.sessionStorage !== undefined) { this.userSessionStorage = userStorage.sessionStorage; this._sessionUserStorage = this.userSessionStorage ? new SessionUserStorageService(_context) : undefined; } if (userStorage.localStorage !== undefined) { this.userLocalStorage = userStorage.localStorage; this._localUserStorage = this.userLocalStorage ? new LocalUserStorageService(_context) : undefined; } } }); } get userLocalStorage() { return this._useLocalStorage; } set userLocalStorage(useLocal) { this._useLocalStorage = useLocal; } get userSessionStorage() { return this._useSessionStorage; } set userSessionStorage(useSession) { this._useSessionStorage = useSession; } getItem(key) { return tslib_1.__awaiter(this, void 0, void 0, function* () { const userStorage = yield this._userStorageService.hasUserStorage(); if (userStorage) { return this._userStorageService.getItem(key); } else { if (this.userSessionStorage) { return this._sessionUserStorage.getItem(key); } else if (this.userLocalStorage) { return this._localUserStorage.getItem(key); } else { throw new Error('No user storage provider was found'); } } }); } setItem(key, value) { return tslib_1.__awaiter(this, void 0, void 0, function* () { const userStorage = yield this._userStorageService.hasUserStorage(); if (userStorage) { return this._userStorageService.setItem(key, value); } else { if (this.userSessionStorage) { return this._sessionUserStorage.setItem(key, value); } else if (this.userLocalStorage) { return this._localUserStorage.setItem(key, value); } else { throw new Error('No user storage provider was found'); } } }); } removeItem(key) { return tslib_1.__awaiter(this, void 0, void 0, function* () { const userStorage = yield this._userStorageService.hasUserStorage(); if (userStorage) { return this._userStorageService.removeItem(key); } else { if (this.userSessionStorage) { return this._sessionUserStorage.removeItem(key); } else if (this.userLocalStorage) { return this._localUserStorage.removeItem(key); } else { throw new Error('No user storage provider was found'); } } }); } } FallbackUserStorageService.decorators = [ { type: Injectable } ]; /** @nocollapse */ FallbackUserStorageService.ctorParameters = () => [ { type: AngularDataContext }, { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [USER_STORAGE,] }] } ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFsbGJhY2stdXNlci1zdG9yYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdW5pdmVyc2lzL2NvbW1vbi8iLCJzb3VyY2VzIjpbInNoYXJlZC9zZXJ2aWNlcy9mYWxsYmFjay11c2VyLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUseUJBQXlCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQU83RixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxjQUFjLENBQXVCLHVCQUF1QixDQUFDLENBQUM7QUFJOUYsTUFBTTtJQVNKLFlBQW9CLFFBQTRCLEVBQ00sV0FBa0M7UUFEcEUsYUFBUSxHQUFSLFFBQVEsQ0FBb0I7UUFDTSxnQkFBVyxHQUFYLFdBQVcsQ0FBdUI7UUFSaEYsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQzFCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQVEvQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDckQsSUFBSSxDQUFDLGVBQWUsR0FBRyxHQUFHLENBQUM7WUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksV0FBVyxFQUFFO2dCQUN4QyxJQUFJLFdBQVcsQ0FBQyxjQUFjLEtBQUssU0FBUyxFQUFFO29CQUM1QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsV0FB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QUFFO29CQUMzQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ2pEO3FCQUFNLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO29CQUNoQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQy9DO3FCQUFNO29CQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztpQkFDdkQ7YUFDRjtRQUNILENBQUM7S0FBQTs7O1lBdkZGLFVBQVU7Ozs7WUFiSCxrQkFBa0I7NENBd0JYLFFBQVEsWUFBSSxNQUFNLFNBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QW5ndWxhckRhdGFDb250ZXh0fSBmcm9tICdAdGhlbW9zdC9hbmd1bGFyJztcbmltcG9ydCB7VXNlclN0b3JhZ2VTZXJ2aWNlfSBmcm9tICcuL3VzZXItc3RvcmFnZSc7XG5pbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TG9jYWxVc2VyU3RvcmFnZVNlcnZpY2UsIFNlc3Npb25Vc2VyU3RvcmFnZVNlcnZpY2V9IGZyb20gJy4vYnJvd3Nlci1zdG9yYWdlLnNlcnZpY2UnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVXNlclN0b3JhZ2VJbnRlcmZhY2Uge1xuICBsb2NhbFN0b3JhZ2U6IGJvb2xlYW47XG4gIHNlc3Npb25TdG9yYWdlOiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgVVNFUl9TVE9SQUdFID0gbmV3IEluamVjdGlvblRva2VuPFVzZXJTdG9yYWdlSW50ZXJmYWNlPigndXNlci1zdG9yYWdlLmxvY2F0aW9uJyk7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZhbGxiYWNrVXNlclN0b3JhZ2VTZXJ2aWNlIHtcblxuICBwcml2YXRlIF91c2VTZXNzaW9uU3RvcmFnZSA9IHRydWU7XG4gIHByaXZhdGUgX3VzZUxvY2FsU3RvcmFnZSA9IGZhbHNlO1xuICBwcml2YXRlIF9oYXNVc2VyU3RvcmFnZTogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfdXNlclN0b3JhZ2VTZXJ2aWNlOiBVc2VyU3RvcmFnZVNlcnZpY2U7XG4gIHByaXZhdGUgX2xvY2FsVXNlclN0b3JhZ2U6IExvY2FsVXNlclN0b3JhZ2VTZXJ2aWNlO1xuICBwcml2YXRlIF9zZXNzaW9uVXNlclN0b3JhZ2U6IFNlc3Npb25Vc2VyU3RvcmFnZVNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfY29udGV4dDogQW5ndWxhckRhdGFDb250ZXh0LFxuICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFVTRVJfU1RPUkFHRSkgcHJpdmF0ZSB1c2VyU3RvcmFnZT86IFVzZXJTdG9yYWdlSW50ZXJmYWNlKSB7XG4gICAgdGhpcy5fdXNlclN0b3JhZ2VTZXJ2aWNlID0gbmV3IFVzZXJTdG9yYWdlU2VydmljZShfY29udGV4dCk7XG4gICAgdGhpcy5fdXNlclN0b3JhZ2VTZXJ2aWNlLmhhc1VzZXJTdG9yYWdlKCkudGhlbigocmVzKSA9PiB7XG4gICAgICB0aGlzLl9oYXNVc2VyU3RvcmFnZSA9IHJlcztcbiAgICAgIGlmICghdGhpcy5faGFzVXNlclN0b3JhZ2UgJiYgdXNlclN0b3JhZ2UpIHtcbiAgICAgICAgaWYgKHVzZXJTdG9yYWdlLnNlc3Npb25TdG9yYWdlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLnVzZXJTZXNzaW9uU3RvcmFnZSA9IHVzZXJTdG9yYWdlLnNlc3Npb25TdG9yYWdlO1xuICAgICAgICAgIHRoaXMuX3Nlc3Npb25Vc2VyU3RvcmFnZSA9IHRoaXMudXNlclNlc3Npb25TdG9yYWdlID8gbmV3IFNlc3Npb25Vc2VyU3RvcmFnZVNlcnZpY2UoX2NvbnRleHQpIDogdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1c2VyU3RvcmFnZS5sb2NhbFN0b3JhZ2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMudXNlckxvY2FsU3RvcmFnZSA9IHVzZXJTdG9yYWdlLmxvY2FsU3RvcmFnZTtcbiAgICAgICAgICB0aGlzLl9sb2NhbFVzZXJTdG9yYWdlID0gdGhpcy51c2VyTG9jYWxTdG9yYWdlID8gbmV3IExvY2FsVXNlclN0b3JhZ2VTZXJ2aWNlKF9jb250ZXh0KSA6IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0IHVzZXJMb2NhbFN0b3JhZ2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3VzZUxvY2FsU3RvcmFnZTtcbiAgfVxuXG4gIHNldCB1c2VyTG9jYWxTdG9yYWdlKHVzZUxvY2FsOiBib29sZWFuKSB7XG4gICAgdGhpcy5fdXNlTG9jYWxTdG9yYWdlID0gdXNlTG9jYWw7XG4gIH1cblxuICBnZXQgdXNlclNlc3Npb25TdG9yYWdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl91c2VTZXNzaW9uU3RvcmFnZTtcbiAgfVxuXG4gIHNldCB1c2VyU2Vzc2lvblN0b3JhZ2UodXNlU2Vzc2lvbjogYm9vbGVhbikge1xuICAgIHRoaXMuX3VzZVNlc3Npb25TdG9yYWdlID0gdXNlU2Vzc2lvbjtcbiAgfVxuXG4gIGFzeW5jIGdldEl0ZW0oa2V5OiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHVzZXJTdG9yYWdlID0gYXdhaXQgdGhpcy5fdXNlclN0b3JhZ2VTZXJ2aWNlLmhhc1VzZXJTdG9yYWdlKCk7XG4gICAgaWYgKHVzZXJTdG9yYWdlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdXNlclN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oa2V5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMudXNlclNlc3Npb25TdG9yYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZXNzaW9uVXNlclN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnVzZXJMb2NhbFN0b3JhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvY2FsVXNlclN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyB1c2VyIHN0b3JhZ2UgcHJvdmlkZXIgd2FzIGZvdW5kJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2V0SXRlbShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgdXNlclN0b3JhZ2UgPSBhd2FpdCB0aGlzLl91c2VyU3RvcmFnZVNlcnZpY2UuaGFzVXNlclN0b3JhZ2UoKTtcbiAgICBpZiAodXNlclN0b3JhZ2UpIHtcbiAgICAgIHJldHVybiB0aGlzLl91c2VyU3RvcmFnZVNlcnZpY2Uuc2V0SXRlbShrZXksIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMudXNlclNlc3Npb25TdG9yYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZXNzaW9uVXNlclN0b3JhZ2Uuc2V0SXRlbShrZXksIHZhbHVlKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy51c2VyTG9jYWxTdG9yYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb2NhbFVzZXJTdG9yYWdlLnNldEl0ZW0oa2V5LCB2YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHVzZXIgc3RvcmFnZSBwcm92aWRlciB3YXMgZm91bmQnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyByZW1vdmVJdGVtKGtleTogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCB1c2VyU3RvcmFnZSA9IGF3YWl0IHRoaXMuX3VzZXJTdG9yYWdlU2VydmljZS5oYXNVc2VyU3RvcmFnZSgpO1xuICAgIGlmICh1c2VyU3RvcmFnZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3VzZXJTdG9yYWdlU2VydmljZS5yZW1vdmVJdGVtKGtleSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLnVzZXJTZXNzaW9uU3RvcmFnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2Vzc2lvblVzZXJTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy51c2VyTG9jYWxTdG9yYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb2NhbFVzZXJTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gdXNlciBzdG9yYWdlIHByb3ZpZGVyIHdhcyBmb3VuZCcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19