UNPKG

2.56 kBJavaScriptView Raw
1'use strict';
2
3import { NativeModules, DeviceEventEmitter } from 'react-native';
4
5const RNAdMobRewarded = NativeModules.RNAdMobRewarded;
6
7const eventHandlers = {
8 rewardedVideoDidRewardUser: new Map(),
9 rewardedVideoDidLoad: new Map(),
10 rewardedVideoDidFailToLoad: new Map(),
11 rewardedVideoDidOpen: new Map(),
12 rewardedVideoDidClose: new Map(),
13 rewardedVideoWillLeaveApplication: new Map(),
14};
15
16const addEventListener = (type, handler) => {
17 switch (type) {
18 case 'rewardedVideoDidRewardUser':
19 eventHandlers[type].set(
20 handler,
21 DeviceEventEmitter.addListener(type, (type, amount) => {
22 handler(type, amount);
23 })
24 );
25 break;
26 case 'rewardedVideoDidLoad':
27 eventHandlers[type].set(
28 handler,
29 DeviceEventEmitter.addListener(type, handler)
30 );
31 break;
32 case 'rewardedVideoDidFailToLoad':
33 eventHandlers[type].set(
34 handler,
35 DeviceEventEmitter.addListener(type, error => {
36 handler(error);
37 })
38 );
39 break;
40 case 'rewardedVideoDidOpen':
41 eventHandlers[type].set(
42 handler,
43 DeviceEventEmitter.addListener(type, handler)
44 );
45 break;
46 case 'rewardedVideoDidClose':
47 eventHandlers[type].set(
48 handler,
49 DeviceEventEmitter.addListener(type, handler)
50 );
51 break;
52 case 'rewardedVideoWillLeaveApplication':
53 eventHandlers[type].set(
54 handler,
55 DeviceEventEmitter.addListener(type, handler)
56 );
57 break;
58 default:
59 console.log(`Event with type ${type} does not exist.`);
60 }
61};
62
63const removeEventListener = (type, handler) => {
64 if (!eventHandlers[type].has(handler)) {
65 return;
66 }
67 eventHandlers[type].get(handler).remove();
68 eventHandlers[type].delete(handler);
69};
70
71const removeAllListeners = () => {
72 DeviceEventEmitter.removeAllListeners('rewardedVideoDidRewardUser');
73 DeviceEventEmitter.removeAllListeners('rewardedVideoDidLoad');
74 DeviceEventEmitter.removeAllListeners('rewardedVideoDidFailToLoad');
75 DeviceEventEmitter.removeAllListeners('rewardedVideoDidOpen');
76 DeviceEventEmitter.removeAllListeners('rewardedVideoDidClose');
77 DeviceEventEmitter.removeAllListeners('rewardedVideoWillLeaveApplication');
78};
79
80module.exports = {
81 ...RNAdMobRewarded,
82 requestAd: (cb = () => {}) => RNAdMobRewarded.requestAd(cb), // requestAd callback is optional
83 showAd: (cb = () => {}) => RNAdMobRewarded.showAd(cb), // showAd callback is optional
84 addEventListener,
85 removeEventListener,
86 removeAllListeners,
87};