@react-native-tapsell-mediation/tapsell
Version:
Tapsell Mediation package
103 lines (101 loc) • 3.72 kB
JavaScript
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