@swrve/smarttv-sdk
Version:
Swrve marketing engagement platform SDK for SmartTV OTT devices
71 lines (70 loc) • 2.29 kB
JavaScript
;
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;