react-native-aps
Version:
Amazon Publisher Services SDK for React Native
177 lines (137 loc) • 4.89 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.AdLoader = void 0;
var _reactNative = require("react-native");
var _AdError = require("./AdError");
var _AdLoaderModule = _interopRequireDefault(require("./internal/AdLoaderModule"));
var _AdLoaderEvent = require("./types/AdLoaderEvent");
var _AdLoaderOptions = require("./types/AdLoaderOptions");
var _AdType = require("./types/AdType");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
/**
* @public
*/
class AdLoader {
constructor(adType, adLoaderOptions) {
this.adType = adType;
this.adLoaderOptions = adLoaderOptions;
_defineProperty(this, "loaderId", void 0);
this.loaderId = AdLoader._adLoaders++;
}
/**
* Create a banner AdLoader instance.
* @param adLoaderOptions - `BannerAdLoaderOptions` object used to configure the bid request.
* @returns AdLoader instance.
*/
static createBannerAdLoader(adLoaderOptions) {
try {
(0, _AdLoaderOptions.validateBannerAdLoaderOptions)(adLoaderOptions);
} catch (e) {
if (e instanceof Error) {
throw new Error(`AdLoader.createBannerAdLoader(*) ${e.message}`);
}
}
const adLoader = new AdLoader(_AdType.AdType.BANNER, adLoaderOptions);
return adLoader;
}
/**
* Create a interstitial AdLoader instance.
* @param adLoaderOptions - `AdLoaderOptions` object used to configure the bid request.
* @returns AdLoader instance.
*/
static createInterstitialAdLoader(adLoaderOptions) {
try {
(0, _AdLoaderOptions.validateAdLoaderOptions)(adLoaderOptions);
} catch (e) {
if (e instanceof Error) {
throw new Error(`AdLoader.createInterstitialAdLoader(*) ${e.message}`);
}
}
const adLoader = new AdLoader(_AdType.AdType.INTERSTITIAL, adLoaderOptions);
return adLoader;
}
/**
* Add a listener for the bid response. Supported events are:
* - `AdLoaderEvent.SUCCESS`
* - `AdLoaderEvent.FAILURE`
* @param eventName - The name of the event to listen.
* @param listener - The listener to be called when the event is fired.
*
* @returns Unsubscribe function.
*
* @public
*/
addListener(eventName, listener) {
if (!(0, _AdLoaderEvent.isAdLoaderEvent)(eventName)) {
throw new Error(`AdLoader.addListener(*) 'eventName' expected one of AdLoaderEvent values`);
}
if (typeof listener !== 'function') {
throw new Error(`AdLoader.addListener(_, *) 'listener' expected a function`);
}
const subscribtion = AdLoader._eventEmitter.addListener(eventName, payload => {
if (payload.loaderId !== this.loaderId) {
return;
}
let error;
if (payload.userInfo) {
error = _AdError.AdError.fromNativeError(payload);
}
listener(error || payload.response);
});
return () => subscribtion.remove();
}
/**
* Request APS for a bid. Only a single ad size and slotUUID is supported per bid request.
* This method will return a promise that resolves a bid response requested by this call.
* In order to receive further bid responses returned by auto refresh, you must register listeners via `addListener()`.
* @returns Promise of key value pairs from returned bid response.
*
* @public
*/
async loadAd() {
try {
return await AdLoader._nativeModule.loadAd(this.loaderId, this.adType, this.adLoaderOptions);
} catch (error) {
if (error.userInfo) {
throw _AdError.AdError.fromNativeError(error);
} else {
throw error;
}
}
}
/**
* Stop the auto refresh of the ad.
*
* @public
*/
stopAutoRefresh() {
AdLoader._nativeModule.stopAutoRefresh(this.loaderId);
}
/**
* In order for SKAdNetwork to work, pass the app event.
* @param name - The name of the event.
* @param info - The data/info with the event.
*
* @public
*/
static skadnHelper(name, info) {
if (typeof name !== 'string') {
throw new Error("AdLoader.skadnHelper(*) 'name' expected a string value");
}
if (info && typeof info !== 'string') {
throw new Error("AdLoader.skadnHelper(*) 'info' expected a string value");
}
if (_reactNative.Platform.OS !== 'ios') {
return;
}
return AdLoader._nativeModule.skadnHelper(name, info);
}
}
exports.AdLoader = AdLoader;
_defineProperty(AdLoader, "_nativeModule", _AdLoaderModule.default);
_defineProperty(AdLoader, "_eventEmitter", new _reactNative.NativeEventEmitter(_AdLoaderModule.default));
_defineProperty(AdLoader, "_adLoaders", 0);
//# sourceMappingURL=AdLoader.js.map