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