UNPKG

@react-native-tapsell-mediation/tapsell

Version:
103 lines (101 loc) 3.72 kB
import { DeviceEventEmitter, NativeModules, Platform } from 'react-native'; import { ImpressionType } from './ImpressionType'; import { CompletionState } from '@react-native-tapsell-mediation/tapsell'; import { _mediationEventListenerInstance } from '../messaging/MediationEventListener'; import { nativeAdViewHolderInstance } from './native/NativeAdViewHolder'; const LINKING_ERROR = `The package '@react-native-tapsell-mediation/tapsell' doesn't seem to be linked. Make sure: \n\n` + Platform.select({ ios: "- You have run 'pod install'\n", default: '' }) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n'; const TapsellMediatorModule = NativeModules.RNTapsellMediation ? NativeModules.RNTapsellMediation : new Proxy({}, { get() { throw new Error(LINKING_ERROR); } }); /** @internal */ class ShowCourier { constructor() { this.subscribeImpressionEvents(); } _listeners = new Map(); static getInstance() { if (!ShowCourier._instance) { ShowCourier._instance = new ShowCourier(); } return ShowCourier._instance; } showRewardedAd(adId, listener) { this._listeners.set(adId, listener); return TapsellMediatorModule.showRewardedAd(adId); } showInterstitialAd(adId, listener) { this._listeners.set(adId, listener); return TapsellMediatorModule.showInterstitialAd(adId); } showBannerAd(adId, bannerPosition, listener) { this._listeners.set(adId, listener); return TapsellMediatorModule.showBannerAd(adId, bannerPosition); } showNativeAd(adId, adDispatch, listener) { nativeAdViewHolderInstance.registerAdView(adId, adDispatch); this._listeners.set(adId, listener); return TapsellMediatorModule.showNativeAd(adId); } clickNativeAd(adId) { DeviceEventEmitter.emit('TapsellNativeAdClick', adId); } destroyBannerAd(adId) { this._listeners.delete(adId); TapsellMediatorModule.destroyBannerAd(adId); } destroyNativeAd(adId) { this._listeners.delete(adId); TapsellMediatorModule.destroyNativeAd(adId); } subscribeImpressionEvents() { _mediationEventListenerInstance.registerAdImpressionListener(event => { this.onImpressionEvent(event, ImpressionType.IMPRESSION); }); _mediationEventListenerInstance.registerAdClickListener(event => { this.onImpressionEvent(event, ImpressionType.CLICK); }); _mediationEventListenerInstance.registerAdRewardListener(event => { this.onImpressionEvent(event, ImpressionType.REWARD); }); _mediationEventListenerInstance.registerAdCloseListener(event => { this.onImpressionEvent(event, ImpressionType.CLOSE); }); _mediationEventListenerInstance.registerAdShowFailureListener(event => { this.onImpressionEvent(event, ImpressionType.FAILURE); }); } onImpressionEvent(event, impressionType) { const listener = this._listeners.get(event.adId); if (!listener) { throw new Error(`Ad not found for id: ${event.adId}`); } switch (impressionType) { case ImpressionType.IMPRESSION: listener.onAdImpression(); break; case ImpressionType.CLICK: listener.onAdClicked(); break; case ImpressionType.REWARD: listener.onRewarded(); break; case ImpressionType.CLOSE: const completionState = CompletionState.fromInt(event.completionState); if (completionState !== undefined) { listener.onAdClosed(completionState); } break; case ImpressionType.FAILURE: listener.onAdFailed(event.message); break; } } } /** @internal */ export const ShowCourierInstance = ShowCourier.getInstance(); //# sourceMappingURL=index.js.map