UNPKG

@swrve/smarttv-sdk

Version:

Swrve marketing engagement platform SDK for SmartTV OTT devices

71 lines (70 loc) 2.29 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.AssetManager = void 0; const PAL_1 = __importDefault(require("../utils/PAL")); const SwrveLogger_1 = __importDefault(require("../utils/SwrveLogger")); class AssetManager { constructor() { this.assets = {}; this._imagesCDN = ""; this._fontsCDN = ""; } manageAssets(newAssets) { for (const asset of newAssets) { const key = asset.getAssetID(); if (this.assets[key] === undefined) { SwrveLogger_1.default.info("ASSET MANAGER: add new asset " + key); this.assets[key] = { id: key, path: asset.getAssetPath().toString() }; } } return this.downloadAssets(); } set ImagesCDN(cdn) { this._imagesCDN = cdn; } get ImagesCDN() { return this._imagesCDN; } set FontsCDN(cdn) { this._fontsCDN = cdn; } get FontsCDN() { return this._fontsCDN; } clearCDN() { this._imagesCDN = ""; this._fontsCDN = ""; } checkAssetsForCampaign(assets) { let allLoaded = true; for (const asset of assets) { const isLoaded = this.checkCache(asset); if (!isLoaded) { allLoaded = false; break; } } return allLoaded; } checkCache(asset) { const loadedImage = document.createElement("img"); loadedImage.src = asset.getAssetPath().toString(); const element = document.getElementById("PALImageCache"); if (element) { element.appendChild(loadedImage); } else { SwrveLogger_1.default.info("PALImage Cache does not exist"); } return loadedImage.complete || loadedImage.width + loadedImage.height > 0; } downloadAssets() { SwrveLogger_1.default.info("Asset Manager download assets"); const values = Object.keys(this.assets).map(key => this.assets[key]); return PAL_1.default.getPlatform().downloadAssets(values); } } exports.AssetManager = AssetManager;