air-lib
Version:
This is Air's angular component library
206 lines • 15.6 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable } from '@angular/core';
import { CookieService } from 'ngx-cookie-service';
import { Router } from '@angular/router';
import { User } from '../entities/user';
import { BusMessageType } from '../entities/bus-message-type';
import { SessionContext } from './../entities/session-context';
import * as moment from 'moment'; // add this 1 of 4
// add this 1 of 4
import { CommunicationService } from './communication.service';
import * as i0 from "@angular/core";
import * as i1 from "ngx-cookie-service/cookie-service/cookie.service";
import * as i2 from "@angular/router";
import * as i3 from "../entities/session-context";
var SessionService = /** @class */ (function () {
function SessionService(cookiesService, router, sessionContext) {
var _this = this;
this.cookiesService = cookiesService;
this.router = router;
this.sessionContext = sessionContext;
this.userKey = 'AirUser';
this.adminAccessTokenKey = 'AirAdminToken';
this.adminReturnUrlKey = 'AirAdminReturnUrl';
this.isImpersonatedKey = 'AirIsImpersonated';
this.apiServer = sessionContext.apiServer;
/** @type {?} */
var userJson = localStorage.getItem(this.userKey);
this.user = userJson ? JSON.parse(userJson) : new User();
this.InitComponent();
this.isAuthenticated = false;
this.accessToken = '' + localStorage.getItem(SessionService.AccessTokenKey);
this.activities = new Array();
this.subscribeMessageBus = CommunicationService.getMessageBus()
.subscribe(function (msg) {
if (msg.name === BusMessageType.NewUserLogin) {
_this.referralTree = null;
}
});
}
/**
* @return {?}
*/
SessionService.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
if (this.subscribeMessageBus) {
this.subscribeMessageBus.unsubscribe();
}
};
/**
* @param {?} activity
* @return {?}
*/
SessionService.prototype.hasActivity = /**
* @param {?} activity
* @return {?}
*/
function (activity) {
if (this.isAuthenticated && !this.activities.length) {
this.getActivitiesFromCookie();
}
if (!this.activities || !activity || !this.isAuthenticated) {
return false;
}
return this.activities.indexOf(activity) !== -1;
};
/**
* @param {?} userData
* @return {?}
*/
SessionService.prototype.setUser = /**
* @param {?} userData
* @return {?}
*/
function (userData) {
this.user = userData;
/** @type {?} */
var userJson = JSON.stringify(this.user);
localStorage.setItem(this.userKey, userJson);
this.InitComponent();
};
/**
* @param {?} userProfileData
* @return {?}
*/
SessionService.prototype.setUserProfile = /**
* @param {?} userProfileData
* @return {?}
*/
function (userProfileData) {
this.userProfile = userProfileData;
CommunicationService.get().emit(this.userProfile);
};
/**
* @param {?} referralTree
* @return {?}
*/
SessionService.prototype.setReferralTree = /**
* @param {?} referralTree
* @return {?}
*/
function (referralTree) {
this.referralTree = referralTree;
CommunicationService.get().emit(this.referralTree);
};
/**
* @private
* @return {?}
*/
SessionService.prototype.InitComponent = /**
* @private
* @return {?}
*/
function () {
moment.locale(this.user.locale ? this.user.locale : 'ru');
};
/**
* @private
* @return {?}
*/
SessionService.prototype.getActivitiesFromCookie = /**
* @private
* @return {?}
*/
function () {
/** @type {?} */
var activities = this.cookiesService.get('Activities');
this.activities = activities ? JSON.parse(activities) : [];
};
/**
* @return {?}
*/
SessionService.prototype.isImpersonated = /**
* @return {?}
*/
function () {
return Boolean(localStorage.getItem(this.isImpersonatedKey) === 'true'
? localStorage.getItem(this.isImpersonatedKey)
: false);
};
SessionService.AccessTokenKey = 'AirToken';
SessionService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
SessionService.ctorParameters = function () { return [
{ type: CookieService },
{ type: Router },
{ type: SessionContext }
]; };
/** @nocollapse */ SessionService.ngInjectableDef = i0.defineInjectable({ factory: function SessionService_Factory() { return new SessionService(i0.inject(i1.CookieService), i0.inject(i2.Router), i0.inject(i3.SessionContext)); }, token: SessionService, providedIn: "root" });
return SessionService;
}());
export { SessionService };
if (false) {
/** @type {?} */
SessionService.AccessTokenKey;
/** @type {?} */
SessionService.prototype.user;
/** @type {?} */
SessionService.prototype.isAuthenticated;
/** @type {?} */
SessionService.prototype.userProfile;
/** @type {?} */
SessionService.prototype.referralTree;
/** @type {?} */
SessionService.prototype.userKey;
/** @type {?} */
SessionService.prototype.adminAccessTokenKey;
/** @type {?} */
SessionService.prototype.adminReturnUrlKey;
/** @type {?} */
SessionService.prototype.isImpersonatedKey;
/** @type {?} */
SessionService.prototype.apiServer;
/** @type {?} */
SessionService.prototype.accessToken;
/** @type {?} */
SessionService.prototype.activities;
/**
* @type {?}
* @private
*/
SessionService.prototype.subscribeMessageBus;
/**
* @type {?}
* @private
*/
SessionService.prototype.cookiesService;
/**
* @type {?}
* @private
*/
SessionService.prototype.router;
/**
* @type {?}
* @private
*/
SessionService.prototype.sessionContext;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYWlyLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9zZXNzaW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHeEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUUvRCxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQyxDQUFDLGtCQUFrQjs7QUFDcEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7O0FBRS9EO0lBdUJFLHdCQUNVLGNBQTZCLEVBQzdCLE1BQWMsRUFDZCxjQUE4QjtRQUh4QyxpQkFxQkM7UUFwQlMsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0IsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQWZqQyxZQUFPLEdBQUcsU0FBUyxDQUFDO1FBRXBCLHdCQUFtQixHQUFHLGVBQWUsQ0FBQztRQUN0QyxzQkFBaUIsR0FBRyxtQkFBbUIsQ0FBQztRQUN4QyxzQkFBaUIsR0FBRyxtQkFBbUIsQ0FBQztRQWE3QyxJQUFJLENBQUMsU0FBUyxHQUFHLGNBQWMsQ0FBQyxTQUFTLENBQUM7O1lBRXBDLFFBQVEsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDbkQsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLElB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T0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssTUFBTTtZQUNwRSxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7WUFDOUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQXBGYSw2QkFBYyxHQUFHLFVBQVUsQ0FBQzs7Z0JBTDNDLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OztnQkFkUSxhQUFhO2dCQUNiLE1BQU07Z0JBTU4sY0FBYzs7O3lCQVJ2QjtDQXVHQyxBQTFGRCxJQTBGQztTQXRGWSxjQUFjOzs7SUFDekIsOEJBQTBDOztJQUUxQyw4QkFBa0I7O0lBQ2xCLHlDQUFnQzs7SUFDaEMscUNBQXVDOztJQUN2QyxzQ0FBeUI7O0lBQ3pCLGlDQUEyQjs7SUFFM0IsNkNBQTZDOztJQUM3QywyQ0FBK0M7O0lBQy9DLDJDQUErQzs7SUFHL0MsbUNBQXlCOztJQUN6QixxQ0FBMkI7O0lBQzNCLG9DQUFpQzs7Ozs7SUFDakMsNkNBQTBDOzs7OztJQUd4Qyx3Q0FBcUM7Ozs7O0lBQ3JDLGdDQUFzQjs7Ozs7SUFDdEIsd0NBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvb2tpZVNlcnZpY2UgfSBmcm9tICduZ3gtY29va2llLXNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVXNlciB9IGZyb20gJy4uL2VudGl0aWVzL3VzZXInO1xyXG5pbXBvcnQgeyBVc2VyUHJvZmlsZSB9IGZyb20gJy4uL2VudGl0aWVzL3VzZXItcHJvZmlsZSc7XHJcbmltcG9ydCB7IEJ1c01lc3NhZ2UgfSBmcm9tICcuLi9lbnRpdGllcy9idXMtbWVzc2FnZSc7XHJcbmltcG9ydCB7IEJ1c01lc3NhZ2VUeXBlIH0gZnJvbSAnLi4vZW50aXRpZXMvYnVzLW1lc3NhZ2UtdHlwZSc7XHJcbmltcG9ydCB7IFNlc3Npb25Db250ZXh0IH0gZnJvbSAnLi8uLi9lbnRpdGllcy9zZXNzaW9uLWNvbnRleHQnO1xyXG5cclxuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7IC8vIGFkZCB0aGlzIDEgb2YgNFxyXG5pbXBvcnQgeyBDb21tdW5pY2F0aW9uU2VydmljZSB9IGZyb20gJy4vY29tbXVuaWNhdGlvbi5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBTZXNzaW9uU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgcHVibGljIHN0YXRpYyBBY2Nlc3NUb2tlbktleSA9ICdBaXJUb2tlbic7XHJcblxyXG4gIHB1YmxpYyB1c2VyOiBVc2VyO1xyXG4gIHB1YmxpYyBpc0F1dGhlbnRpY2F0ZWQ6IGJvb2xlYW47XHJcbiAgcHVibGljIHVzZXJQcm9maWxlOiBVc2VyUHJvZmlsZSB8IG51bGw7XHJcbiAgcHVibGljIHJlZmVycmFsVHJlZTogYW55O1xyXG4gIHB1YmxpYyB1c2VyS2V5ID0gJ0FpclVzZXInO1xyXG5cclxuICBwdWJsaWMgYWRtaW5BY2Nlc3NUb2tlbktleSA9ICdBaXJBZG1pblRva2VuJztcclxuICBwdWJsaWMgYWRtaW5SZXR1cm5VcmxLZXkgPSAnQWlyQWRtaW5SZXR1cm5VcmwnO1xyXG4gIHB1YmxpYyBpc0ltcGVyc29uYXRlZEtleSA9ICdBaXJJc0ltcGVyc29uYXRlZCc7XHJcblxyXG5cclxuICBwdWJsaWMgYXBpU2VydmVyOiBzdHJpbmc7XHJcbiAgcHVibGljIGFjY2Vzc1Rva2VuOiBzdHJpbmc7XHJcbiAgcHVibGljIGFjdGl2aXRpZXM6IEFycmF5PHN0cmluZz47XHJcbiAgcHJpdmF0ZSBzdWJzY3JpYmVNZXNzYWdlQnVzOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjb29raWVzU2VydmljZTogQ29va2llU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHNlc3Npb25Db250ZXh0OiBTZXNzaW9uQ29udGV4dFxyXG4gICkge1xyXG4gICAgdGhpcy5hcGlTZXJ2ZXIgPSBzZXNzaW9uQ29udGV4dC5hcGlTZXJ2ZXI7XHJcblxyXG4gICAgY29uc3QgdXNlckpzb24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnVzZXJLZXkpO1xyXG4gICAgdGhpcy51c2VyID0gdXNlckpzb24gPyBKU09OLnBhcnNlKHVzZXJKc29uKSA6IG5ldyBVc2VyKCk7XHJcbiAgICB0aGlzLkluaXRDb21wb25lbnQoKTtcclxuXHJcbiAgICB0aGlzLmlzQXV0aGVudGljYXRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5hY2Nlc3NUb2tlbiA9ICcnICsgbG9jYWxTdG9yYWdlLmdldEl0ZW0oU2Vzc2lvblNlcnZpY2UuQWNjZXNzVG9rZW5LZXkpO1xyXG4gICAgdGhpcy5hY3Rpdml0aWVzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmliZU1lc3NhZ2VCdXMgPSBDb21tdW5pY2F0aW9uU2VydmljZS5nZXRNZXNzYWdlQnVzKClcclxuICAgIC5zdWJzY3JpYmUoKG1zZzogQnVzTWVzc2FnZSkgPT4ge1xyXG4gICAgICBpZiAobXNnLm5hbWUgPT09IEJ1c01lc3NhZ2VUeXBlLk5ld1VzZXJMb2dpbikge1xyXG4gICAgICAgIHRoaXMucmVmZXJyYWxUcmVlID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnN1YnNjcmliZU1lc3NhZ2VCdXMpIHtcclxuICAgICAgdGhpcy5zdWJzY3JpYmVNZXNzYWdlQnVzLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYXNBY3Rpdml0eShhY3Rpdml0eTogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5pc0F1dGhlbnRpY2F0ZWQgJiYgIXRoaXMuYWN0aXZpdGllcy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5nZXRBY3Rpdml0aWVzRnJvbUNvb2tpZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmFjdGl2aXRpZXMgfHwgIWFjdGl2aXR5IHx8ICF0aGlzLmlzQXV0aGVudGljYXRlZCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5hY3Rpdml0aWVzLmluZGV4T2YoYWN0aXZpdHkpICE9PSAtMTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRVc2VyKHVzZXJEYXRhOiBVc2VyKSB7XHJcbiAgICB0aGlzLnVzZXIgPSB1c2VyRGF0YTtcclxuICAgIGNvbnN0IHVzZXJKc29uID0gSlNPTi5zdHJpbmdpZnkodGhpcy51c2VyKTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMudXNlcktleSwgdXNlckpzb24pO1xyXG4gICAgdGhpcy5Jbml0Q29tcG9uZW50KCk7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXRVc2VyUHJvZmlsZSh1c2VyUHJvZmlsZURhdGE6IFVzZXJQcm9maWxlKSB7XHJcbiAgICB0aGlzLnVzZXJQcm9maWxlID0gdXNlclByb2ZpbGVEYXRhO1xyXG4gICAgQ29tbXVuaWNhdGlvblNlcnZpY2UuZ2V0KCkuZW1pdCh0aGlzLnVzZXJQcm9maWxlKTtcclxuICB9XHJcbiAgcHVibGljIHNldFJlZmVycmFsVHJlZShyZWZlcnJhbFRyZWU6IGFueSkge1xyXG4gICAgdGhpcy5yZWZlcnJhbFRyZWUgPSByZWZlcnJhbFRyZWU7XHJcbiAgICBDb21tdW5pY2F0aW9uU2VydmljZS5nZXQoKS5lbWl0KHRoaXMucmVmZXJyYWxUcmVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgSW5pdENvbXBvbmVudCgpIHtcclxuICAgIG1vbWVudC5sb2NhbGUodGhpcy51c2VyLmxvY2FsZSA/IHRoaXMudXNlci5sb2NhbGUgOiAncnUnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0QWN0aXZpdGllc0Zyb21Db29raWUoKSB7XHJcbiAgICBjb25zdCBhY3Rpdml0aWVzID0gdGhpcy5jb29raWVzU2VydmljZS5nZXQoJ0FjdGl2aXRpZXMnKTtcclxuICAgIHRoaXMuYWN0aXZpdGllcyA9IGFjdGl2aXRpZXMgPyBKU09OLnBhcnNlKGFjdGl2aXRpZXMpIDogW107XHJcbiAgfVxyXG4gIHB1YmxpYyBpc0ltcGVyc29uYXRlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBCb29sZWFuKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuaXNJbXBlcnNvbmF0ZWRLZXkpID09PSAndHJ1ZSdcclxuICAgICAgPyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmlzSW1wZXJzb25hdGVkS2V5KVxyXG4gICAgICA6IGZhbHNlKTtcclxuICB9XHJcbn1cclxuIl19