react-native-applovin-max 7.1.1 → 8.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/android/build.gradle +3 -3
  2. package/android/src/main/java/com/applovin/reactnative/AppLovinMAXModule.java +17 -24
  3. package/ios/AppLovinMAX.m +17 -11
  4. package/lib/commonjs/AdView.js +86 -98
  5. package/lib/commonjs/AdView.js.map +1 -1
  6. package/lib/commonjs/AppLovinMAX.js +1 -1
  7. package/lib/commonjs/AppOpenAd.js +7 -7
  8. package/lib/commonjs/AppOpenAd.js.map +1 -1
  9. package/lib/commonjs/BannerAd.js +8 -8
  10. package/lib/commonjs/BannerAd.js.map +1 -1
  11. package/lib/commonjs/ErrorCode.js +49 -0
  12. package/lib/commonjs/ErrorCode.js.map +1 -0
  13. package/lib/commonjs/EventEmitter.js.map +1 -1
  14. package/lib/commonjs/InterstitialAd.js +7 -7
  15. package/lib/commonjs/InterstitialAd.js.map +1 -1
  16. package/lib/commonjs/MRecAd.js +6 -6
  17. package/lib/commonjs/MRecAd.js.map +1 -1
  18. package/lib/commonjs/RewardedAd.js +8 -8
  19. package/lib/commonjs/RewardedAd.js.map +1 -1
  20. package/lib/commonjs/index.js +8 -0
  21. package/lib/commonjs/index.js.map +1 -1
  22. package/lib/commonjs/nativeAd/NativeAdView.js +26 -29
  23. package/lib/commonjs/nativeAd/NativeAdView.js.map +1 -1
  24. package/lib/commonjs/nativeAd/NativeAdViewComponents.js +69 -102
  25. package/lib/commonjs/nativeAd/NativeAdViewComponents.js.map +1 -1
  26. package/lib/commonjs/nativeAd/NativeAdViewProvider.js +13 -13
  27. package/lib/commonjs/nativeAd/NativeAdViewProvider.js.map +1 -1
  28. package/lib/commonjs/types/AdInfo.js.map +1 -1
  29. package/lib/module/AdView.js +87 -99
  30. package/lib/module/AdView.js.map +1 -1
  31. package/lib/module/AppLovinMAX.js +1 -1
  32. package/lib/module/AppOpenAd.js +7 -7
  33. package/lib/module/AppOpenAd.js.map +1 -1
  34. package/lib/module/BannerAd.js +8 -8
  35. package/lib/module/BannerAd.js.map +1 -1
  36. package/lib/module/ErrorCode.js +43 -0
  37. package/lib/module/ErrorCode.js.map +1 -0
  38. package/lib/module/EventEmitter.js.map +1 -1
  39. package/lib/module/InterstitialAd.js +7 -7
  40. package/lib/module/InterstitialAd.js.map +1 -1
  41. package/lib/module/MRecAd.js +6 -6
  42. package/lib/module/MRecAd.js.map +1 -1
  43. package/lib/module/RewardedAd.js +8 -8
  44. package/lib/module/RewardedAd.js.map +1 -1
  45. package/lib/module/index.js +1 -0
  46. package/lib/module/index.js.map +1 -1
  47. package/lib/module/nativeAd/NativeAdView.js +27 -30
  48. package/lib/module/nativeAd/NativeAdView.js.map +1 -1
  49. package/lib/module/nativeAd/NativeAdViewComponents.js +71 -104
  50. package/lib/module/nativeAd/NativeAdViewComponents.js.map +1 -1
  51. package/lib/module/nativeAd/NativeAdViewProvider.js +13 -13
  52. package/lib/module/nativeAd/NativeAdViewProvider.js.map +1 -1
  53. package/lib/module/types/AdInfo.js.map +1 -1
  54. package/lib/typescript/src/AdView.d.ts +2 -2
  55. package/lib/typescript/src/AdView.d.ts.map +1 -1
  56. package/lib/typescript/src/ErrorCode.d.ts +83 -0
  57. package/lib/typescript/src/ErrorCode.d.ts.map +1 -0
  58. package/lib/typescript/src/EventEmitter.d.ts.map +1 -1
  59. package/lib/typescript/src/index.d.ts +1 -0
  60. package/lib/typescript/src/index.d.ts.map +1 -1
  61. package/lib/typescript/src/nativeAd/NativeAdView.d.ts.map +1 -1
  62. package/lib/typescript/src/nativeAd/NativeAdViewComponents.d.ts.map +1 -1
  63. package/lib/typescript/src/nativeAd/NativeAdViewProvider.d.ts +3 -2
  64. package/lib/typescript/src/nativeAd/NativeAdViewProvider.d.ts.map +1 -1
  65. package/lib/typescript/src/types/AdInfo.d.ts +6 -5
  66. package/lib/typescript/src/types/AdInfo.d.ts.map +1 -1
  67. package/lib/typescript/src/types/NativeAd.d.ts +3 -3
  68. package/lib/typescript/src/types/NativeAd.d.ts.map +1 -1
  69. package/lib/typescript/src/types/Privacy.d.ts +0 -12
  70. package/lib/typescript/src/types/Privacy.d.ts.map +1 -1
  71. package/package.json +1 -1
  72. package/react-native-applovin-max.podspec +2 -2
  73. package/src/AdView.tsx +103 -92
  74. package/src/AppLovinMAX.ts +1 -1
  75. package/src/AppOpenAd.ts +21 -21
  76. package/src/BannerAd.ts +20 -20
  77. package/src/ErrorCode.ts +116 -0
  78. package/src/EventEmitter.ts +2 -2
  79. package/src/InterstitialAd.ts +21 -21
  80. package/src/MRecAd.ts +18 -18
  81. package/src/RewardedAd.ts +24 -24
  82. package/src/index.ts +1 -0
  83. package/src/nativeAd/NativeAdView.tsx +41 -29
  84. package/src/nativeAd/NativeAdViewComponents.tsx +72 -98
  85. package/src/nativeAd/NativeAdViewProvider.tsx +21 -15
  86. package/src/types/AdInfo.ts +7 -5
  87. package/src/types/NativeAd.ts +3 -3
  88. package/src/types/Privacy.ts +0 -16
@@ -0,0 +1,116 @@
1
+ import { NativeModules } from 'react-native';
2
+
3
+ const { AppLovinMAX } = NativeModules;
4
+
5
+ const {
6
+ MAX_ERROR_CODE_UNSPECIFIED,
7
+ MAX_ERROR_CODE_NO_FILL,
8
+ MAX_ERROR_CODE_AD_LOAD_FAILED,
9
+ MAX_ERROR_CODE_AD_DISPLAY_FAILED,
10
+ MAX_ERROR_CODE_NETWORK_ERROR,
11
+ MAX_ERROR_CODE_NETWORK_TIMEOUT,
12
+ MAX_ERROR_CODE_NO_NETWORK,
13
+ MAX_ERROR_CODE_FULLSCREEN_AD_ALREADY_SHOWING,
14
+ MAX_ERROR_CODE_FULLSCREEN_AD_NOT_READY,
15
+ MAX_ERROR_CODE_FULLSCREEN_AD_INVALID_VIEW_CONTROLLER,
16
+ MAX_ERROR_CODE_FULLSCREEN_AD_ALREADY_LOADING,
17
+ MAX_ERROR_CODE_FULLSCREEN_AD_LOAD_WHILE_SHOWING,
18
+ MAX_ERROR_CODE_DONT_KEEP_ACTIVITIES_ENABLED,
19
+ MAX_ERROR_CODE_INVALID_AD_UNIT_ID,
20
+ } = AppLovinMAX.getConstants();
21
+
22
+ /**
23
+ * This enum contains various error codes that the SDK can return when a MAX ad fails to load or
24
+ * display.
25
+ */
26
+ export enum ErrorCode {
27
+ /**
28
+ * This error code represents an error that could not be categorized into one of the other defined
29
+ * errors. See the message field in the error object for more details.
30
+ */
31
+ UNSPECIFIED = MAX_ERROR_CODE_UNSPECIFIED,
32
+
33
+ /**
34
+ * This error code indicates that MAX returned no eligible ads from any mediated networks for this
35
+ * app/device.
36
+ */
37
+ NO_FILL = MAX_ERROR_CODE_NO_FILL,
38
+
39
+ /**
40
+ * This error code indicates that MAX returned eligible ads from mediated networks, but all ads
41
+ * failed to load. See the adLoadFailureInfo field in the error object for more details.
42
+ */
43
+ AD_LOAD_FAILED = MAX_ERROR_CODE_AD_LOAD_FAILED,
44
+
45
+ /**
46
+ * This error code represents an error that was encountered when showing an ad.
47
+ */
48
+ AD_DISPLAY_FAILED = MAX_ERROR_CODE_AD_DISPLAY_FAILED,
49
+
50
+ /**
51
+ * This error code indicates that the ad request failed due to a generic network error. See the
52
+ * message field in the error object for more details.
53
+ */
54
+ NETWORK_ERROR = MAX_ERROR_CODE_NETWORK_ERROR,
55
+
56
+ /**
57
+ * This error code indicates that the ad request timed out due to a slow internet connection.
58
+ */
59
+ NETWORK_TIMEOUT = MAX_ERROR_CODE_NETWORK_TIMEOUT,
60
+
61
+ /**
62
+ * This error code indicates that the ad request failed because the device is not connected to the
63
+ * internet.
64
+ */
65
+ NO_NETWORK = MAX_ERROR_CODE_NO_NETWORK,
66
+
67
+ /**
68
+ * This error code indicates that you attempted to show a fullscreen ad while another fullscreen ad
69
+ * is still showing.
70
+ */
71
+ FULLSCREEN_AD_ALREADY_SHOWING = MAX_ERROR_CODE_FULLSCREEN_AD_ALREADY_SHOWING,
72
+
73
+ /**
74
+ * This error code indicates you are attempting to show a fullscreen ad before the one has been
75
+ * loaded.
76
+ */
77
+ FULLSCREEN_AD_NOT_READY = MAX_ERROR_CODE_FULLSCREEN_AD_NOT_READY,
78
+
79
+ /**
80
+ * This error code indicates you attempted to present a fullscreen ad from an invalid view
81
+ * controller.
82
+ * **iOS ONLY**.
83
+ */
84
+ FULLSCREEN_AD_INVALID_VIEW_CONTROLLER = MAX_ERROR_CODE_FULLSCREEN_AD_INVALID_VIEW_CONTROLLER,
85
+
86
+ /**
87
+ * This error code indicates you are attempting to load a fullscreen ad while another
88
+ * fullscreen ad is already loading.
89
+ */
90
+ FULLSCREEN_AD_ALREADY_LOADING = MAX_ERROR_CODE_FULLSCREEN_AD_ALREADY_LOADING,
91
+
92
+ /**
93
+ * This error code indicates you are attempting to load a fullscreen ad while another fullscreen ad
94
+ * is still showing.
95
+ */
96
+ FULLSCREEN_AD_LOAD_WHILE_SHOWING = MAX_ERROR_CODE_FULLSCREEN_AD_LOAD_WHILE_SHOWING,
97
+
98
+ /**
99
+ * This error code indicates that the SDK failed to display an ad because the user has the
100
+ * "Don't Keep Activities" developer setting enabled.
101
+ * **Android ONLY**.
102
+ */
103
+ DONT_KEEP_ACTIVITIES_ENABLED = MAX_ERROR_CODE_DONT_KEEP_ACTIVITIES_ENABLED,
104
+
105
+ /**
106
+ * This error code indicates that the SDK failed to load an ad because the publisher provided an
107
+ * invalid ad unit identifier.
108
+ *
109
+ * Possible reasons for an invalid ad unit identifier:
110
+ * 1. Ad unit identifier is malformed or does not exist.
111
+ * 2. Ad unit is disabled.
112
+ * 3. Ad unit is not associated with the current app's package name.
113
+ * 4. Ad unit was created within the last 30-60 minutes.
114
+ */
115
+ INVALID_AD_UNIT_ID = MAX_ERROR_CODE_INVALID_AD_UNIT_ID,
116
+ }
@@ -9,7 +9,7 @@ const emitter = new NativeEventEmitter(AppLovinMAX);
9
9
 
10
10
  const subscriptions: Record<string, EventSubscription> = {};
11
11
 
12
- export const addEventListener = <T extends AdEventObject>(event: string, handler: AdEventListener<T>) => {
12
+ export const addEventListener = <T extends AdEventObject>(event: string, handler: AdEventListener<T>): void => {
13
13
  const subscription: EventSubscription = emitter.addListener(event, handler);
14
14
  const currentSubscription = subscriptions[event];
15
15
  if (currentSubscription) {
@@ -18,7 +18,7 @@ export const addEventListener = <T extends AdEventObject>(event: string, handler
18
18
  subscriptions[event] = subscription;
19
19
  };
20
20
 
21
- export const removeEventListener = (event: string) => {
21
+ export const removeEventListener = (event: string): void => {
22
22
  const currentSubscription = subscriptions[event];
23
23
  if (currentSubscription) {
24
24
  currentSubscription.remove();
@@ -36,59 +36,59 @@ const setLocalExtraParameter = (adUnitId: string, key: string, value: LocalExtra
36
36
  AppLovinMAX.setInterstitialLocalExtraParameter(adUnitId, { [key]: value });
37
37
  };
38
38
 
39
- const addAdLoadedEventListener = (listener: (adInfo: AdInfo) => void) => {
40
- addEventListener(ON_INTERSTITIAL_LOADED_EVENT, (adInfo: AdInfo) => listener(adInfo));
39
+ const addAdLoadedEventListener = (listener: (adInfo: AdInfo) => void): void => {
40
+ addEventListener(ON_INTERSTITIAL_LOADED_EVENT, listener);
41
41
  };
42
42
 
43
- const removeAdLoadedEventListener = () => {
43
+ const removeAdLoadedEventListener = (): void => {
44
44
  removeEventListener(ON_INTERSTITIAL_LOADED_EVENT);
45
45
  };
46
46
 
47
- const addAdLoadFailedEventListener = (listener: (errorInfo: AdLoadFailedInfo) => void) => {
48
- addEventListener(ON_INTERSTITIAL_LOAD_FAILED_EVENT, (errorInfo: AdLoadFailedInfo) => listener(errorInfo));
47
+ const addAdLoadFailedEventListener = (listener: (errorInfo: AdLoadFailedInfo) => void): void => {
48
+ addEventListener(ON_INTERSTITIAL_LOAD_FAILED_EVENT, listener);
49
49
  };
50
50
 
51
- const removeAdLoadFailedEventListener = () => {
51
+ const removeAdLoadFailedEventListener = (): void => {
52
52
  removeEventListener(ON_INTERSTITIAL_LOAD_FAILED_EVENT);
53
53
  };
54
54
 
55
- const addAdClickedEventListener = (listener: (adInfo: AdInfo) => void) => {
56
- addEventListener(ON_INTERSTITIAL_CLICKED_EVENT, (adInfo: AdInfo) => listener(adInfo));
55
+ const addAdClickedEventListener = (listener: (adInfo: AdInfo) => void): void => {
56
+ addEventListener(ON_INTERSTITIAL_CLICKED_EVENT, listener);
57
57
  };
58
58
 
59
- const removeAdClickedEventListener = () => {
59
+ const removeAdClickedEventListener = (): void => {
60
60
  removeEventListener(ON_INTERSTITIAL_CLICKED_EVENT);
61
61
  };
62
62
 
63
- const addAdDisplayedEventListener = (listener: (adInfo: AdInfo) => void) => {
64
- addEventListener(ON_INTERSTITIAL_DISPLAYED_EVENT, (adInfo: AdInfo) => listener(adInfo));
63
+ const addAdDisplayedEventListener = (listener: (adInfo: AdInfo) => void): void => {
64
+ addEventListener(ON_INTERSTITIAL_DISPLAYED_EVENT, listener);
65
65
  };
66
66
 
67
- const removeAdDisplayedEventListener = () => {
67
+ const removeAdDisplayedEventListener = (): void => {
68
68
  removeEventListener(ON_INTERSTITIAL_DISPLAYED_EVENT);
69
69
  };
70
70
 
71
- const addAdFailedToDisplayEventListener = (listener: (errorInfo: AdDisplayFailedInfo) => void) => {
72
- addEventListener(ON_INTERSTITIAL_AD_FAILED_TO_DISPLAY_EVENT, (errorInfo: AdDisplayFailedInfo) => listener(errorInfo));
71
+ const addAdFailedToDisplayEventListener = (listener: (errorInfo: AdDisplayFailedInfo) => void): void => {
72
+ addEventListener(ON_INTERSTITIAL_AD_FAILED_TO_DISPLAY_EVENT, listener);
73
73
  };
74
74
 
75
- const removeAdFailedToDisplayEventListener = () => {
75
+ const removeAdFailedToDisplayEventListener = (): void => {
76
76
  removeEventListener(ON_INTERSTITIAL_AD_FAILED_TO_DISPLAY_EVENT);
77
77
  };
78
78
 
79
- const addAdHiddenEventListener = (listener: (adInfo: AdInfo) => void) => {
80
- addEventListener(ON_INTERSTITIAL_HIDDEN_EVENT, (adInfo: AdInfo) => listener(adInfo));
79
+ const addAdHiddenEventListener = (listener: (adInfo: AdInfo) => void): void => {
80
+ addEventListener(ON_INTERSTITIAL_HIDDEN_EVENT, listener);
81
81
  };
82
82
 
83
- const removeAdHiddenEventListener = () => {
83
+ const removeAdHiddenEventListener = (): void => {
84
84
  removeEventListener(ON_INTERSTITIAL_HIDDEN_EVENT);
85
85
  };
86
86
 
87
- const addAdRevenuePaidListener = (listener: (adInfo: AdRevenueInfo) => void) => {
88
- addEventListener(ON_INTERSTITIAL_AD_REVENUE_PAID, (adInfo: AdRevenueInfo) => listener(adInfo));
87
+ const addAdRevenuePaidListener = (listener: (adInfo: AdRevenueInfo) => void): void => {
88
+ addEventListener(ON_INTERSTITIAL_AD_REVENUE_PAID, listener);
89
89
  };
90
90
 
91
- const removeAdRevenuePaidListener = () => {
91
+ const removeAdRevenuePaidListener = (): void => {
92
92
  removeEventListener(ON_INTERSTITIAL_AD_REVENUE_PAID);
93
93
  };
94
94
 
package/src/MRecAd.ts CHANGED
@@ -54,51 +54,51 @@ const stopAutoRefresh = (adUnitId: string): void => {
54
54
  AppLovinMAX.stopMRecAutoRefresh(adUnitId);
55
55
  };
56
56
 
57
- const addAdLoadedEventListener = (listener: (adInfo: AdInfo) => void) => {
58
- addEventListener(ON_MREC_AD_LOADED_EVENT, (adInfo: AdInfo) => listener(adInfo));
57
+ const addAdLoadedEventListener = (listener: (adInfo: AdInfo) => void): void => {
58
+ addEventListener(ON_MREC_AD_LOADED_EVENT, listener);
59
59
  };
60
60
 
61
- const removeAdLoadedEventListener = () => {
61
+ const removeAdLoadedEventListener = (): void => {
62
62
  removeEventListener(ON_MREC_AD_LOADED_EVENT);
63
63
  };
64
64
 
65
- const addAdLoadFailedEventListener = (listener: (errorInfo: AdLoadFailedInfo) => void) => {
66
- addEventListener(ON_MREC_AD_LOAD_FAILED_EVENT, (errorInfo: AdLoadFailedInfo) => listener(errorInfo));
65
+ const addAdLoadFailedEventListener = (listener: (errorInfo: AdLoadFailedInfo) => void): void => {
66
+ addEventListener(ON_MREC_AD_LOAD_FAILED_EVENT, listener);
67
67
  };
68
68
 
69
- const removeAdLoadFailedEventListener = () => {
69
+ const removeAdLoadFailedEventListener = (): void => {
70
70
  removeEventListener(ON_MREC_AD_LOAD_FAILED_EVENT);
71
71
  };
72
72
 
73
- const addAdClickedEventListener = (listener: (adInfo: AdInfo) => void) => {
74
- addEventListener(ON_MREC_AD_CLICKED_EVENT, (adInfo: AdInfo) => listener(adInfo));
73
+ const addAdClickedEventListener = (listener: (adInfo: AdInfo) => void): void => {
74
+ addEventListener(ON_MREC_AD_CLICKED_EVENT, listener);
75
75
  };
76
76
 
77
- const removeAdClickedEventListener = () => {
77
+ const removeAdClickedEventListener = (): void => {
78
78
  removeEventListener(ON_MREC_AD_CLICKED_EVENT);
79
79
  };
80
80
 
81
- const addAdCollapsedEventListener = (listener: (adInfo: AdInfo) => void) => {
82
- addEventListener(ON_MREC_AD_COLLAPSED_EVENT, (adInfo: AdInfo) => listener(adInfo));
81
+ const addAdCollapsedEventListener = (listener: (adInfo: AdInfo) => void): void => {
82
+ addEventListener(ON_MREC_AD_COLLAPSED_EVENT, listener);
83
83
  };
84
84
 
85
- const removeAdCollapsedEventListener = () => {
85
+ const removeAdCollapsedEventListener = (): void => {
86
86
  removeEventListener(ON_MREC_AD_COLLAPSED_EVENT);
87
87
  };
88
88
 
89
- const addAdExpandedEventListener = (listener: (adInfo: AdInfo) => void) => {
90
- addEventListener(ON_MREC_AD_EXPANDED_EVENT, (adInfo: AdInfo) => listener(adInfo));
89
+ const addAdExpandedEventListener = (listener: (adInfo: AdInfo) => void): void => {
90
+ addEventListener(ON_MREC_AD_EXPANDED_EVENT, listener);
91
91
  };
92
92
 
93
- const removeAdExpandedEventListener = () => {
93
+ const removeAdExpandedEventListener = (): void => {
94
94
  removeEventListener(ON_MREC_AD_EXPANDED_EVENT);
95
95
  };
96
96
 
97
- const addAdRevenuePaidListener = (listener: (adInfo: AdRevenueInfo) => void) => {
98
- addEventListener(ON_MREC_AD_REVENUE_PAID, (adInfo: AdRevenueInfo) => listener(adInfo));
97
+ const addAdRevenuePaidListener = (listener: (adInfo: AdRevenueInfo) => void): void => {
98
+ addEventListener(ON_MREC_AD_REVENUE_PAID, listener);
99
99
  };
100
100
 
101
- const removeAdRevenuePaidListener = () => {
101
+ const removeAdRevenuePaidListener = (): void => {
102
102
  removeEventListener(ON_MREC_AD_REVENUE_PAID);
103
103
  };
104
104
 
package/src/RewardedAd.ts CHANGED
@@ -37,69 +37,69 @@ const setLocalExtraParameter = (adUnitId: string, key: string, value: LocalExtra
37
37
  AppLovinMAX.setRewardedAdLocalExtraParameter(adUnitId, { [key]: value });
38
38
  };
39
39
 
40
- const addAdLoadedEventListener = (listener: (adInfo: AdInfo) => void) => {
41
- addEventListener(ON_REWARDED_AD_LOADED_EVENT, (adInfo: AdInfo) => listener(adInfo));
40
+ const addAdLoadedEventListener = (listener: (adInfo: AdInfo) => void): void => {
41
+ addEventListener(ON_REWARDED_AD_LOADED_EVENT, listener);
42
42
  };
43
43
 
44
- const removeAdLoadedEventListener = () => {
44
+ const removeAdLoadedEventListener = (): void => {
45
45
  removeEventListener(ON_REWARDED_AD_LOADED_EVENT);
46
46
  };
47
47
 
48
- const addAdLoadFailedEventListener = (listener: (errorInfo: AdLoadFailedInfo) => void) => {
49
- addEventListener(ON_REWARDED_AD_LOAD_FAILED_EVENT, (errorInfo: AdLoadFailedInfo) => listener(errorInfo));
48
+ const addAdLoadFailedEventListener = (listener: (errorInfo: AdLoadFailedInfo) => void): void => {
49
+ addEventListener(ON_REWARDED_AD_LOAD_FAILED_EVENT, listener);
50
50
  };
51
51
 
52
- const removeAdLoadFailedEventListener = () => {
52
+ const removeAdLoadFailedEventListener = (): void => {
53
53
  removeEventListener(ON_REWARDED_AD_LOAD_FAILED_EVENT);
54
54
  };
55
55
 
56
- const addAdClickedEventListener = (listener: (adInfo: AdInfo) => void) => {
57
- addEventListener(ON_REWARDED_AD_CLICKED_EVENT, (adInfo: AdInfo) => listener(adInfo));
56
+ const addAdClickedEventListener = (listener: (adInfo: AdInfo) => void): void => {
57
+ addEventListener(ON_REWARDED_AD_CLICKED_EVENT, listener);
58
58
  };
59
59
 
60
- const removeAdClickedEventListener = () => {
60
+ const removeAdClickedEventListener = (): void => {
61
61
  removeEventListener(ON_REWARDED_AD_CLICKED_EVENT);
62
62
  };
63
63
 
64
- const addAdDisplayedEventListener = (listener: (adInfo: AdInfo) => void) => {
65
- addEventListener(ON_REWARDED_AD_DISPLAYED_EVENT, (adInfo: AdInfo) => listener(adInfo));
64
+ const addAdDisplayedEventListener = (listener: (adInfo: AdInfo) => void): void => {
65
+ addEventListener(ON_REWARDED_AD_DISPLAYED_EVENT, listener);
66
66
  };
67
67
 
68
- const removeAdDisplayedEventListener = () => {
68
+ const removeAdDisplayedEventListener = (): void => {
69
69
  removeEventListener(ON_REWARDED_AD_DISPLAYED_EVENT);
70
70
  };
71
71
 
72
- const addAdFailedToDisplayEventListener = (listener: (errorInfo: AdDisplayFailedInfo) => void) => {
73
- addEventListener(ON_REWARDED_AD_FAILED_TO_DISPLAY_EVENT, (errorInfo: AdDisplayFailedInfo) => listener(errorInfo));
72
+ const addAdFailedToDisplayEventListener = (listener: (errorInfo: AdDisplayFailedInfo) => void): void => {
73
+ addEventListener(ON_REWARDED_AD_FAILED_TO_DISPLAY_EVENT, listener);
74
74
  };
75
75
 
76
- const removeAdFailedToDisplayEventListener = () => {
76
+ const removeAdFailedToDisplayEventListener = (): void => {
77
77
  removeEventListener(ON_REWARDED_AD_FAILED_TO_DISPLAY_EVENT);
78
78
  };
79
79
 
80
- const addAdHiddenEventListener = (listener: (adInfo: AdInfo) => void) => {
81
- addEventListener(ON_REWARDED_AD_HIDDEN_EVENT, (adInfo: AdInfo) => listener(adInfo));
80
+ const addAdHiddenEventListener = (listener: (adInfo: AdInfo) => void): void => {
81
+ addEventListener(ON_REWARDED_AD_HIDDEN_EVENT, listener);
82
82
  };
83
83
 
84
- const removeAdHiddenEventListener = () => {
84
+ const removeAdHiddenEventListener = (): void => {
85
85
  removeEventListener(ON_REWARDED_AD_HIDDEN_EVENT);
86
86
  };
87
87
 
88
- const addAdRevenuePaidListener = (listener: (adInfo: AdRevenueInfo) => void) => {
89
- addEventListener(ON_REWARDED_AD_REVENUE_PAID, (adInfo: AdRevenueInfo) => listener(adInfo));
88
+ const addAdRevenuePaidListener = (listener: (adInfo: AdRevenueInfo) => void): void => {
89
+ addEventListener(ON_REWARDED_AD_REVENUE_PAID, listener);
90
90
  };
91
91
 
92
- const removeAdRevenuePaidListener = () => {
92
+ const removeAdRevenuePaidListener = (): void => {
93
93
  removeEventListener(ON_REWARDED_AD_REVENUE_PAID);
94
94
  };
95
95
 
96
96
  // Rewarded specific APIs
97
97
 
98
- const addAdReceivedRewardEventListener = (listener: (adInfo: AdRewardInfo) => void) => {
99
- addEventListener(ON_REWARDED_AD_RECEIVED_REWARD_EVENT, (adInfo: AdRewardInfo) => listener(adInfo));
98
+ const addAdReceivedRewardEventListener = (listener: (adInfo: AdRewardInfo) => void): void => {
99
+ addEventListener(ON_REWARDED_AD_RECEIVED_REWARD_EVENT, listener);
100
100
  };
101
101
 
102
- const removeAdReceivedRewardEventListener = () => {
102
+ const removeAdReceivedRewardEventListener = (): void => {
103
103
  removeEventListener(ON_REWARDED_AD_RECEIVED_REWARD_EVENT);
104
104
  };
105
105
 
package/src/index.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export { default, AppLovinMAX, ConsentFlowUserGeography, AppTrackingStatus, CMPErrorCode } from './AppLovinMAX';
2
+ export { ErrorCode } from './ErrorCode';
2
3
  export { Privacy } from './Privacy';
3
4
  export { InterstitialAd } from './InterstitialAd';
4
5
  export { RewardedAd } from './RewardedAd';
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { forwardRef, useContext, useImperativeHandle, useRef, useState, useEffect, useCallback } from 'react';
3
- import { NativeModules, requireNativeComponent, UIManager, findNodeHandle } from 'react-native';
3
+ import { NativeModules, requireNativeComponent, UIManager, findNodeHandle, View } from 'react-native';
4
4
  import type { ViewProps } from 'react-native';
5
5
  import { NativeAdViewContext, NativeAdViewProvider } from './NativeAdViewProvider';
6
6
  import type { AdInfo, AdLoadFailedInfo, AdRevenueInfo } from '../types/AdInfo';
@@ -61,18 +61,20 @@ export const NativeAdView = forwardRef<NativeAdViewHandler, NativeAdViewProps &
61
61
  const [isInitialized, setIsInitialized] = useState<boolean>(false);
62
62
 
63
63
  useEffect(() => {
64
- // check that AppLovinMAX has been initialized
65
- AppLovinMAX.isInitialized().then((result: boolean) => {
64
+ const checkInitialization = async () => {
65
+ const result = await AppLovinMAX.isInitialized();
66
66
  setIsInitialized(result);
67
67
  if (!result) {
68
- console.warn('NativeAdView is mounted before the initialization of the AppLovin MAX React Native module');
68
+ console.warn('NativeAdView is mounted before the initialization of the AppLovin MAX React Native module.');
69
69
  }
70
- });
70
+ };
71
+
72
+ checkInitialization();
71
73
  }, []);
72
74
 
73
- // Not ready to render NativeAdView
75
+ // Avoid rendering the NativeAdView if the SDK is not initialized
74
76
  if (!isInitialized) {
75
- return null;
77
+ return <View {...props} />;
76
78
  }
77
79
 
78
80
  return (
@@ -86,15 +88,14 @@ const NativeAdViewImpl = forwardRef<NativeAdViewHandler, NativeAdViewProps & Vie
86
88
  { adUnitId, placement, customData, extraParameters, localExtraParameters, onAdLoaded, onAdLoadFailed, onAdClicked, onAdRevenuePaid, children, style, ...otherProps },
87
89
  ref
88
90
  ) {
89
- // context from NativeAdViewProvider
91
+ // Context provides functions to manage native ad and native ad view state
90
92
  const { setNativeAd, setNativeAdView } = useContext(NativeAdViewContext) as NativeAdViewContextType;
91
93
 
92
- // keep the nativeAdView ref
93
94
  const nativeAdViewRef = useRef<NativeAdViewType | null>(null);
94
95
 
95
- // invoke the native ad loader
96
- const loadAd = () => {
97
- if (nativeAdViewRef) {
96
+ // Load a new ad
97
+ const loadAd = useCallback(() => {
98
+ if (nativeAdViewRef.current) {
98
99
  UIManager.dispatchViewManagerCommand(
99
100
  findNodeHandle(nativeAdViewRef.current),
100
101
  // @ts-ignore: Issue in RN ts defs
@@ -102,12 +103,11 @@ const NativeAdViewImpl = forwardRef<NativeAdViewHandler, NativeAdViewProps & Vie
102
103
  undefined
103
104
  );
104
105
  }
105
- };
106
+ }, []);
106
107
 
107
- // expose a list of functions via the provided ref
108
- useImperativeHandle(ref, () => ({ loadAd }), []);
108
+ useImperativeHandle(ref, () => ({ loadAd }), [loadAd]);
109
109
 
110
- // save the DOM element via the ref callback
110
+ // Save the DOM element reference
111
111
  const saveElement = useCallback(
112
112
  (element: NativeAdViewType | null) => {
113
113
  if (element) {
@@ -118,22 +118,34 @@ const NativeAdViewImpl = forwardRef<NativeAdViewHandler, NativeAdViewProps & Vie
118
118
  [setNativeAdView]
119
119
  );
120
120
 
121
- const onAdLoadedEvent = (event: { nativeEvent: { nativeAd: NativeAd; adInfo: AdInfo } }) => {
122
- setNativeAd(event.nativeEvent.nativeAd);
123
- if (onAdLoaded) onAdLoaded(event.nativeEvent.adInfo);
124
- };
121
+ const onAdLoadedEvent = useCallback(
122
+ (event: { nativeEvent: { nativeAd: NativeAd; adInfo: AdInfo } }) => {
123
+ setNativeAd(event.nativeEvent.nativeAd);
124
+ onAdLoaded?.(event.nativeEvent.adInfo);
125
+ },
126
+ [onAdLoaded, setNativeAd]
127
+ );
125
128
 
126
- const onAdLoadFailedEvent = (event: AdNativeEvent<AdLoadFailedInfo>) => {
127
- if (onAdLoadFailed) onAdLoadFailed(event.nativeEvent);
128
- };
129
+ const onAdLoadFailedEvent = useCallback(
130
+ (event: AdNativeEvent<AdLoadFailedInfo>) => {
131
+ onAdLoadFailed?.(event.nativeEvent);
132
+ },
133
+ [onAdLoadFailed]
134
+ );
129
135
 
130
- const onAdClickedEvent = (event: AdNativeEvent<AdInfo>) => {
131
- if (onAdClicked) onAdClicked(event.nativeEvent);
132
- };
136
+ const onAdClickedEvent = useCallback(
137
+ (event: AdNativeEvent<AdInfo>) => {
138
+ onAdClicked?.(event.nativeEvent);
139
+ },
140
+ [onAdClicked]
141
+ );
133
142
 
134
- const onAdRevenuePaidEvent = (event: AdNativeEvent<AdRevenueInfo>) => {
135
- if (onAdRevenuePaid) onAdRevenuePaid(event.nativeEvent);
136
- };
143
+ const onAdRevenuePaidEvent = useCallback(
144
+ (event: AdNativeEvent<AdRevenueInfo>) => {
145
+ onAdRevenuePaid?.(event.nativeEvent);
146
+ },
147
+ [onAdRevenuePaid]
148
+ );
137
149
 
138
150
  return (
139
151
  <NativeAdViewComponent