1 | 'use strict';
|
2 |
|
3 | import { NativeModules, DeviceEventEmitter } from 'react-native';
|
4 |
|
5 | const RNAdMobRewarded = NativeModules.RNAdMobRewarded;
|
6 |
|
7 | const 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 |
|
16 | const 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 |
|
63 | const 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 |
|
71 | const 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 |
|
80 | module.exports = {
|
81 | ...RNAdMobRewarded,
|
82 | requestAd: (cb = () => {}) => RNAdMobRewarded.requestAd(cb),
|
83 | showAd: (cb = () => {}) => RNAdMobRewarded.showAd(cb),
|
84 | addEventListener,
|
85 | removeEventListener,
|
86 | removeAllListeners,
|
87 | };
|