@swrve/smarttv-sdk
Version:
Swrve marketing engagement platform SDK for SmartTV OTT devices
97 lines (96 loc) • 3.34 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.SwrveImage = void 0;
const TextTemplating_1 = require("../utils/TextTemplating");
const SwrveLogger_1 = __importDefault(require("../utils/SwrveLogger"));
class SwrveImage {
constructor(image, cdn, personalizationProperties, scale) {
this._image = image;
this._cdn = cdn;
this._scale = scale;
this._hasDynamicUrl = !!this._image.dynamic_image_url;
this._isSingleLineText = !!this._image.text;
this._personalizationProperties = personalizationProperties;
}
get image() {
return this._image;
}
get scale() {
return this._scale;
}
get hasDynamicUrl() {
return this._hasDynamicUrl;
}
get isSingleLineText() {
return this._isSingleLineText;
}
canRender() {
if (this.isSingleLineText) {
const resolved = this.resolveTextTemplating(this.image.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._image.dynamic_image_url, this._personalizationProperties);
if (response !== null)
return true;
}
if (this._image.image !== undefined) {
return true;
}
return false;
}
//FIXME: this needs to change for items that have no backup assets
getAssetID() {
if (this._image.image) {
return this.resolveOrFallbackUrlPersonalization(this._image.image.value);
}
else {
return this.resolveOrFallbackUrlPersonalization("");
}
}
getAssetPath() {
if (this._image.image) {
return this.resolveOrFallbackUrlPersonalization(`${this._cdn}${this.image.image.value}`);
}
else {
return this.resolveOrFallbackUrlPersonalization("");
}
}
getWidth() {
if (this.hasDynamicUrl)
return this.image.w.value;
return this.image.image_width;
}
getHeight() {
if (this.hasDynamicUrl)
return this.image.h.value;
return this.image.image_height;
}
resolveOrFallbackUrlPersonalization(fallback) {
if (this.hasDynamicUrl) {
const response = this.resolveTextTemplating(this._image.dynamic_image_url, this._personalizationProperties);
if (response !== null) {
return response;
}
}
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;
}
return null;
}
}
exports.SwrveImage = SwrveImage;