UNPKG

@swrve/smarttv-sdk

Version:

Swrve marketing engagement platform SDK for SmartTV OTT devices

98 lines (97 loc) 3.4 kB
"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;