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
@@ -1,113 +1,225 @@
1
- import { NativeModules } from "react-native";
2
- import { addEventListener, removeEventListener } from "./EventEmitter";
3
- import type { AdDisplayFailedInfo, AdInfo, AdLoadFailedInfo } from "./types/AdInfo";
4
- import type { InterstitialAdType } from "./types/InterstitialAd";
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
+ } from './types/AdInfo';
12
+ import { AdEventType, type AdEventPayloadMap } from './types/AdEvent';
5
13
 
6
14
  const { DaroMModule } = NativeModules;
7
15
 
8
16
  const {
9
- ON_INTERSTITIAL_LOADED_EVENT,
10
- ON_INTERSTITIAL_LOAD_FAILED_EVENT,
11
- ON_INTERSTITIAL_CLICKED_EVENT,
12
- ON_INTERSTITIAL_DISPLAYED_EVENT,
13
- ON_INTERSTITIAL_AD_FAILED_TO_DISPLAY_EVENT,
14
- ON_INTERSTITIAL_HIDDEN_EVENT,
15
- ON_INTERSTITIAL_AD_IMPRESSION_RECORDED,
17
+ ON_INTERSTITIAL_LOADED_EVENT,
18
+ ON_INTERSTITIAL_LOAD_FAILED_EVENT,
19
+ ON_INTERSTITIAL_CLICKED_EVENT,
20
+ ON_INTERSTITIAL_DISPLAYED_EVENT,
21
+ ON_INTERSTITIAL_AD_FAILED_TO_DISPLAY_EVENT,
22
+ ON_INTERSTITIAL_HIDDEN_EVENT,
23
+ ON_INTERSTITIAL_AD_IMPRESSION_RECORDED,
16
24
  } = DaroMModule.getConstants();
17
25
 
18
- const isAdReady = (adUnitId: string): Promise<boolean> => {
19
- return DaroMModule.isInterstitialReady(adUnitId);
20
- };
21
-
22
- const loadAd = (adUnitId: string): void => {
23
- DaroMModule.loadInterstitial(adUnitId);
24
- };
25
-
26
- const showAd = (adUnitId: string): void => {
27
- DaroMModule.showInterstitial(adUnitId);
28
- };
29
-
30
- const addAdLoadedEventListener = (listener: (adInfo: AdInfo) => void): void => {
31
- addEventListener(ON_INTERSTITIAL_LOADED_EVENT, listener);
32
- };
33
-
34
- const removeAdLoadedEventListener = (): void => {
35
- removeEventListener(ON_INTERSTITIAL_LOADED_EVENT);
36
- };
37
-
38
- const addAdLoadFailedEventListener = (listener: (errorInfo: AdLoadFailedInfo) => void): void => {
39
- addEventListener(ON_INTERSTITIAL_LOAD_FAILED_EVENT, listener);
40
- };
41
-
42
- const removeAdLoadFailedEventListener = (): void => {
43
- removeEventListener(ON_INTERSTITIAL_LOAD_FAILED_EVENT);
44
- };
45
-
46
- const addAdClickedEventListener = (listener: (adInfo: AdInfo) => void): void => {
47
- addEventListener(ON_INTERSTITIAL_CLICKED_EVENT, listener);
48
- };
49
-
50
- const removeAdClickedEventListener = (): void => {
51
- removeEventListener(ON_INTERSTITIAL_CLICKED_EVENT);
52
- };
53
-
54
- const addAdDisplayedEventListener = (listener: (adInfo: AdInfo) => void): void => {
55
- addEventListener(ON_INTERSTITIAL_DISPLAYED_EVENT, listener);
56
- };
57
-
58
- const removeAdDisplayedEventListener = (): void => {
59
- removeEventListener(ON_INTERSTITIAL_DISPLAYED_EVENT);
60
- };
61
-
62
- const addAdFailedToDisplayEventListener = (listener: (errorInfo: AdDisplayFailedInfo) => void): void => {
63
- addEventListener(ON_INTERSTITIAL_AD_FAILED_TO_DISPLAY_EVENT, listener);
64
- };
65
-
66
- const removeAdFailedToDisplayEventListener = (): void => {
67
- removeEventListener(ON_INTERSTITIAL_AD_FAILED_TO_DISPLAY_EVENT);
68
- };
69
-
70
- const addAdHiddenEventListener = (listener: (adInfo: AdInfo) => void): void => {
71
- addEventListener(ON_INTERSTITIAL_HIDDEN_EVENT, listener);
72
- };
73
-
74
- const removeAdHiddenEventListener = (): void => {
75
- removeEventListener(ON_INTERSTITIAL_HIDDEN_EVENT);
76
- };
77
-
78
- const addAdImpressionRecordedListener = (listener: (adInfo: AdInfo) => void): void => {
79
- addEventListener(ON_INTERSTITIAL_AD_IMPRESSION_RECORDED, listener);
80
- };
81
-
82
- const removeAdImpressionRecordedListener = (): void => {
83
- removeEventListener(ON_INTERSTITIAL_AD_IMPRESSION_RECORDED);
84
- };
85
-
86
- export const InterstitialAd: InterstitialAdType = {
87
- isAdReady,
88
- loadAd,
89
- showAd,
90
-
91
- addAdLoadedEventListener,
92
- removeAdLoadedEventListener,
93
-
94
- addAdLoadFailedEventListener,
95
- removeAdLoadFailedEventListener,
96
-
97
- addAdClickedEventListener,
98
- removeAdClickedEventListener,
99
-
100
- addAdDisplayedEventListener,
101
- removeAdDisplayedEventListener,
102
-
103
- addAdFailedToDisplayEventListener,
104
- removeAdFailedToDisplayEventListener,
105
-
106
- addAdHiddenEventListener,
107
- removeAdHiddenEventListener,
108
-
109
- addAdImpressionRecordedListener,
110
- removeAdImpressionRecordedListener,
26
+ const NATIVE_EVENT_BY_TYPE: Record<AdEventType, string> = {
27
+ [AdEventType.LOADED]: ON_INTERSTITIAL_LOADED_EVENT,
28
+ [AdEventType.LOAD_FAILED]: ON_INTERSTITIAL_LOAD_FAILED_EVENT,
29
+ [AdEventType.CLICKED]: ON_INTERSTITIAL_CLICKED_EVENT,
30
+ [AdEventType.DISPLAYED]: ON_INTERSTITIAL_DISPLAYED_EVENT,
31
+ [AdEventType.FAILED_TO_DISPLAY]: ON_INTERSTITIAL_AD_FAILED_TO_DISPLAY_EVENT,
32
+ [AdEventType.HIDDEN]: ON_INTERSTITIAL_HIDDEN_EVENT,
33
+ [AdEventType.IMPRESSION_RECORDED]: ON_INTERSTITIAL_AD_IMPRESSION_RECORDED,
34
+ };
35
+
36
+ export class InterstitialAd {
37
+ private static _nextRequestId = 1;
38
+ private static _legacyRequestIds = new Map<string, number>();
39
+ private static _legacyRequestIdSet = new Set<number>();
40
+
41
+ private readonly eventEmitter = new AdEventEmitter();
42
+
43
+ private constructor(
44
+ private readonly requestId: number,
45
+ private readonly adUnitId: string
46
+ ) {}
47
+
48
+ static createForAdRequest(adUnitId: string): InterstitialAd {
49
+ const requestId = InterstitialAd._nextRequestId++;
50
+ return new InterstitialAd(requestId, adUnitId);
51
+ }
52
+
53
+ isAdReady(): Promise<boolean> {
54
+ return DaroMModule.isInterstitialReady(this.requestId, this.adUnitId);
55
+ }
56
+
57
+ load(): void {
58
+ DaroMModule.loadInterstitial(this.requestId, this.adUnitId);
59
+ }
60
+
61
+ show(): void {
62
+ DaroMModule.showInterstitial(this.requestId, this.adUnitId);
63
+ }
64
+
65
+ addAdEventListener<T extends AdEventType>(
66
+ type: T,
67
+ listener: (info: AdEventPayloadMap[T]) => void
68
+ ): () => void {
69
+ const nativeEvent = NATIVE_EVENT_BY_TYPE[type];
70
+ const requestId = this.requestId;
71
+ return this.eventEmitter.addEventListener(nativeEvent, (payload: any) => {
72
+ if (payload?.requestId !== requestId) {
73
+ return;
74
+ }
75
+ listener(payload);
76
+ });
77
+ }
78
+
79
+ removeAllListeners(): void {
80
+ this.eventEmitter.removeAllListeners();
81
+ }
82
+
83
+ // ---- Deprecated static API (backward compatibility) ----
84
+ // Static API allocates a stable requestId per adUnitId and reuses it.
85
+ // Multiple static calls for the same adUnitId share the same native slot.
86
+
87
+ private static _getLegacyRequestId(adUnitId: string): number {
88
+ let requestId = InterstitialAd._legacyRequestIds.get(adUnitId);
89
+ if (requestId === undefined) {
90
+ requestId = InterstitialAd._nextRequestId++;
91
+ InterstitialAd._legacyRequestIds.set(adUnitId, requestId);
92
+ InterstitialAd._legacyRequestIdSet.add(requestId);
93
+ }
94
+ return requestId;
95
+ }
96
+
97
+ private static _addLegacyEventListener<T>(
98
+ event: string,
99
+ listener: (info: T) => void
100
+ ): void {
101
+ addEventListener(event, (payload: any) => {
102
+ if (!InterstitialAd._legacyRequestIdSet.has(payload?.requestId)) {
103
+ return;
104
+ }
105
+ listener(payload);
106
+ });
107
+ }
108
+
109
+ /** @deprecated `InterstitialAd.createForAdRequest(adUnitId)` 인스턴스의 `isAdReady()`를 사용하세요. */
110
+ static isAdReady(adUnitId: string): Promise<boolean> {
111
+ const requestId = InterstitialAd._getLegacyRequestId(adUnitId);
112
+ return DaroMModule.isInterstitialReady(requestId, adUnitId);
113
+ }
114
+
115
+ /** @deprecated `InterstitialAd.createForAdRequest(adUnitId)` 인스턴스의 `load()`를 사용하세요. */
116
+ static loadAd(adUnitId: string): void {
117
+ const requestId = InterstitialAd._getLegacyRequestId(adUnitId);
118
+ DaroMModule.loadInterstitial(requestId, adUnitId);
119
+ }
120
+
121
+ /** @deprecated `InterstitialAd.createForAdRequest(adUnitId)` 인스턴스의 `show()`를 사용하세요. */
122
+ static showAd(adUnitId: string): void {
123
+ const requestId = InterstitialAd._getLegacyRequestId(adUnitId);
124
+ DaroMModule.showInterstitial(requestId, adUnitId);
125
+ }
126
+
127
+ /** @deprecated `addAdEventListener(AdEventType.LOADED, ...)`를 인스턴스에서 사용하세요. */
128
+ static addAdLoadedEventListener(listener: (adInfo: AdInfo) => void): void {
129
+ InterstitialAd._addLegacyEventListener(
130
+ ON_INTERSTITIAL_LOADED_EVENT,
131
+ listener
132
+ );
133
+ }
134
+
135
+ /** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
136
+ static removeAdLoadedEventListener(): void {
137
+ removeEventListener(ON_INTERSTITIAL_LOADED_EVENT);
138
+ }
139
+
140
+ /** @deprecated `addAdEventListener(AdEventType.LOAD_FAILED, ...)`를 인스턴스에서 사용하세요. */
141
+ static addAdLoadFailedEventListener(
142
+ listener: (errorInfo: AdLoadFailedInfo) => void
143
+ ): void {
144
+ InterstitialAd._addLegacyEventListener(
145
+ ON_INTERSTITIAL_LOAD_FAILED_EVENT,
146
+ listener
147
+ );
148
+ }
149
+
150
+ /** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
151
+ static removeAdLoadFailedEventListener(): void {
152
+ removeEventListener(ON_INTERSTITIAL_LOAD_FAILED_EVENT);
153
+ }
154
+
155
+ /** @deprecated `addAdEventListener(AdEventType.CLICKED, ...)`를 인스턴스에서 사용하세요. */
156
+ static addAdClickedEventListener(listener: (adInfo: AdInfo) => void): void {
157
+ InterstitialAd._addLegacyEventListener(
158
+ ON_INTERSTITIAL_CLICKED_EVENT,
159
+ listener
160
+ );
161
+ }
162
+
163
+ /** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
164
+ static removeAdClickedEventListener(): void {
165
+ removeEventListener(ON_INTERSTITIAL_CLICKED_EVENT);
166
+ }
167
+
168
+ /** @deprecated `addAdEventListener(AdEventType.DISPLAYED, ...)`를 인스턴스에서 사용하세요. */
169
+ static addAdDisplayedEventListener(listener: (adInfo: AdInfo) => void): void {
170
+ InterstitialAd._addLegacyEventListener(
171
+ ON_INTERSTITIAL_DISPLAYED_EVENT,
172
+ listener
173
+ );
174
+ }
175
+
176
+ /** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
177
+ static removeAdDisplayedEventListener(): void {
178
+ removeEventListener(ON_INTERSTITIAL_DISPLAYED_EVENT);
179
+ }
180
+
181
+ /** @deprecated `addAdEventListener(AdEventType.FAILED_TO_DISPLAY, ...)`를 인스턴스에서 사용하세요. */
182
+ static addAdFailedToDisplayEventListener(
183
+ listener: (errorInfo: AdDisplayFailedInfo) => void
184
+ ): void {
185
+ InterstitialAd._addLegacyEventListener(
186
+ ON_INTERSTITIAL_AD_FAILED_TO_DISPLAY_EVENT,
187
+ listener
188
+ );
189
+ }
190
+
191
+ /** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
192
+ static removeAdFailedToDisplayEventListener(): void {
193
+ removeEventListener(ON_INTERSTITIAL_AD_FAILED_TO_DISPLAY_EVENT);
194
+ }
195
+
196
+ /** @deprecated `addAdEventListener(AdEventType.HIDDEN, ...)`를 인스턴스에서 사용하세요. */
197
+ static addAdHiddenEventListener(listener: (adInfo: AdInfo) => void): void {
198
+ InterstitialAd._addLegacyEventListener(
199
+ ON_INTERSTITIAL_HIDDEN_EVENT,
200
+ listener
201
+ );
202
+ }
203
+
204
+ /** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
205
+ static removeAdHiddenEventListener(): void {
206
+ removeEventListener(ON_INTERSTITIAL_HIDDEN_EVENT);
207
+ }
208
+
209
+ /** @deprecated `addAdEventListener(AdEventType.IMPRESSION_RECORDED, ...)`를 인스턴스에서 사용하세요. */
210
+ static addAdImpressionRecordedListener(
211
+ listener: (adInfo: AdInfo) => void
212
+ ): void {
213
+ InterstitialAd._addLegacyEventListener(
214
+ ON_INTERSTITIAL_AD_IMPRESSION_RECORDED,
215
+ listener
216
+ );
217
+ }
218
+
219
+ /** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
220
+ static removeAdImpressionRecordedListener(): void {
221
+ removeEventListener(ON_INTERSTITIAL_AD_IMPRESSION_RECORDED);
222
+ }
111
223
  }
112
224
 
113
225
  export default InterstitialAd;