air-lib
Version:
This is Air's angular component library
196 lines • 18.7 kB
JavaScript
/**
* @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==