@universis/common
Version:
Universis - common directives and services
107 lines (106 loc) • 13.1 kB
JavaScript
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