UNPKG

nativescript-xz-ad-generation

Version:
146 lines (145 loc) 5.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var xz_ad_controller_base_1 = require("./xz-ad-controller-base"); var application_1 = require("tns-core-modules/application"); var platform_1 = require("tns-core-modules/platform"); var mainScreen = platform_1.screen.mainScreen; var XzAdController = (function (_super) { __extends(XzAdController, _super); function XzAdController() { return _super !== null && _super.apply(this, arguments) || this; } XzAdController.prototype.getAdListener = function () { var AdListener = (function (_super) { __extends(AdListener, _super); function AdListener() { var _this = _super.call(this) || this; return global.__native(_this); } AdListener.prototype.onReceiveAd = function (ad) { var controller = this._owner.get(); if (controller && controller.adItem.type === 'native') { controller.onReceiveAd(ad); } }; AdListener.prototype.onFailedToReceiveAd = function (code) { var controller = this._owner.get(); console.log("fail loading ad ... " + ("code: " + code)); switch (code) { case com.socdm.d.adgeneration.ADGConsts.ADGErrorCode.EXCEED_LIMIT: case com.socdm.d.adgeneration.ADGConsts.ADGErrorCode.NEED_CONNECTION: case com.socdm.d.adgeneration.ADGConsts.ADGErrorCode.NO_AD: if (controller) { controller.onFailed(); } return; } if (controller) { console.log('retry ... '); controller.start(); } }; AdListener.prototype.setOwnerAdController = function (owner) { this._owner = owner; }; return AdListener; }(com.socdm.d.adgeneration.ADGListener)); var listener = new AdListener(); listener.setOwnerAdController(new WeakRef(this)); return listener; }; XzAdController.prototype.initNativeAd = function (parentView) { if (parentView == null) { throw new Error("no parent view!"); } var targetView = parentView.android; this._tapTargetView = new WeakRef(targetView); this._adg = new com.socdm.d.adgeneration.ADG(application_1.android.foregroundActivity); this._adg.setLocationId("" + this.adItem.locationId); var adWidth = mainScreen.widthDIPs; var pl = isNaN(+parentView.style.paddingLeft) ? 0 : +parentView.style.paddingLeft; var pr = isNaN(+parentView.style.paddingRight) ? 0 : +parentView.style.paddingRight; adWidth -= (pl + pr); var adHeight = (this.adItem.height / this.adItem.width) * adWidth; var adSize = com.socdm.d.adgeneration.ADG.AdFrameSize.valueOf("FREE"); this._adg.setAdFrameSize(adSize.setSize(adWidth, adHeight)); this._adg.setUsePartsResponse(true); this._adg.setInformationIconViewDefault(false); this._listener = this.getAdListener(); this._adg.setAdListener(this._listener); targetView.addView(this._adg); this._adg.start(); return this; }; XzAdController.prototype.initWithView = function (view, viewHeight, viewWidth, scale) { if (this.adItem.type !== "banner") { return null; } this._adg = view; this._adg.setLocationId("" + this.adItem.locationId); var adSize = com.socdm.d.adgeneration.ADG.AdFrameSize.valueOf("FREE"); this._adg.setAdFrameSize(adSize.setSize(viewWidth, viewHeight)); this._adg.setAdScale(scale); this._listener = this.getAdListener(); this._adg.setAdListener(this._listener); this._adg.start(); return this; }; XzAdController.prototype.start = function () { if (this._adg) { this._adg.start(); } }; XzAdController.prototype.resumeAd = function () { }; XzAdController.prototype.dispose = function () { if (this._adg) { this._adg.stop(); } this._adg = null; this._listener = null; }; XzAdController.prototype.onReceiveAd = function (ad) { var data = { object: null, eventName: "receiveNativeAd", locationId: this.adItem.locationId }; if (ad) { if (ad.getTitle() != null) { data.title = ad.getTitle().getText(); } if (ad.getMainImage() != null) { data.mainImageUrl = ad.getMainImage().getUrl(); } if (ad.getIconImage() != null) { data.iconImageUrl = ad.getIconImage().getUrl(); } if (ad.getDesc() != null) { data.description = ad.getDesc().getValue(); } if (ad.getSponsored() != null) { data.sponsor = ad.getSponsored().getValue(); } data.nativeAd = ad; } else { data.isHTML = true; var targetView = this._tapTargetView.get(); targetView.getLayoutParams().height = this.adItem.height; } if (!data.isHTML && this._tapTargetView.get()) { var targetView = this._tapTargetView.get(); ad.setClickEvent(targetView.getContext(), targetView, null); } this.notify(data); }; XzAdController.prototype.onFailed = function () { this.notify({ eventName: "fail", object: null }); }; return XzAdController; }(xz_ad_controller_base_1.XzAdControllerBase)); exports.XzAdController = XzAdController;