@swrve/smarttv-sdk
Version:
Swrve marketing engagement platform SDK for SmartTV OTT devices
98 lines (97 loc) • 3.4 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.SwrveButton = void 0;
const TextTemplating_1 = require("../utils/TextTemplating");
const SwrveLogger_1 = __importDefault(require("../utils/SwrveLogger"));
class SwrveButton {
constructor(button, cdn, personalizationProperties, scale) {
this._button = button;
this._cdn = cdn;
this._scale = scale;
this._hasDynamicUrl = !!this._button.dynamic_image_url;
this._isSingleLineText = !!this._button.text;
this._personalizationProperties = personalizationProperties;
}
get button() {
return this._button;
}
get scale() {
return this._scale;
}
get hasDynamicUrl() {
return this._hasDynamicUrl;
}
get isSingleLineText() {
return this._isSingleLineText;
}
getAssetID() {
if (this.button.image_up) {
return this.resolveOrFallbackUrlPersonalization(this.button.image_up.value);
}
else {
return this.resolveOrFallbackUrlPersonalization("");
}
}
getAssetPath() {
if (this.button.image_up) {
return this.resolveOrFallbackUrlPersonalization(`${this._cdn}${this.button.image_up.value}`);
}
else {
return this.resolveOrFallbackUrlPersonalization("");
}
}
canRender() {
if (this.isSingleLineText) {
const resolved = this.resolveTextTemplating(this.button.text.value, this._personalizationProperties);
/** return directly since if there's single text then it should either resolve or not show up at all */
return (resolved !== null);
}
if (this.hasDynamicUrl) {
const response = this.resolveTextTemplating(this._button.dynamic_image_url, this._personalizationProperties);
if (response !== null)
return true;
}
if (this._button.image_up !== undefined) {
return true;
}
return false;
}
getWidth() {
if (this.hasDynamicUrl)
return this.button.w.value;
return this.button.image_width;
}
getHeight() {
if (this.hasDynamicUrl)
return this.button.h.value;
return this.button.image_height;
}
resolveOrFallbackUrlPersonalization(fallback) {
if (this.hasDynamicUrl) {
try {
const resolvedUrl = TextTemplating_1.TextTemplating.applyTextTemplatingToString(this.button.dynamic_image_url, this._personalizationProperties);
if (resolvedUrl !== null) {
return resolvedUrl;
}
}
catch (e) { }
}
return fallback;
}
resolveTextTemplating(text, personalizationProperties) {
try {
const resolvedText = TextTemplating_1.TextTemplating.applyTextTemplatingToString(text, personalizationProperties);
if (resolvedText !== null) {
return resolvedText;
}
}
catch (e) {
SwrveLogger_1.default.debug("Could not resolve personalization for: " + text);
}
return null;
}
}
exports.SwrveButton = SwrveButton;