react-native-daro 1.0.12 → 1.0.15

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 (222) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +30 -30
  3. package/android/build.gradle +42 -59
  4. package/android/src/admob/java/com/daro/reactnative/DaroSdkBridge.kt +23 -0
  5. package/android/src/main/AndroidManifest.xml +1 -2
  6. package/android/src/main/java/com/{darom → daro/reactnative}/DaroMAdBannerViewManager.kt +4 -4
  7. package/android/src/main/java/com/{darom → daro/reactnative}/DaroMAdNativeViewManager.kt +4 -4
  8. package/android/src/main/java/com/{darom → daro/reactnative}/DaroMModule.kt +44 -45
  9. package/android/src/main/java/com/{darom → daro/reactnative}/DaroMPackage.kt +1 -1
  10. package/android/src/main/java/com/{darom → daro/reactnative}/constants/InternalDaroMBannerSize.kt +1 -1
  11. package/android/src/main/java/com/{darom → daro/reactnative}/event/DaroMEvent.kt +1 -1
  12. package/android/src/main/java/com/{darom → daro/reactnative}/impl/DaroMBannerViewModuleImpl.kt +2 -2
  13. package/android/src/main/java/com/{darom → daro/reactnative}/impl/DaroMInterstitialModuleImpl.kt +26 -26
  14. package/android/src/main/java/com/{darom → daro/reactnative}/impl/DaroMLightPopupModuleImpl.kt +30 -29
  15. package/android/src/main/java/com/{darom → daro/reactnative}/impl/DaroMRewardedAdModuleImpl.kt +33 -27
  16. package/android/src/main/java/com/{darom → daro/reactnative}/util/AdInfoUtil.kt +25 -1
  17. package/android/src/main/java/com/{darom → daro/reactnative}/util/EventEmitterUtil.kt +2 -2
  18. package/android/src/main/java/com/daro/reactnative/view/DaroMAdBannerViewContainer.kt +417 -0
  19. package/android/src/main/java/com/{darom → daro/reactnative}/view/DaroMAdNativeViewContainer.kt +4 -4
  20. package/app.plugin.js +1 -0
  21. package/ios/DaroMAdBannerViewManager.swift +5 -1
  22. package/ios/DaroMModule+AppOpen.swift +34 -31
  23. package/ios/DaroMModule+Interstitial.swift +29 -26
  24. package/ios/DaroMModule+LightPopup.swift +40 -33
  25. package/ios/DaroMModule+Rewarded.swift +35 -27
  26. package/ios/DaroMModule.mm +13 -13
  27. package/ios/DaroMModule.swift +20 -13
  28. package/ios/DaroMNativeAdViewManager.swift +1 -1
  29. package/ios/mediation/admob/DaroMediationDebugger.swift +11 -0
  30. package/ios/mediation/admob/DaroMediationTypes.swift +22 -0
  31. package/lib/commonjs/AdBannerView.js +6 -1
  32. package/lib/commonjs/AdBannerView.js.map +1 -1
  33. package/lib/commonjs/AppOpenAd.js +155 -70
  34. package/lib/commonjs/AppOpenAd.js.map +1 -1
  35. package/lib/commonjs/ErrorCode.js.map +1 -1
  36. package/lib/commonjs/EventEmitter.js +39 -11
  37. package/lib/commonjs/EventEmitter.js.map +1 -1
  38. package/lib/commonjs/InterstitialAd.js +157 -70
  39. package/lib/commonjs/InterstitialAd.js.map +1 -1
  40. package/lib/commonjs/LightPopupAd.js +181 -99
  41. package/lib/commonjs/LightPopupAd.js.map +1 -1
  42. package/lib/commonjs/RewardedAd.js +164 -80
  43. package/lib/commonjs/RewardedAd.js.map +1 -1
  44. package/lib/commonjs/index.js +1 -2
  45. package/lib/commonjs/index.js.map +1 -1
  46. package/lib/commonjs/nativeAd/NativeAdView.js +5 -1
  47. package/lib/commonjs/nativeAd/NativeAdView.js.map +1 -1
  48. package/lib/commonjs/nativeAd/NativeAdViewComponents.js.map +1 -1
  49. package/lib/commonjs/nativeAd/NativeAdViewProvider.js.map +1 -1
  50. package/lib/commonjs/package.json +1 -0
  51. package/lib/commonjs/types/AdEvent.js +17 -0
  52. package/lib/commonjs/types/AdEvent.js.map +1 -1
  53. package/lib/module/AdBannerView.js +6 -1
  54. package/lib/module/AdBannerView.js.map +1 -1
  55. package/lib/module/AppOpenAd.js +155 -71
  56. package/lib/module/AppOpenAd.js.map +1 -1
  57. package/lib/module/ErrorCode.js.map +1 -1
  58. package/lib/module/EventEmitter.js +37 -10
  59. package/lib/module/EventEmitter.js.map +1 -1
  60. package/lib/module/InterstitialAd.js +158 -72
  61. package/lib/module/InterstitialAd.js.map +1 -1
  62. package/lib/module/LightPopupAd.js +182 -100
  63. package/lib/module/LightPopupAd.js.map +1 -1
  64. package/lib/module/RewardedAd.js +165 -82
  65. package/lib/module/RewardedAd.js.map +1 -1
  66. package/lib/module/index.js +1 -2
  67. package/lib/module/index.js.map +1 -1
  68. package/lib/module/nativeAd/NativeAdView.js +5 -1
  69. package/lib/module/nativeAd/NativeAdView.js.map +1 -1
  70. package/lib/module/nativeAd/NativeAdViewComponents.js.map +1 -1
  71. package/lib/module/nativeAd/NativeAdViewProvider.js.map +1 -1
  72. package/lib/module/package.json +1 -0
  73. package/lib/module/types/AdEvent.js +18 -1
  74. package/lib/module/types/AdEvent.js.map +1 -1
  75. package/lib/typescript/commonjs/plugin/src/index.d.ts +19 -0
  76. package/lib/typescript/commonjs/plugin/src/index.d.ts.map +1 -0
  77. package/lib/typescript/commonjs/plugin/src/skAdNetworkIds.d.ts +6 -0
  78. package/lib/typescript/commonjs/plugin/src/skAdNetworkIds.d.ts.map +1 -0
  79. package/lib/typescript/commonjs/plugin/src/withAndroid.d.ts +8 -0
  80. package/lib/typescript/commonjs/plugin/src/withAndroid.d.ts.map +1 -0
  81. package/lib/typescript/commonjs/plugin/src/withIos.d.ts +8 -0
  82. package/lib/typescript/commonjs/plugin/src/withIos.d.ts.map +1 -0
  83. package/lib/typescript/commonjs/src/AdBannerView.d.ts +124 -2
  84. package/lib/typescript/commonjs/src/AdBannerView.d.ts.map +1 -1
  85. package/lib/typescript/commonjs/src/AppOpenAd.d.ts +53 -2
  86. package/lib/typescript/commonjs/src/AppOpenAd.d.ts.map +1 -1
  87. package/lib/typescript/commonjs/src/ErrorCode.d.ts.map +1 -1
  88. package/lib/typescript/commonjs/src/EventEmitter.d.ts +9 -1
  89. package/lib/typescript/commonjs/src/EventEmitter.d.ts.map +1 -1
  90. package/lib/typescript/commonjs/src/InterstitialAd.d.ts +53 -2
  91. package/lib/typescript/commonjs/src/InterstitialAd.d.ts.map +1 -1
  92. package/lib/typescript/commonjs/src/LightPopupAd.d.ts +57 -2
  93. package/lib/typescript/commonjs/src/LightPopupAd.d.ts.map +1 -1
  94. package/lib/typescript/commonjs/src/RewardedAd.d.ts +57 -2
  95. package/lib/typescript/commonjs/src/RewardedAd.d.ts.map +1 -1
  96. package/lib/typescript/commonjs/src/index.d.ts +1 -1
  97. package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
  98. package/lib/typescript/commonjs/src/nativeAd/NativeAdView.d.ts +124 -2
  99. package/lib/typescript/commonjs/src/nativeAd/NativeAdView.d.ts.map +1 -1
  100. package/lib/typescript/commonjs/src/nativeAd/NativeAdViewComponents.d.ts.map +1 -1
  101. package/lib/typescript/commonjs/src/nativeAd/NativeAdViewProvider.d.ts.map +1 -1
  102. package/lib/typescript/commonjs/src/types/AdBannerViewProps.d.ts +2 -2
  103. package/lib/typescript/commonjs/src/types/AdBannerViewProps.d.ts.map +1 -1
  104. package/lib/typescript/commonjs/src/types/AdEvent.d.ts +24 -0
  105. package/lib/typescript/commonjs/src/types/AdEvent.d.ts.map +1 -1
  106. package/lib/typescript/commonjs/src/types/AdInfo.d.ts.map +1 -1
  107. package/lib/typescript/commonjs/src/types/AdProps.d.ts +2 -2
  108. package/lib/typescript/commonjs/src/types/AdProps.d.ts.map +1 -1
  109. package/lib/typescript/commonjs/src/types/DaroMMobileAds.d.ts.map +1 -1
  110. package/lib/typescript/commonjs/src/types/LightPopupAd.d.ts +1 -5
  111. package/lib/typescript/commonjs/src/types/LightPopupAd.d.ts.map +1 -1
  112. package/lib/typescript/commonjs/src/types/NativeAdViewProps.d.ts.map +1 -1
  113. package/lib/typescript/module/plugin/src/index.d.ts +19 -0
  114. package/lib/typescript/module/plugin/src/index.d.ts.map +1 -0
  115. package/lib/typescript/module/plugin/src/skAdNetworkIds.d.ts +6 -0
  116. package/lib/typescript/module/plugin/src/skAdNetworkIds.d.ts.map +1 -0
  117. package/lib/typescript/module/plugin/src/withAndroid.d.ts +8 -0
  118. package/lib/typescript/module/plugin/src/withAndroid.d.ts.map +1 -0
  119. package/lib/typescript/module/plugin/src/withIos.d.ts +8 -0
  120. package/lib/typescript/module/plugin/src/withIos.d.ts.map +1 -0
  121. package/lib/typescript/module/src/AdBannerView.d.ts +124 -2
  122. package/lib/typescript/module/src/AdBannerView.d.ts.map +1 -1
  123. package/lib/typescript/module/src/AppOpenAd.d.ts +53 -2
  124. package/lib/typescript/module/src/AppOpenAd.d.ts.map +1 -1
  125. package/lib/typescript/module/src/ErrorCode.d.ts.map +1 -1
  126. package/lib/typescript/module/src/EventEmitter.d.ts +9 -1
  127. package/lib/typescript/module/src/EventEmitter.d.ts.map +1 -1
  128. package/lib/typescript/module/src/InterstitialAd.d.ts +53 -2
  129. package/lib/typescript/module/src/InterstitialAd.d.ts.map +1 -1
  130. package/lib/typescript/module/src/LightPopupAd.d.ts +57 -2
  131. package/lib/typescript/module/src/LightPopupAd.d.ts.map +1 -1
  132. package/lib/typescript/module/src/RewardedAd.d.ts +57 -2
  133. package/lib/typescript/module/src/RewardedAd.d.ts.map +1 -1
  134. package/lib/typescript/module/src/index.d.ts +1 -1
  135. package/lib/typescript/module/src/index.d.ts.map +1 -1
  136. package/lib/typescript/module/src/nativeAd/NativeAdView.d.ts +124 -2
  137. package/lib/typescript/module/src/nativeAd/NativeAdView.d.ts.map +1 -1
  138. package/lib/typescript/module/src/nativeAd/NativeAdViewComponents.d.ts.map +1 -1
  139. package/lib/typescript/module/src/nativeAd/NativeAdViewProvider.d.ts.map +1 -1
  140. package/lib/typescript/module/src/types/AdBannerViewProps.d.ts +2 -2
  141. package/lib/typescript/module/src/types/AdBannerViewProps.d.ts.map +1 -1
  142. package/lib/typescript/module/src/types/AdEvent.d.ts +24 -0
  143. package/lib/typescript/module/src/types/AdEvent.d.ts.map +1 -1
  144. package/lib/typescript/module/src/types/AdInfo.d.ts.map +1 -1
  145. package/lib/typescript/module/src/types/AdProps.d.ts +2 -2
  146. package/lib/typescript/module/src/types/AdProps.d.ts.map +1 -1
  147. package/lib/typescript/module/src/types/DaroMMobileAds.d.ts.map +1 -1
  148. package/lib/typescript/module/src/types/LightPopupAd.d.ts +1 -5
  149. package/lib/typescript/module/src/types/LightPopupAd.d.ts.map +1 -1
  150. package/lib/typescript/module/src/types/NativeAdViewProps.d.ts.map +1 -1
  151. package/package.json +88 -101
  152. package/plugin/build/index.d.ts +18 -0
  153. package/plugin/build/index.js +71 -0
  154. package/plugin/build/skAdNetworkIds.d.ts +5 -0
  155. package/plugin/build/skAdNetworkIds.js +205 -0
  156. package/plugin/build/withAndroid.d.ts +7 -0
  157. package/plugin/build/withAndroid.js +140 -0
  158. package/plugin/build/withIos.d.ts +7 -0
  159. package/plugin/build/withIos.js +83 -0
  160. package/react-native-daro.podspec +25 -0
  161. package/src/AdBannerView.tsx +54 -17
  162. package/src/AppOpenAd.ts +216 -104
  163. package/src/ErrorCode.ts +1 -2
  164. package/src/EventEmitter.ts +63 -14
  165. package/src/InterstitialAd.ts +216 -104
  166. package/src/LightPopupAd.ts +240 -114
  167. package/src/RewardedAd.ts +233 -122
  168. package/src/index.tsx +20 -12
  169. package/src/nativeAd/NativeAdView.tsx +65 -14
  170. package/src/nativeAd/NativeAdViewComponents.tsx +54 -27
  171. package/src/nativeAd/NativeAdViewProvider.tsx +17 -7
  172. package/src/types/AdBannerViewProps.ts +11 -11
  173. package/src/types/AdEvent.ts +39 -2
  174. package/src/types/AdInfo.ts +17 -17
  175. package/src/types/AdProps.ts +8 -9
  176. package/src/types/DaroMMobileAds.ts +3 -6
  177. package/src/types/LightPopupAd.ts +2 -7
  178. package/src/types/NativeAdViewProps.ts +5 -5
  179. package/src/types/index.ts +1 -1
  180. package/android/gradle.properties +0 -5
  181. package/android/src/main/AndroidManifestNew.xml +0 -7
  182. package/android/src/main/java/com/darom/view/DaroMAdBannerViewContainer.kt +0 -163
  183. package/android/src/main/res/layout/layout_activity_transparent.xml +0 -7
  184. package/android/src/main/res/values/styles.xml +0 -11
  185. package/ios/DaroM-Bridging-Header.h +0 -6
  186. package/lib/commonjs/types/AppOpenAd.js +0 -6
  187. package/lib/commonjs/types/AppOpenAd.js.map +0 -1
  188. package/lib/commonjs/types/FullScreenAd.js +0 -6
  189. package/lib/commonjs/types/FullScreenAd.js.map +0 -1
  190. package/lib/commonjs/types/InterstitialAd.js +0 -6
  191. package/lib/commonjs/types/InterstitialAd.js.map +0 -1
  192. package/lib/commonjs/types/RewardedAd.js +0 -6
  193. package/lib/commonjs/types/RewardedAd.js.map +0 -1
  194. package/lib/module/types/AppOpenAd.js +0 -4
  195. package/lib/module/types/AppOpenAd.js.map +0 -1
  196. package/lib/module/types/FullScreenAd.js +0 -4
  197. package/lib/module/types/FullScreenAd.js.map +0 -1
  198. package/lib/module/types/InterstitialAd.js +0 -4
  199. package/lib/module/types/InterstitialAd.js.map +0 -1
  200. package/lib/module/types/RewardedAd.js +0 -4
  201. package/lib/module/types/RewardedAd.js.map +0 -1
  202. package/lib/typescript/commonjs/src/types/AppOpenAd.d.ts +0 -3
  203. package/lib/typescript/commonjs/src/types/AppOpenAd.d.ts.map +0 -1
  204. package/lib/typescript/commonjs/src/types/FullScreenAd.d.ts +0 -21
  205. package/lib/typescript/commonjs/src/types/FullScreenAd.d.ts.map +0 -1
  206. package/lib/typescript/commonjs/src/types/InterstitialAd.d.ts +0 -3
  207. package/lib/typescript/commonjs/src/types/InterstitialAd.d.ts.map +0 -1
  208. package/lib/typescript/commonjs/src/types/RewardedAd.d.ts +0 -9
  209. package/lib/typescript/commonjs/src/types/RewardedAd.d.ts.map +0 -1
  210. package/lib/typescript/module/src/types/AppOpenAd.d.ts +0 -3
  211. package/lib/typescript/module/src/types/AppOpenAd.d.ts.map +0 -1
  212. package/lib/typescript/module/src/types/FullScreenAd.d.ts +0 -21
  213. package/lib/typescript/module/src/types/FullScreenAd.d.ts.map +0 -1
  214. package/lib/typescript/module/src/types/InterstitialAd.d.ts +0 -3
  215. package/lib/typescript/module/src/types/InterstitialAd.d.ts.map +0 -1
  216. package/lib/typescript/module/src/types/RewardedAd.d.ts +0 -9
  217. package/lib/typescript/module/src/types/RewardedAd.d.ts.map +0 -1
  218. package/react-native-daro-m.podspec +0 -44
  219. package/src/types/AppOpenAd.ts +0 -3
  220. package/src/types/FullScreenAd.ts +0 -28
  221. package/src/types/InterstitialAd.ts +0 -3
  222. package/src/types/RewardedAd.ts +0 -15
package/src/RewardedAd.ts CHANGED
@@ -1,130 +1,241 @@
1
- import { NativeModules } from "react-native";
2
- import { addEventListener, removeEventListener } from "./EventEmitter";
3
- import type { AdDisplayFailedInfo, AdInfo, AdLoadFailedInfo, AdRewardInfo } from "./types/AdInfo";
4
- import type { RewardedAdType } from "./types/RewardedAd";
1
+ import { NativeModules } from 'react-native';
2
+ import {
3
+ addEventListener,
4
+ removeEventListener,
5
+ AdEventEmitter,
6
+ } from './EventEmitter';
7
+ import type {
8
+ AdDisplayFailedInfo,
9
+ AdInfo,
10
+ AdLoadFailedInfo,
11
+ AdRewardInfo,
12
+ } from './types/AdInfo';
13
+ import {
14
+ AdEventType,
15
+ RewardedAdEventType,
16
+ type RewardedAdEventPayloadMap,
17
+ } from './types/AdEvent';
5
18
 
6
19
  const { DaroMModule } = NativeModules;
7
20
 
8
21
  const {
9
- ON_REWARDED_AD_LOADED_EVENT,
10
- ON_REWARDED_AD_LOAD_FAILED_EVENT,
11
- ON_REWARDED_AD_CLICKED_EVENT,
12
- ON_REWARDED_AD_DISPLAYED_EVENT,
13
- ON_REWARDED_AD_FAILED_TO_DISPLAY_EVENT,
14
- ON_REWARDED_AD_HIDDEN_EVENT,
15
- ON_REWARDED_AD_RECEIVED_REWARD_EVENT,
16
- ON_REWARDED_AD_IMPRESSION_RECORDED,
22
+ ON_REWARDED_AD_LOADED_EVENT,
23
+ ON_REWARDED_AD_LOAD_FAILED_EVENT,
24
+ ON_REWARDED_AD_CLICKED_EVENT,
25
+ ON_REWARDED_AD_DISPLAYED_EVENT,
26
+ ON_REWARDED_AD_FAILED_TO_DISPLAY_EVENT,
27
+ ON_REWARDED_AD_HIDDEN_EVENT,
28
+ ON_REWARDED_AD_RECEIVED_REWARD_EVENT,
29
+ ON_REWARDED_AD_IMPRESSION_RECORDED,
17
30
  } = DaroMModule.getConstants();
18
31
 
19
-
20
- const isAdReady = (adUnitId: string): Promise<boolean> => {
21
- return DaroMModule.isRewardedAdReady(adUnitId);
22
- };
23
-
24
- const loadAd = (adUnitId: string): void => {
25
- DaroMModule.loadRewardedAd(adUnitId);
26
- };
27
-
28
- const showAd = (adUnitId: string, customData?: string | null): void => {
29
- DaroMModule.showRewardedAd(adUnitId, customData ?? null);
30
- };
31
-
32
- const addAdLoadedEventListener = (listener: (adInfo: AdInfo) => void): void => {
33
- addEventListener(ON_REWARDED_AD_LOADED_EVENT, listener);
34
- };
35
-
36
- const removeAdLoadedEventListener = (): void => {
37
- removeEventListener(ON_REWARDED_AD_LOADED_EVENT);
38
- };
39
-
40
- const addAdLoadFailedEventListener = (listener: (errorInfo: AdLoadFailedInfo) => void): void => {
41
- addEventListener(ON_REWARDED_AD_LOAD_FAILED_EVENT, listener);
42
- };
43
-
44
- const removeAdLoadFailedEventListener = (): void => {
45
- removeEventListener(ON_REWARDED_AD_LOAD_FAILED_EVENT);
46
- };
47
-
48
- const addAdClickedEventListener = (listener: (adInfo: AdInfo) => void): void => {
49
- addEventListener(ON_REWARDED_AD_CLICKED_EVENT, listener);
50
- };
51
-
52
- const removeAdClickedEventListener = (): void => {
53
- removeEventListener(ON_REWARDED_AD_CLICKED_EVENT);
54
- };
55
-
56
- const addAdDisplayedEventListener = (listener: (adInfo: AdInfo) => void): void => {
57
- addEventListener(ON_REWARDED_AD_DISPLAYED_EVENT, listener);
58
- };
59
-
60
- const removeAdDisplayedEventListener = (): void => {
61
- removeEventListener(ON_REWARDED_AD_DISPLAYED_EVENT);
62
- };
63
-
64
- const addAdFailedToDisplayEventListener = (listener: (errorInfo: AdDisplayFailedInfo) => void): void => {
65
- addEventListener(ON_REWARDED_AD_FAILED_TO_DISPLAY_EVENT, listener);
66
- };
67
-
68
- const removeAdFailedToDisplayEventListener = (): void => {
69
- removeEventListener(ON_REWARDED_AD_FAILED_TO_DISPLAY_EVENT);
70
- };
71
-
72
- const addAdHiddenEventListener = (listener: (adInfo: AdInfo) => void): void => {
73
- addEventListener(ON_REWARDED_AD_HIDDEN_EVENT, listener);
74
- };
75
-
76
- const removeAdHiddenEventListener = (): void => {
77
- removeEventListener(ON_REWARDED_AD_HIDDEN_EVENT);
78
- };
79
-
80
- const addAdImpressionRecordedListener = (listener: (adInfo: AdInfo) => void): void => {
81
- addEventListener(ON_REWARDED_AD_IMPRESSION_RECORDED, listener);
82
- };
83
-
84
- const removeAdImpressionRecordedListener = (): void => {
85
- removeEventListener(ON_REWARDED_AD_IMPRESSION_RECORDED);
86
- };
87
-
88
- // Rewarded specific APIs
89
-
90
- const addAdReceivedRewardEventListener = (listener: (adInfo: AdRewardInfo) => void): void => {
91
- addEventListener(ON_REWARDED_AD_RECEIVED_REWARD_EVENT, listener);
92
- };
93
-
94
- const removeAdReceivedRewardEventListener = (): void => {
95
- removeEventListener(ON_REWARDED_AD_RECEIVED_REWARD_EVENT);
96
- };
97
-
98
-
99
- export const RewardedAd: RewardedAdType = {
100
- isAdReady,
101
- loadAd,
102
- showAd,
103
-
104
- addAdLoadedEventListener,
105
- removeAdLoadedEventListener,
106
-
107
- addAdLoadFailedEventListener,
108
- removeAdLoadFailedEventListener,
109
-
110
- addAdClickedEventListener,
111
- removeAdClickedEventListener,
112
-
113
- addAdDisplayedEventListener,
114
- removeAdDisplayedEventListener,
115
-
116
- addAdFailedToDisplayEventListener,
117
- removeAdFailedToDisplayEventListener,
118
-
119
- addAdHiddenEventListener,
120
- removeAdHiddenEventListener,
121
-
122
- addAdImpressionRecordedListener,
123
- removeAdImpressionRecordedListener,
124
-
125
- // Rewarded specific APIs
126
- addAdReceivedRewardEventListener,
127
- removeAdReceivedRewardEventListener,
128
- };
32
+ const NATIVE_EVENT_BY_TYPE: Record<AdEventType | RewardedAdEventType, string> =
33
+ {
34
+ [AdEventType.LOADED]: ON_REWARDED_AD_LOADED_EVENT,
35
+ [AdEventType.LOAD_FAILED]: ON_REWARDED_AD_LOAD_FAILED_EVENT,
36
+ [AdEventType.CLICKED]: ON_REWARDED_AD_CLICKED_EVENT,
37
+ [AdEventType.DISPLAYED]: ON_REWARDED_AD_DISPLAYED_EVENT,
38
+ [AdEventType.FAILED_TO_DISPLAY]: ON_REWARDED_AD_FAILED_TO_DISPLAY_EVENT,
39
+ [AdEventType.HIDDEN]: ON_REWARDED_AD_HIDDEN_EVENT,
40
+ [AdEventType.IMPRESSION_RECORDED]: ON_REWARDED_AD_IMPRESSION_RECORDED,
41
+ [RewardedAdEventType.RECEIVED_REWARD]: ON_REWARDED_AD_RECEIVED_REWARD_EVENT,
42
+ };
43
+
44
+ export class RewardedAd {
45
+ private static _nextRequestId = 1;
46
+ private static _legacyRequestIds = new Map<string, number>();
47
+ private static _legacyRequestIdSet = new Set<number>();
48
+
49
+ private readonly eventEmitter = new AdEventEmitter();
50
+
51
+ private constructor(
52
+ private readonly requestId: number,
53
+ private readonly adUnitId: string
54
+ ) {}
55
+
56
+ static createForAdRequest(adUnitId: string): RewardedAd {
57
+ const requestId = RewardedAd._nextRequestId++;
58
+ return new RewardedAd(requestId, adUnitId);
59
+ }
60
+
61
+ isAdReady(): Promise<boolean> {
62
+ return DaroMModule.isRewardedAdReady(this.requestId, this.adUnitId);
63
+ }
64
+
65
+ load(): void {
66
+ DaroMModule.loadRewardedAd(this.requestId, this.adUnitId);
67
+ }
68
+
69
+ show(customData?: string | null): void {
70
+ DaroMModule.showRewardedAd(
71
+ this.requestId,
72
+ this.adUnitId,
73
+ customData ?? null
74
+ );
75
+ }
76
+
77
+ addAdEventListener<T extends AdEventType | RewardedAdEventType>(
78
+ type: T,
79
+ listener: (info: RewardedAdEventPayloadMap[T]) => void
80
+ ): () => void {
81
+ const nativeEvent = NATIVE_EVENT_BY_TYPE[type];
82
+ const requestId = this.requestId;
83
+ return this.eventEmitter.addEventListener(nativeEvent, (payload: any) => {
84
+ if (payload?.requestId !== requestId) {
85
+ return;
86
+ }
87
+ listener(payload);
88
+ });
89
+ }
90
+
91
+ removeAllListeners(): void {
92
+ this.eventEmitter.removeAllListeners();
93
+ }
94
+
95
+ // ---- Deprecated static API (backward compatibility) ----
96
+
97
+ private static _getLegacyRequestId(adUnitId: string): number {
98
+ let requestId = RewardedAd._legacyRequestIds.get(adUnitId);
99
+ if (requestId === undefined) {
100
+ requestId = RewardedAd._nextRequestId++;
101
+ RewardedAd._legacyRequestIds.set(adUnitId, requestId);
102
+ RewardedAd._legacyRequestIdSet.add(requestId);
103
+ }
104
+ return requestId;
105
+ }
106
+
107
+ private static _addLegacyEventListener<T>(
108
+ event: string,
109
+ listener: (info: T) => void
110
+ ): void {
111
+ addEventListener(event, (payload: any) => {
112
+ if (!RewardedAd._legacyRequestIdSet.has(payload?.requestId)) {
113
+ return;
114
+ }
115
+ listener(payload);
116
+ });
117
+ }
118
+
119
+ /** @deprecated `RewardedAd.createForAdRequest(adUnitId)` 인스턴스의 `isAdReady()`를 사용하세요. */
120
+ static isAdReady(adUnitId: string): Promise<boolean> {
121
+ const requestId = RewardedAd._getLegacyRequestId(adUnitId);
122
+ return DaroMModule.isRewardedAdReady(requestId, adUnitId);
123
+ }
124
+
125
+ /** @deprecated `RewardedAd.createForAdRequest(adUnitId)` 인스턴스의 `load()`를 사용하세요. */
126
+ static loadAd(adUnitId: string): void {
127
+ const requestId = RewardedAd._getLegacyRequestId(adUnitId);
128
+ DaroMModule.loadRewardedAd(requestId, adUnitId);
129
+ }
130
+
131
+ /** @deprecated `RewardedAd.createForAdRequest(adUnitId)` 인스턴스의 `show()`를 사용하세요. */
132
+ static showAd(adUnitId: string, customData?: string | null): void {
133
+ const requestId = RewardedAd._getLegacyRequestId(adUnitId);
134
+ DaroMModule.showRewardedAd(requestId, adUnitId, customData ?? null);
135
+ }
136
+
137
+ /** @deprecated `addAdEventListener(AdEventType.LOADED, ...)`를 인스턴스에서 사용하세요. */
138
+ static addAdLoadedEventListener(listener: (adInfo: AdInfo) => void): void {
139
+ RewardedAd._addLegacyEventListener(ON_REWARDED_AD_LOADED_EVENT, listener);
140
+ }
141
+
142
+ /** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
143
+ static removeAdLoadedEventListener(): void {
144
+ removeEventListener(ON_REWARDED_AD_LOADED_EVENT);
145
+ }
146
+
147
+ /** @deprecated `addAdEventListener(AdEventType.LOAD_FAILED, ...)`를 인스턴스에서 사용하세요. */
148
+ static addAdLoadFailedEventListener(
149
+ listener: (errorInfo: AdLoadFailedInfo) => void
150
+ ): void {
151
+ RewardedAd._addLegacyEventListener(
152
+ ON_REWARDED_AD_LOAD_FAILED_EVENT,
153
+ listener
154
+ );
155
+ }
156
+
157
+ /** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
158
+ static removeAdLoadFailedEventListener(): void {
159
+ removeEventListener(ON_REWARDED_AD_LOAD_FAILED_EVENT);
160
+ }
161
+
162
+ /** @deprecated `addAdEventListener(AdEventType.CLICKED, ...)`를 인스턴스에서 사용하세요. */
163
+ static addAdClickedEventListener(listener: (adInfo: AdInfo) => void): void {
164
+ RewardedAd._addLegacyEventListener(ON_REWARDED_AD_CLICKED_EVENT, listener);
165
+ }
166
+
167
+ /** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
168
+ static removeAdClickedEventListener(): void {
169
+ removeEventListener(ON_REWARDED_AD_CLICKED_EVENT);
170
+ }
171
+
172
+ /** @deprecated `addAdEventListener(AdEventType.DISPLAYED, ...)`를 인스턴스에서 사용하세요. */
173
+ static addAdDisplayedEventListener(listener: (adInfo: AdInfo) => void): void {
174
+ RewardedAd._addLegacyEventListener(
175
+ ON_REWARDED_AD_DISPLAYED_EVENT,
176
+ listener
177
+ );
178
+ }
179
+
180
+ /** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
181
+ static removeAdDisplayedEventListener(): void {
182
+ removeEventListener(ON_REWARDED_AD_DISPLAYED_EVENT);
183
+ }
184
+
185
+ /** @deprecated `addAdEventListener(AdEventType.FAILED_TO_DISPLAY, ...)`를 인스턴스에서 사용하세요. */
186
+ static addAdFailedToDisplayEventListener(
187
+ listener: (errorInfo: AdDisplayFailedInfo) => void
188
+ ): void {
189
+ RewardedAd._addLegacyEventListener(
190
+ ON_REWARDED_AD_FAILED_TO_DISPLAY_EVENT,
191
+ listener
192
+ );
193
+ }
194
+
195
+ /** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
196
+ static removeAdFailedToDisplayEventListener(): void {
197
+ removeEventListener(ON_REWARDED_AD_FAILED_TO_DISPLAY_EVENT);
198
+ }
199
+
200
+ /** @deprecated `addAdEventListener(AdEventType.HIDDEN, ...)`를 인스턴스에서 사용하세요. */
201
+ static addAdHiddenEventListener(listener: (adInfo: AdInfo) => void): void {
202
+ RewardedAd._addLegacyEventListener(ON_REWARDED_AD_HIDDEN_EVENT, listener);
203
+ }
204
+
205
+ /** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
206
+ static removeAdHiddenEventListener(): void {
207
+ removeEventListener(ON_REWARDED_AD_HIDDEN_EVENT);
208
+ }
209
+
210
+ /** @deprecated `addAdEventListener(AdEventType.IMPRESSION_RECORDED, ...)`를 인스턴스에서 사용하세요. */
211
+ static addAdImpressionRecordedListener(
212
+ listener: (adInfo: AdInfo) => void
213
+ ): void {
214
+ RewardedAd._addLegacyEventListener(
215
+ ON_REWARDED_AD_IMPRESSION_RECORDED,
216
+ listener
217
+ );
218
+ }
219
+
220
+ /** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
221
+ static removeAdImpressionRecordedListener(): void {
222
+ removeEventListener(ON_REWARDED_AD_IMPRESSION_RECORDED);
223
+ }
224
+
225
+ /** @deprecated `addAdEventListener(RewardedAdEventType.RECEIVED_REWARD, ...)`를 인스턴스에서 사용하세요. */
226
+ static addAdReceivedRewardEventListener(
227
+ listener: (adInfo: AdRewardInfo) => void
228
+ ): void {
229
+ RewardedAd._addLegacyEventListener(
230
+ ON_REWARDED_AD_RECEIVED_REWARD_EVENT,
231
+ listener
232
+ );
233
+ }
234
+
235
+ /** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
236
+ static removeAdReceivedRewardEventListener(): void {
237
+ removeEventListener(ON_REWARDED_AD_RECEIVED_REWARD_EVENT);
238
+ }
239
+ }
129
240
 
130
241
  export default RewardedAd;
package/src/index.tsx CHANGED
@@ -1,7 +1,4 @@
1
- import {
2
- NativeModules,
3
- Platform
4
- } from 'react-native';
1
+ import { NativeModules, Platform } from 'react-native';
5
2
 
6
3
  export * from './AdBannerView';
7
4
  export * from './types';
@@ -10,23 +7,34 @@ export { RewardedAd } from './RewardedAd';
10
7
  export { LightPopupAd } from './LightPopupAd';
11
8
 
12
9
  export { NativeAdView } from './nativeAd/NativeAdView';
13
- export { BodyView, CallToActionView, IconView, MediaView, TitleView } from './nativeAd/NativeAdViewComponents';
10
+ export {
11
+ BodyView,
12
+ CallToActionView,
13
+ IconView,
14
+ MediaView,
15
+ TitleView,
16
+ } from './nativeAd/NativeAdViewComponents';
14
17
 
15
18
  const LINKING_ERROR =
16
- `The package 'react-native-daro-m' doesn't seem to be linked. Make sure: \n\n` +
19
+ `The native module 'DaroMModule' doesn't seem to be linked. Make sure: \n\n` +
17
20
  Platform.select({ ios: "- You have run 'pod install'\n", default: '' }) +
18
21
  '- You rebuilt the app after installing the package\n' +
19
22
  '- You are not using Expo Go\n';
20
23
 
21
- const DaroMModule = NativeModules.DaroMModule ? NativeModules.DaroMModule : new Proxy({}, {
22
- get() {
23
- throw new Error(LINKING_ERROR);
24
- },
25
- });
24
+ const DaroMModule = NativeModules.DaroMModule
25
+ ? NativeModules.DaroMModule
26
+ : new Proxy(
27
+ {},
28
+ {
29
+ get() {
30
+ throw new Error(LINKING_ERROR);
31
+ },
32
+ }
33
+ );
26
34
 
27
35
  export async function initialize() {
28
36
  await DaroMModule.initializeSdk();
29
- };
37
+ }
30
38
 
31
39
  export async function showMediationDebugger() {
32
40
  await DaroMModule.showMediationDebugger();
@@ -1,9 +1,32 @@
1
- import { forwardRef, useCallback, useContext, useEffect, useImperativeHandle, useRef, useState } from 'react';
2
- import { findNodeHandle, NativeModules, requireNativeComponent, UIManager, View, type ViewProps } from 'react-native';
1
+ import {
2
+ forwardRef,
3
+ useCallback,
4
+ useContext,
5
+ useEffect,
6
+ useImperativeHandle,
7
+ useRef,
8
+ useState,
9
+ } from 'react';
10
+ import {
11
+ findNodeHandle,
12
+ NativeModules,
13
+ requireNativeComponent,
14
+ UIManager,
15
+ View,
16
+ type ViewProps,
17
+ } from 'react-native';
3
18
  import type { AdNativeEvent } from '../types/AdEvent';
4
19
  import type { AdInfo, AdLoadFailedInfo } from '../types/AdInfo';
5
- import type { NativeAdViewHandler, NativeAdViewProps } from '../types/NativeAdViewProps';
6
- import { NativeAdViewContext, NativeAdViewProvider, type NativeAdViewContextType, type NativeAdViewType } from './NativeAdViewProvider';
20
+ import type {
21
+ NativeAdViewHandler,
22
+ NativeAdViewProps,
23
+ } from '../types/NativeAdViewProps';
24
+ import {
25
+ NativeAdViewContext,
26
+ NativeAdViewProvider,
27
+ type NativeAdViewContextType,
28
+ type NativeAdViewType,
29
+ } from './NativeAdViewProvider';
7
30
 
8
31
  const { DaroMModule } = NativeModules;
9
32
 
@@ -15,9 +38,14 @@ type NativeAdViewNativeEvents = {
15
38
  };
16
39
 
17
40
  const ComponentName = 'DaroMNativeAdView';
18
- const NativeAdViewComponent = requireNativeComponent<NativeAdViewProps & ViewProps & NativeAdViewNativeEvents>(ComponentName);
19
-
20
- export const NativeAdView = forwardRef<NativeAdViewHandler, NativeAdViewProps & ViewProps>(function NativeAdView(props, ref) {
41
+ const NativeAdViewComponent = requireNativeComponent<
42
+ NativeAdViewProps & ViewProps & NativeAdViewNativeEvents
43
+ >(ComponentName);
44
+
45
+ export const NativeAdView = forwardRef<
46
+ NativeAdViewHandler,
47
+ NativeAdViewProps & ViewProps
48
+ >(function NativeAdView(props, ref) {
21
49
  const [isInitialized, setIsInitialized] = useState<boolean>(false);
22
50
 
23
51
  useEffect(() => {
@@ -25,7 +53,9 @@ export const NativeAdView = forwardRef<NativeAdViewHandler, NativeAdViewProps &
25
53
  const result = await DaroMModule.isInitialized();
26
54
  setIsInitialized(result);
27
55
  if (!result) {
28
- console.warn('NativeAdView is mounted before the initialization of the DaroM React Native module.');
56
+ console.warn(
57
+ 'NativeAdView is mounted before the initialization of the DaroM React Native module.'
58
+ );
29
59
  }
30
60
  };
31
61
 
@@ -41,26 +71,47 @@ export const NativeAdView = forwardRef<NativeAdViewHandler, NativeAdViewProps &
41
71
  <NativeAdViewProvider>
42
72
  <NativeAdViewImpl {...props} ref={ref} />
43
73
  </NativeAdViewProvider>
44
- );
74
+ );
45
75
  });
46
76
 
47
- const NativeAdViewImpl = forwardRef<NativeAdViewHandler, NativeAdViewProps & ViewProps>(function NativeAdViewImpl(
48
- { adUnitId, onAdLoaded, onAdLoadFailed, onAdClicked, onAdImpressionRecorded, children, style, loadOnMount = true, ...otherProps },
77
+ const NativeAdViewImpl = forwardRef<
78
+ NativeAdViewHandler,
79
+ NativeAdViewProps & ViewProps
80
+ >(function NativeAdViewImpl(
81
+ {
82
+ adUnitId,
83
+ onAdLoaded,
84
+ onAdLoadFailed,
85
+ onAdClicked,
86
+ onAdImpressionRecorded,
87
+ children,
88
+ style,
89
+ loadOnMount = true,
90
+ ...otherProps
91
+ },
49
92
  ref
50
93
  ) {
51
94
  // Context provides functions to manage native ad and native ad view state
52
- const { setNativeAdView } = useContext(NativeAdViewContext) as NativeAdViewContextType;
95
+ const { setNativeAdView } = useContext(
96
+ NativeAdViewContext
97
+ ) as NativeAdViewContextType;
53
98
 
54
99
  const nativeAdViewRef = useRef<NativeAdViewType | null>(null);
55
100
 
56
101
  // Load a new ad
57
102
  const loadAd = useCallback(() => {
58
103
  if (nativeAdViewRef.current) {
104
+ const nodeHandle = findNodeHandle(nativeAdViewRef.current);
105
+
106
+ if (typeof nodeHandle !== 'number') {
107
+ return;
108
+ }
109
+
59
110
  UIManager.dispatchViewManagerCommand(
60
- findNodeHandle(nativeAdViewRef.current),
111
+ nodeHandle,
61
112
  // @ts-ignore: Issue in RN ts defs
62
113
  UIManager.getViewManagerConfig(ComponentName).Commands.loadAd,
63
- [],
114
+ []
64
115
  );
65
116
  }
66
117
  }, []);