UNPKG

air-lib

Version:

This is Air's angular component library

196 lines 18.7 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { StatusOnYoutube } from './../entities/status-on-youtube'; import { Injectable } from '@angular/core'; import { SessionContext } from '../entities/session-context'; import { BannerMode } from '../entities/banner-mode.enum'; import { Avatar } from '../entities/avatar'; import { DomSanitizer } from '@angular/platform-browser'; import { StatusOnOurCms } from '../entities/status-on-our-cms'; import * as i0 from "@angular/core"; import * as i1 from "../entities/session-context"; import * as i2 from "@angular/platform-browser"; var UtilityService = /** @class */ (function () { function UtilityService(sessionContext, sanitizer) { this.sessionContext = sessionContext; this.sanitizer = sanitizer; this.mapping = new Map(); this.recursionLimit = 0; /** @type {?} */ var apiCallTemplate = 'api/Profile/GetPhoto/'; this.mapping.set(BannerMode.Unknown, new Avatar('https://al32blob.blob.core.windows.net/images/ManagerAvatar.png', apiCallTemplate)); this.mapping.set(BannerMode.ManagerAvatar, new Avatar('https://al32blob.blob.core.windows.net/images/ManagerAvatar.png', apiCallTemplate)); this.mapping.set(BannerMode.PartnerAvatar, new Avatar('https://al32blob.blob.core.windows.net/images/PartnerAvatar.png', apiCallTemplate)); this.mapping.set(BannerMode.YouTubeChannelAvatar, new Avatar('https://al32blob.blob.core.windows.net/images/YouTubeChannelAvatar.png', apiCallTemplate)); this.mapping.set(BannerMode.YouTubeVideoAvatar, new Avatar('https://al32blob.blob.core.windows.net/images/YouTubeVideoAvatar.png', apiCallTemplate)); this.mapping.set(BannerMode.YouTubeChannelBanner, new Avatar('https://al32blob.blob.core.windows.net/images/YouTubeChannelBanner.png', apiCallTemplate)); this.mapping.set(BannerMode.YouTubeChannelAvatarBlockedOrDelete, new Avatar('https://al32blob.blob.core.windows.net/images/YouTubeChannelAvatarBlockedOrDelete.png', apiCallTemplate)); this.mapping.set(BannerMode.PaymentSystemLogo, new Avatar('https://al32blob.blob.core.windows.net/images/PaymentSystemLogo.png', apiCallTemplate)); } /** * @param {?} ourStatus * @param {?} youtubeStatus * @return {?} */ UtilityService.getListClassesByChannelStatus = /** * @param {?} ourStatus * @param {?} youtubeStatus * @return {?} */ function (ourStatus, youtubeStatus) { return ("StatusOnOurCms-" + StatusOnOurCms[ourStatus] + " StatusOnYoutube-" + StatusOnYoutube[youtubeStatus]).toLocaleLowerCase(); }; /** * @param {?} bannerMode * @return {?} */ UtilityService.prototype.getAvatarByMode = /** * @param {?} bannerMode * @return {?} */ function (bannerMode) { /** @type {?} */ var avatar = this.mapping.get(bannerMode); if (avatar === undefined) { throw new Error('Banner mode ' + bannerMode + ' does not exists.'); } return avatar.defaultAvatar; }; /** * @param {?} bannerMode * @param {?=} id * @return {?} */ UtilityService.prototype.photoUrl = /** * @param {?} bannerMode * @param {?=} id * @return {?} */ function (bannerMode, id) { if (id === void 0) { id = ''; } if (!id) { return this.getAvatarByMode(bannerMode); } if (!this.mapping.has(bannerMode)) { throw new Error('Unknown banner mode'); } /** @type {?} */ var avatar = this.mapping.get(bannerMode); if (avatar === undefined) { throw new Error('Banner mode ' + bannerMode + ' does not exists.'); } return this.sessionContext.apiServer + avatar.apiCall + id + '/mode/' + bannerMode; }; /** * @param {?} bannerMode * @param {?=} id * @return {?} */ UtilityService.prototype.getPhotoStyleUrl = /** * @param {?} bannerMode * @param {?=} id * @return {?} */ function (bannerMode, id) { if (id === void 0) { id = ''; } /** @type {?} */ var uri = this.photoUrl(bannerMode, id); /** @type {?} */ var url = 'url(' + uri + ')'; return this.sanitizer.bypassSecurityTrustStyle(url); }; // depricated method, should be removed after partner area upgrading // depricated method, should be removed after partner area upgrading /** * @param {?} id * @return {?} */ UtilityService.prototype.getPhotoUrl = // depricated method, should be removed after partner area upgrading /** * @param {?} id * @return {?} */ function (id) { return (!id) ? 'assets/img/default-avatar.png' : this.sessionContext.apiServer + 'api/Profile/GetPhoto/' + id; }; /** * @param {?} tree * @param {?} action * @return {?} */ UtilityService.prototype.traverseAndDo = /** * @param {?} tree * @param {?} action * @return {?} */ function (tree, action) { var _this = this; tree.forEach(function (node) { if (node.childrens != null && node.childrens.length > 0) { _this.traverseAndDo(node.childrens, action); } else { action.execute(node); } }); }; /** * @param {?} tree * @param {?} action * @param {?} maxCount * @return {?} */ UtilityService.prototype.traverseAndLimitedDo = /** * @param {?} tree * @param {?} action * @param {?} maxCount * @return {?} */ function (tree, action, maxCount) { var _this = this; tree.forEach(function (node) { if (node.childrens != null && node.childrens.length > 0 && _this.recursionLimit < maxCount) { _this.traverseAndLimitedDo(node.childrens, action, maxCount); } else { _this.recursionLimit++; action.execute(node); } }); }; UtilityService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; UtilityService.ctorParameters = function () { return [ { type: SessionContext }, { type: DomSanitizer } ]; }; /** @nocollapse */ UtilityService.ngInjectableDef = i0.defineInjectable({ factory: function UtilityService_Factory() { return new UtilityService(i0.inject(i1.SessionContext), i0.inject(i2.DomSanitizer)); }, token: UtilityService, providedIn: "root" }); return UtilityService; }()); export { UtilityService }; if (false) { /** @type {?} */ UtilityService.prototype.mapping; /** * @type {?} * @private */ UtilityService.prototype.recursionLimit; /** * @type {?} * @private */ UtilityService.prototype.sessionContext; /** * @type {?} * @private */ UtilityService.prototype.sanitizer; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0eS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYWlyLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy91dGlsaXR5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDMUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVDLE9BQU8sRUFBYSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7QUFJL0Q7SUFRRSx3QkFDVSxjQUE4QixFQUM5QixTQUF1QjtRQUR2QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUwxQixZQUFPLEdBQTRCLElBQUksR0FBRyxFQUFzQixDQUFDO1FBRWhFLG1CQUFjLEdBQUcsQ0FBQyxDQUFDOztZQU1uQixlQUFlLEdBQUcsdUJBQXVCO1FBQy9DLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUNkLFVBQVUsQ0FBQyxPQUFPLEVBQ2xCLElBQUksTUFBTSxDQUFDLGlFQUFpRSxFQUFFLGVBQWUsQ0FBQyxDQUMvRixDQUFDO1FBQ0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQ2QsVUFBVSxDQUFDLGFBQWEsRUFDeEIsSUFBSSxNQUFNLENBQUMsaUVBQWlFLEVBQUUsZUFBZSxDQUFDLENBQy9GLENBQUM7UUFDRixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FDZCxVQUFVLENBQUMsYUFBYSxFQUN4QixJQUFJLE1BQU0sQ0FB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QkFHSCxZQUFZOzs7eUJBTGhDO0NBdUhDLEFBN0dELElBNkdDO1NBekdZLGNBQWM7OztJQUN6QixpQ0FBd0U7Ozs7O0lBRXhFLHdDQUEyQjs7Ozs7SUFFekIsd0NBQXNDOzs7OztJQUN0QyxtQ0FBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGF0dXNPbllvdXR1YmUgfSBmcm9tICcuLy4uL2VudGl0aWVzL3N0YXR1cy1vbi15b3V0dWJlJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTZXNzaW9uQ29udGV4dCB9IGZyb20gJy4uL2VudGl0aWVzL3Nlc3Npb24tY29udGV4dCc7XHJcbmltcG9ydCB7IEJhbm5lck1vZGUgfSBmcm9tICcuLi9lbnRpdGllcy9iYW5uZXItbW9kZS5lbnVtJztcclxuaW1wb3J0IHsgQXZhdGFyIH0gZnJvbSAnLi4vZW50aXRpZXMvYXZhdGFyJztcclxuaW1wb3J0IHsgU2FmZVN0eWxlLCBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgU3RhdHVzT25PdXJDbXMgfSBmcm9tICcuLi9lbnRpdGllcy9zdGF0dXMtb24tb3VyLWNtcyc7XHJcbmltcG9ydCB7IElDb21tYW5kIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pY29tbWFuZCc7XHJcbmltcG9ydCB7IElUaWxlSW5mb05vZGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2l0aWxlLWluZm8tbm9kZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgVXRpbGl0eVNlcnZpY2Uge1xyXG4gIHB1YmxpYyBtYXBwaW5nOiBNYXA8QmFubmVyTW9kZSwgQXZhdGFyPiA9IG5ldyBNYXA8QmFubmVyTW9kZSwgQXZhdGFyPigpO1xyXG5cclxuICBwcml2YXRlIHJlY3Vyc2lvbkxpbWl0ID0gMDtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgc2Vzc2lvbkNvbnRleHQ6IFNlc3Npb25Db250ZXh0LFxyXG4gICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplclxyXG4gICkge1xyXG5cclxuICAgIGNvbnN0IGFwaUNhbGxUZW1wbGF0ZSA9ICdhcGkvUHJvZmlsZS9HZXRQaG90by8nO1xyXG4gICAgdGhpcy5tYXBwaW5nLnNldChcclxuICAgICAgQmFubmVyTW9kZS5Vbmtub3duLFxyXG4gICAgICBuZXcgQXZhdGFyKCdodHRwczovL2FsMzJibG9iLmJsb2IuY29yZS53aW5kb3dzLm5ldC9pbWFnZXMvTWFuYWdlckF2YXRhci5wbmcnLCBhcGlDYWxsVGVtcGxhdGUpXHJcbiAgICApO1xyXG4gICAgdGhpcy5tYXBwaW5nLnNldChcclxuICAgICAgQmFubmVyTW9kZS5NYW5hZ2VyQXZhdGFyLFxyXG4gICAgICBuZXcgQXZhdGFyKCdodHRwczovL2FsMzJibG9iLmJsb2IuY29yZS53aW5kb3dzLm5ldC9pbWFnZXMvTWFuYWdlckF2YXRhci5wbmcnLCBhcGlDYWxsVGVtcGxhdGUpXHJcbiAgICApO1xyXG4gICAgdGhpcy5tYXBwaW5nLnNldChcclxuICAgICAgQmFubmVyTW9kZS5QYXJ0bmVyQXZhdGFyLFxyXG4gICAgICBuZXcgQXZhdGFyKCdodHRwczovL2FsMzJibG9iLmJsb2IuY29yZS53aW5kb3dzLm5ldC9pbWFnZXMvUGFydG5lckF2YXRhci5wbmcnLCBhcGlDYWxsVGVtcGxhdGUpXHJcbiAgICApO1xyXG4gICAgdGhpcy5tYXBwaW5nLnNldChcclxuICAgICAgQmFubmVyTW9kZS5Zb3VUdWJlQ2hhbm5lbEF2YXRhcixcclxuICAgICAgbmV3IEF2YXRhcignaHR0cHM6Ly9hbDMyYmxvYi5ibG9iLmNvcmUud2luZG93cy5uZXQvaW1hZ2VzL1lvdVR1YmVDaGFubmVsQXZhdGFyLnBuZycsIGFwaUNhbGxUZW1wbGF0ZSlcclxuICAgICk7XHJcbiAgICB0aGlzLm1hcHBpbmcuc2V0KFxyXG4gICAgICBCYW5uZXJNb2RlLllvdVR1YmVWaWRlb0F2YXRhcixcclxuICAgICAgbmV3IEF2YXRhcignaHR0cHM6Ly9hbDMyYmxvYi5ibG9iLmNvcmUud2luZG93cy5uZXQvaW1hZ2VzL1lvdVR1YmVWaWRlb0F2YXRhci5wbmcnLCBhcGlDYWxsVGVtcGxhdGUpXHJcbiAgICApO1xyXG4gICAgdGhpcy5tYXBwaW5nLnNldChcclxuICAgICAgQmFubmVyTW9kZS5Zb3VUdWJlQ2hhbm5lbEJhbm5lcixcclxuICAgICAgbmV3IEF2YXRhcignaHR0cHM6Ly9hbDMyYmxvYi5ibG9iLmNvcmUud2luZG93cy5uZXQvaW1hZ2VzL1lvdVR1YmVDaGFubmVsQmFubmVyLnBuZycsIGFwaUNhbGxUZW1wbGF0ZSlcclxuICAgICk7XHJcbiAgICB0aGlzLm1hcHBpbmcuc2V0KFxyXG4gICAgICBCYW5uZXJNb2RlLllvdVR1YmVDaGFubmVsQXZhdGFyQmxvY2tlZE9yRGVsZXRlLFxyXG4gICAgICBuZXcgQXZhdGFyKCdodHRwczovL2FsMzJibG9iLmJsb2IuY29yZS53aW5kb3dzLm5ldC9pbWFnZXMvWW91VHViZUNoYW5uZWxBdmF0YXJCbG9ja2VkT3JEZWxldGUucG5nJywgYXBpQ2FsbFRlbXBsYXRlKVxyXG4gICAgKTtcclxuICAgIHRoaXMubWFwcGluZy5zZXQoXHJcbiAgICAgIEJhbm5lck1vZGUuUGF5bWVudFN5c3RlbUxvZ28sXHJcbiAgICAgIG5ldyBBdmF0YXIoJ2h0dHBzOi8vYWwzMmJsb2IuYmxvYi5jb3JlLndpbmRvd3MubmV0L2ltYWdlcy9QYXltZW50U3lzdGVtTG9nby5wbmcnLCBhcGlDYWxsVGVtcGxhdGUpXHJcbiAgICApO1xyXG5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZ2V0TGlzdENsYXNzZXNCeUNoYW5uZWxTdGF0dXMob3VyU3RhdHVzOiBudW1iZXIsIHlvdXR1YmVTdGF0dXM6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYFN0YXR1c09uT3VyQ21zLSR7U3RhdHVzT25PdXJDbXNbb3VyU3RhdHVzXX0gU3RhdHVzT25Zb3V0dWJlLSR7U3RhdHVzT25Zb3V0dWJlW3lvdXR1YmVTdGF0dXNdfWAudG9Mb2NhbGVMb3dlckNhc2UoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRBdmF0YXJCeU1vZGUoYmFubmVyTW9kZTogQmFubmVyTW9kZSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBhdmF0YXIgPSB0aGlzLm1hcHBpbmcuZ2V0KGJhbm5lck1vZGUpO1xyXG4gICAgaWYgKGF2YXRhciA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignQmFubmVyIG1vZGUgJyArIGJhbm5lck1vZGUgKyAnIGRvZXMgbm90IGV4aXN0cy4nKTtcclxuICAgIH1cclxuICAgIHJldHVybiBhdmF0YXIuZGVmYXVsdEF2YXRhcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwaG90b1VybChiYW5uZXJNb2RlOiBCYW5uZXJNb2RlLCBpZDogc3RyaW5nID0gJycpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFpZCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXRBdmF0YXJCeU1vZGUoYmFubmVyTW9kZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLm1hcHBpbmcuaGFzKGJhbm5lck1vZGUpKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBiYW5uZXIgbW9kZScpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgYXZhdGFyID0gdGhpcy5tYXBwaW5nLmdldChiYW5uZXJNb2RlKTtcclxuICAgIGlmIChhdmF0YXIgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Jhbm5lciBtb2RlICcgKyBiYW5uZXJNb2RlICsgJyBkb2VzIG5vdCBleGlzdHMuJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uQ29udGV4dC5hcGlTZXJ2ZXIgKyBhdmF0YXIuYXBpQ2FsbCArIGlkICsgJy9tb2RlLycgKyBiYW5uZXJNb2RlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFBob3RvU3R5bGVVcmwoYmFubmVyTW9kZTogQmFubmVyTW9kZSwgaWQ6IHN0cmluZyA9ICcnKTogU2FmZVN0eWxlIHtcclxuICAgIGNvbnN0IHVyaSA9IHRoaXMucGhvdG9VcmwoYmFubmVyTW9kZSwgaWQpO1xyXG4gICAgY29uc3QgdXJsID0gJ3VybCgnICsgdXJpICsgJyknO1xyXG5cclxuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUodXJsKTtcclxuICB9XHJcblxyXG4gIC8vIGRlcHJpY2F0ZWQgbWV0aG9kLCBzaG91bGQgYmUgcmVtb3ZlZCBhZnRlciBwYXJ0bmVyIGFyZWEgdXBncmFkaW5nXHJcbiAgcHVibGljIGdldFBob3RvVXJsKGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiAoIWlkKSA/ICdhc3NldHMvaW1nL2RlZmF1bHQtYXZhdGFyLnBuZycgOiB0aGlzLnNlc3Npb25Db250ZXh0LmFwaVNlcnZlciArICdhcGkvUHJvZmlsZS9HZXRQaG90by8nICsgaWQ7XHJcbiAgfVxyXG4gIHB1YmxpYyB0cmF2ZXJzZUFuZERvKHRyZWU6IEFycmF5PElUaWxlSW5mb05vZGU+LCBhY3Rpb246IElDb21tYW5kPElUaWxlSW5mb05vZGU+KSB7XHJcblxyXG4gICAgICB0cmVlLmZvckVhY2gobm9kZSA9PiB7XHJcbiAgICAgICAgICBpZiAobm9kZS5jaGlsZHJlbnMgIT0gbnVsbCAmJiBub2RlLmNoaWxkcmVucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50cmF2ZXJzZUFuZERvKG5vZGUuY2hpbGRyZW5zLCBhY3Rpb24pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBhY3Rpb24uZXhlY3V0ZShub2RlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdHJhdmVyc2VBbmRMaW1pdGVkRG8odHJlZTogQXJyYXk8SVRpbGVJbmZvTm9kZT4sIGFjdGlvbjogSUNvbW1hbmQ8SVRpbGVJbmZvTm9kZT4sIG1heENvdW50OiBudW1iZXIpIHtcclxuXHJcbiAgICB0cmVlLmZvckVhY2gobm9kZSA9PiB7XHJcbiAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW5zICE9IG51bGwgJiYgbm9kZS5jaGlsZHJlbnMubGVuZ3RoID4gMCAmJiB0aGlzLnJlY3Vyc2lvbkxpbWl0IDwgbWF4Q291bnQpIHtcclxuICAgICAgICAgICAgdGhpcy50cmF2ZXJzZUFuZExpbWl0ZWREbyhub2RlLmNoaWxkcmVucywgYWN0aW9uLCBtYXhDb3VudCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5yZWN1cnNpb25MaW1pdCsrO1xyXG4gICAgICAgICAgICBhY3Rpb24uZXhlY3V0ZShub2RlKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufVxyXG59XHJcbiJdfQ==