react-native-daro 1.0.13 → 1.0.16

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 (262) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +30 -30
  3. package/android/build.gradle +52 -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 +38 -15
  7. package/android/src/main/java/com/daro/reactnative/DaroMAdNativeViewManager.kt +167 -0
  8. package/android/src/main/java/com/daro/reactnative/DaroMModule.kt +257 -0
  9. package/android/src/main/java/com/daro/reactnative/DaroMPackage.kt +45 -0
  10. package/android/src/main/java/com/daro/reactnative/DaroMediaViewManager.kt +25 -0
  11. package/android/src/main/java/com/{darom → daro/reactnative}/constants/InternalDaroMBannerSize.kt +1 -1
  12. package/android/src/main/java/com/{darom → daro/reactnative}/event/DaroMEvent.kt +19 -8
  13. package/android/src/main/java/com/{darom → daro/reactnative}/impl/DaroMBannerViewModuleImpl.kt +2 -2
  14. package/android/src/main/java/com/{darom → daro/reactnative}/impl/DaroMInterstitialModuleImpl.kt +26 -26
  15. package/android/src/main/java/com/{darom → daro/reactnative}/impl/DaroMLightPopupModuleImpl.kt +30 -29
  16. package/android/src/main/java/com/{darom → daro/reactnative}/impl/DaroMRewardedAdModuleImpl.kt +27 -27
  17. package/android/src/main/java/com/{darom → daro/reactnative}/util/AdInfoUtil.kt +25 -1
  18. package/android/src/main/java/com/daro/reactnative/util/EventEmitterUtil.kt +37 -0
  19. package/android/src/main/java/com/daro/reactnative/view/DaroMAdBannerViewContainer.kt +417 -0
  20. package/android/src/main/java/com/daro/reactnative/view/DaroMAdNativeViewContainer.kt +624 -0
  21. package/android/src/main/java/com/daro/reactnative/view/DaroMediaView.kt +123 -0
  22. package/android/src/newarch/java/com/daro/reactnative/DaroMModuleSpec.kt +6 -0
  23. package/android/src/oldarch/java/com/daro/reactnative/DaroMModuleSpec.kt +90 -0
  24. package/app.plugin.js +1 -0
  25. package/ios/DaroMModule+AppOpen.swift +38 -32
  26. package/ios/DaroMModule+Interstitial.swift +32 -26
  27. package/ios/DaroMModule+LightPopup.swift +43 -33
  28. package/ios/DaroMModule+Rewarded.swift +38 -27
  29. package/ios/DaroMModule.mm +45 -17
  30. package/ios/DaroMModule.swift +24 -17
  31. package/ios/Fabric/DaroMAdBannerComponentView.mm +207 -0
  32. package/ios/Fabric/DaroMFabricEventSink.mm +31 -0
  33. package/ios/Fabric/DaroMFabricPropApplier.mm +123 -0
  34. package/ios/Fabric/DaroMNativeAdComponentView.mm +294 -0
  35. package/ios/{DaroMAdBannerViewManager.m → Paper/DaroMAdBannerViewManager.m} +3 -1
  36. package/ios/Paper/DaroMAdBannerViewManager.swift +21 -0
  37. package/ios/{DaroMNativeAdViewManager.m → Paper/DaroMNativeAdViewManager.m} +2 -1
  38. package/ios/Paper/DaroMNativeAdViewManager.swift +22 -0
  39. package/ios/Shared/DaroMAdEventSink.swift +24 -0
  40. package/ios/Shared/DaroMBannerAdView.swift +188 -0
  41. package/ios/Shared/DaroMNativeAdLoadCoordinator.swift +49 -0
  42. package/ios/Shared/DaroMNativeAdView.swift +575 -0
  43. package/ios/Shared/DaroMNativeAssetResolver.swift +53 -0
  44. package/ios/mediation/admob/DaroMediationDebugger.swift +11 -0
  45. package/ios/mediation/admob/DaroMediationTypes.swift +23 -0
  46. package/lib/commonjs/AdBannerView.js +21 -35
  47. package/lib/commonjs/AdBannerView.js.map +1 -1
  48. package/lib/commonjs/AppOpenAd.js +80 -21
  49. package/lib/commonjs/AppOpenAd.js.map +1 -1
  50. package/lib/commonjs/DaroMAdBannerViewNativeComponent.ts +47 -0
  51. package/lib/commonjs/DaroMNativeAdViewNativeComponent.ts +62 -0
  52. package/lib/commonjs/DaroMediaViewNativeComponent.ts +9 -0
  53. package/lib/commonjs/ErrorCode.js.map +1 -1
  54. package/lib/commonjs/EventEmitter.js +4 -5
  55. package/lib/commonjs/EventEmitter.js.map +1 -1
  56. package/lib/commonjs/InterstitialAd.js +48 -22
  57. package/lib/commonjs/InterstitialAd.js.map +1 -1
  58. package/lib/commonjs/LightPopupAd.js +64 -46
  59. package/lib/commonjs/LightPopupAd.js.map +1 -1
  60. package/lib/commonjs/NativeDaroModule.js +9 -0
  61. package/lib/commonjs/NativeDaroModule.js.map +1 -0
  62. package/lib/commonjs/RewardedAd.js +47 -23
  63. package/lib/commonjs/RewardedAd.js.map +1 -1
  64. package/lib/commonjs/codegen-env.d.js +2 -0
  65. package/lib/commonjs/codegen-env.d.js.map +1 -0
  66. package/lib/commonjs/hooks/useInterstitialAd.js +110 -0
  67. package/lib/commonjs/hooks/useInterstitialAd.js.map +1 -0
  68. package/lib/commonjs/hooks/useLightPopupAd.js +114 -0
  69. package/lib/commonjs/hooks/useLightPopupAd.js.map +1 -0
  70. package/lib/commonjs/hooks/useRewardedAd.js +113 -0
  71. package/lib/commonjs/hooks/useRewardedAd.js.map +1 -0
  72. package/lib/commonjs/index.js +29 -13
  73. package/lib/commonjs/index.js.map +1 -1
  74. package/lib/commonjs/nativeAd/NativeAdView.js +23 -18
  75. package/lib/commonjs/nativeAd/NativeAdView.js.map +1 -1
  76. package/lib/commonjs/nativeAd/NativeAdViewComponents.js +43 -31
  77. package/lib/commonjs/nativeAd/NativeAdViewComponents.js.map +1 -1
  78. package/lib/commonjs/nativeAd/NativeAdViewProvider.js +34 -7
  79. package/lib/commonjs/nativeAd/NativeAdViewProvider.js.map +1 -1
  80. package/lib/commonjs/package.json +1 -0
  81. package/lib/module/AdBannerView.js +20 -36
  82. package/lib/module/AdBannerView.js.map +1 -1
  83. package/lib/module/AppOpenAd.js +80 -22
  84. package/lib/module/AppOpenAd.js.map +1 -1
  85. package/lib/module/DaroMAdBannerViewNativeComponent.ts +47 -0
  86. package/lib/module/DaroMNativeAdViewNativeComponent.ts +62 -0
  87. package/lib/module/DaroMediaViewNativeComponent.ts +9 -0
  88. package/lib/module/ErrorCode.js.map +1 -1
  89. package/lib/module/EventEmitter.js +4 -6
  90. package/lib/module/EventEmitter.js.map +1 -1
  91. package/lib/module/InterstitialAd.js +47 -22
  92. package/lib/module/InterstitialAd.js.map +1 -1
  93. package/lib/module/LightPopupAd.js +65 -47
  94. package/lib/module/LightPopupAd.js.map +1 -1
  95. package/lib/module/NativeDaroModule.js +5 -0
  96. package/lib/module/NativeDaroModule.js.map +1 -0
  97. package/lib/module/RewardedAd.js +46 -23
  98. package/lib/module/RewardedAd.js.map +1 -1
  99. package/lib/module/codegen-env.d.js +2 -0
  100. package/lib/module/codegen-env.d.js.map +1 -0
  101. package/lib/module/hooks/useInterstitialAd.js +106 -0
  102. package/lib/module/hooks/useInterstitialAd.js.map +1 -0
  103. package/lib/module/hooks/useLightPopupAd.js +110 -0
  104. package/lib/module/hooks/useLightPopupAd.js.map +1 -0
  105. package/lib/module/hooks/useRewardedAd.js +109 -0
  106. package/lib/module/hooks/useRewardedAd.js.map +1 -0
  107. package/lib/module/index.js +7 -13
  108. package/lib/module/index.js.map +1 -1
  109. package/lib/module/nativeAd/NativeAdView.js +22 -19
  110. package/lib/module/nativeAd/NativeAdView.js.map +1 -1
  111. package/lib/module/nativeAd/NativeAdViewComponents.js +45 -34
  112. package/lib/module/nativeAd/NativeAdViewComponents.js.map +1 -1
  113. package/lib/module/nativeAd/NativeAdViewProvider.js +35 -8
  114. package/lib/module/nativeAd/NativeAdViewProvider.js.map +1 -1
  115. package/lib/module/package.json +1 -0
  116. package/lib/typescript/commonjs/plugin/src/index.d.ts +19 -0
  117. package/lib/typescript/commonjs/plugin/src/index.d.ts.map +1 -0
  118. package/lib/typescript/commonjs/plugin/src/skAdNetworkIds.d.ts +6 -0
  119. package/lib/typescript/commonjs/plugin/src/skAdNetworkIds.d.ts.map +1 -0
  120. package/lib/typescript/commonjs/plugin/src/withAndroid.d.ts +8 -0
  121. package/lib/typescript/commonjs/plugin/src/withAndroid.d.ts.map +1 -0
  122. package/lib/typescript/commonjs/plugin/src/withIos.d.ts +8 -0
  123. package/lib/typescript/commonjs/plugin/src/withIos.d.ts.map +1 -0
  124. package/lib/typescript/commonjs/src/AdBannerView.d.ts +126 -4
  125. package/lib/typescript/commonjs/src/AdBannerView.d.ts.map +1 -1
  126. package/lib/typescript/commonjs/src/AppOpenAd.d.ts +6 -0
  127. package/lib/typescript/commonjs/src/AppOpenAd.d.ts.map +1 -1
  128. package/lib/typescript/commonjs/src/DaroMAdBannerViewNativeComponent.d.ts +32 -0
  129. package/lib/typescript/commonjs/src/DaroMAdBannerViewNativeComponent.d.ts.map +1 -0
  130. package/lib/typescript/commonjs/src/DaroMNativeAdViewNativeComponent.d.ts +42 -0
  131. package/lib/typescript/commonjs/src/DaroMNativeAdViewNativeComponent.d.ts.map +1 -0
  132. package/lib/typescript/commonjs/src/DaroMediaViewNativeComponent.d.ts +6 -0
  133. package/lib/typescript/commonjs/src/DaroMediaViewNativeComponent.d.ts.map +1 -0
  134. package/lib/typescript/commonjs/src/ErrorCode.d.ts.map +1 -1
  135. package/lib/typescript/commonjs/src/EventEmitter.d.ts.map +1 -1
  136. package/lib/typescript/commonjs/src/InterstitialAd.d.ts +6 -0
  137. package/lib/typescript/commonjs/src/InterstitialAd.d.ts.map +1 -1
  138. package/lib/typescript/commonjs/src/LightPopupAd.d.ts +6 -0
  139. package/lib/typescript/commonjs/src/LightPopupAd.d.ts.map +1 -1
  140. package/lib/typescript/commonjs/src/NativeDaroModule.d.ts +61 -0
  141. package/lib/typescript/commonjs/src/NativeDaroModule.d.ts.map +1 -0
  142. package/lib/typescript/commonjs/src/RewardedAd.d.ts +6 -0
  143. package/lib/typescript/commonjs/src/RewardedAd.d.ts.map +1 -1
  144. package/lib/typescript/commonjs/src/hooks/useInterstitialAd.d.ts +19 -0
  145. package/lib/typescript/commonjs/src/hooks/useInterstitialAd.d.ts.map +1 -0
  146. package/lib/typescript/commonjs/src/hooks/useLightPopupAd.d.ts +23 -0
  147. package/lib/typescript/commonjs/src/hooks/useLightPopupAd.d.ts.map +1 -0
  148. package/lib/typescript/commonjs/src/hooks/useRewardedAd.d.ts +20 -0
  149. package/lib/typescript/commonjs/src/hooks/useRewardedAd.d.ts.map +1 -0
  150. package/lib/typescript/commonjs/src/index.d.ts +7 -1
  151. package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
  152. package/lib/typescript/commonjs/src/nativeAd/NativeAdView.d.ts +125 -2
  153. package/lib/typescript/commonjs/src/nativeAd/NativeAdView.d.ts.map +1 -1
  154. package/lib/typescript/commonjs/src/nativeAd/NativeAdViewComponents.d.ts.map +1 -1
  155. package/lib/typescript/commonjs/src/nativeAd/NativeAdViewProvider.d.ts +11 -5
  156. package/lib/typescript/commonjs/src/nativeAd/NativeAdViewProvider.d.ts.map +1 -1
  157. package/lib/typescript/commonjs/src/types/AdBannerViewProps.d.ts +2 -2
  158. package/lib/typescript/commonjs/src/types/AdBannerViewProps.d.ts.map +1 -1
  159. package/lib/typescript/commonjs/src/types/AdInfo.d.ts.map +1 -1
  160. package/lib/typescript/commonjs/src/types/AdProps.d.ts +2 -2
  161. package/lib/typescript/commonjs/src/types/AdProps.d.ts.map +1 -1
  162. package/lib/typescript/commonjs/src/types/DaroMMobileAds.d.ts.map +1 -1
  163. package/lib/typescript/commonjs/src/types/NativeAdViewProps.d.ts +2 -0
  164. package/lib/typescript/commonjs/src/types/NativeAdViewProps.d.ts.map +1 -1
  165. package/lib/typescript/module/plugin/src/index.d.ts +19 -0
  166. package/lib/typescript/module/plugin/src/index.d.ts.map +1 -0
  167. package/lib/typescript/module/plugin/src/skAdNetworkIds.d.ts +6 -0
  168. package/lib/typescript/module/plugin/src/skAdNetworkIds.d.ts.map +1 -0
  169. package/lib/typescript/module/plugin/src/withAndroid.d.ts +8 -0
  170. package/lib/typescript/module/plugin/src/withAndroid.d.ts.map +1 -0
  171. package/lib/typescript/module/plugin/src/withIos.d.ts +8 -0
  172. package/lib/typescript/module/plugin/src/withIos.d.ts.map +1 -0
  173. package/lib/typescript/module/src/AdBannerView.d.ts +126 -4
  174. package/lib/typescript/module/src/AdBannerView.d.ts.map +1 -1
  175. package/lib/typescript/module/src/AppOpenAd.d.ts +6 -0
  176. package/lib/typescript/module/src/AppOpenAd.d.ts.map +1 -1
  177. package/lib/typescript/module/src/DaroMAdBannerViewNativeComponent.d.ts +32 -0
  178. package/lib/typescript/module/src/DaroMAdBannerViewNativeComponent.d.ts.map +1 -0
  179. package/lib/typescript/module/src/DaroMNativeAdViewNativeComponent.d.ts +42 -0
  180. package/lib/typescript/module/src/DaroMNativeAdViewNativeComponent.d.ts.map +1 -0
  181. package/lib/typescript/module/src/DaroMediaViewNativeComponent.d.ts +6 -0
  182. package/lib/typescript/module/src/DaroMediaViewNativeComponent.d.ts.map +1 -0
  183. package/lib/typescript/module/src/ErrorCode.d.ts.map +1 -1
  184. package/lib/typescript/module/src/EventEmitter.d.ts.map +1 -1
  185. package/lib/typescript/module/src/InterstitialAd.d.ts +6 -0
  186. package/lib/typescript/module/src/InterstitialAd.d.ts.map +1 -1
  187. package/lib/typescript/module/src/LightPopupAd.d.ts +6 -0
  188. package/lib/typescript/module/src/LightPopupAd.d.ts.map +1 -1
  189. package/lib/typescript/module/src/NativeDaroModule.d.ts +61 -0
  190. package/lib/typescript/module/src/NativeDaroModule.d.ts.map +1 -0
  191. package/lib/typescript/module/src/RewardedAd.d.ts +6 -0
  192. package/lib/typescript/module/src/RewardedAd.d.ts.map +1 -1
  193. package/lib/typescript/module/src/hooks/useInterstitialAd.d.ts +19 -0
  194. package/lib/typescript/module/src/hooks/useInterstitialAd.d.ts.map +1 -0
  195. package/lib/typescript/module/src/hooks/useLightPopupAd.d.ts +23 -0
  196. package/lib/typescript/module/src/hooks/useLightPopupAd.d.ts.map +1 -0
  197. package/lib/typescript/module/src/hooks/useRewardedAd.d.ts +20 -0
  198. package/lib/typescript/module/src/hooks/useRewardedAd.d.ts.map +1 -0
  199. package/lib/typescript/module/src/index.d.ts +7 -1
  200. package/lib/typescript/module/src/index.d.ts.map +1 -1
  201. package/lib/typescript/module/src/nativeAd/NativeAdView.d.ts +125 -2
  202. package/lib/typescript/module/src/nativeAd/NativeAdView.d.ts.map +1 -1
  203. package/lib/typescript/module/src/nativeAd/NativeAdViewComponents.d.ts.map +1 -1
  204. package/lib/typescript/module/src/nativeAd/NativeAdViewProvider.d.ts +11 -5
  205. package/lib/typescript/module/src/nativeAd/NativeAdViewProvider.d.ts.map +1 -1
  206. package/lib/typescript/module/src/types/AdBannerViewProps.d.ts +2 -2
  207. package/lib/typescript/module/src/types/AdBannerViewProps.d.ts.map +1 -1
  208. package/lib/typescript/module/src/types/AdInfo.d.ts.map +1 -1
  209. package/lib/typescript/module/src/types/AdProps.d.ts +2 -2
  210. package/lib/typescript/module/src/types/AdProps.d.ts.map +1 -1
  211. package/lib/typescript/module/src/types/DaroMMobileAds.d.ts.map +1 -1
  212. package/lib/typescript/module/src/types/NativeAdViewProps.d.ts +2 -0
  213. package/lib/typescript/module/src/types/NativeAdViewProps.d.ts.map +1 -1
  214. package/package.json +95 -105
  215. package/plugin/build/index.d.ts +18 -0
  216. package/plugin/build/index.js +71 -0
  217. package/plugin/build/skAdNetworkIds.d.ts +5 -0
  218. package/plugin/build/skAdNetworkIds.js +205 -0
  219. package/plugin/build/withAndroid.d.ts +7 -0
  220. package/plugin/build/withAndroid.js +222 -0
  221. package/plugin/build/withIos.d.ts +7 -0
  222. package/plugin/build/withIos.js +82 -0
  223. package/react-native-daro.podspec +28 -0
  224. package/src/AdBannerView.tsx +48 -48
  225. package/src/AppOpenAd.ts +101 -20
  226. package/src/DaroMAdBannerViewNativeComponent.ts +47 -0
  227. package/src/DaroMNativeAdViewNativeComponent.ts +62 -0
  228. package/src/DaroMediaViewNativeComponent.ts +9 -0
  229. package/src/ErrorCode.ts +1 -2
  230. package/src/EventEmitter.ts +9 -7
  231. package/src/InterstitialAd.ts +75 -21
  232. package/src/LightPopupAd.ts +90 -51
  233. package/src/NativeDaroModule.ts +91 -0
  234. package/src/RewardedAd.ts +72 -22
  235. package/src/codegen-env.d.ts +45 -0
  236. package/src/hooks/useInterstitialAd.ts +117 -0
  237. package/src/hooks/useLightPopupAd.ts +132 -0
  238. package/src/hooks/useRewardedAd.ts +122 -0
  239. package/src/index.tsx +21 -22
  240. package/src/nativeAd/NativeAdView.tsx +83 -45
  241. package/src/nativeAd/NativeAdViewComponents.tsx +129 -64
  242. package/src/nativeAd/NativeAdViewProvider.tsx +84 -16
  243. package/src/types/AdBannerViewProps.ts +11 -11
  244. package/src/types/AdInfo.ts +17 -17
  245. package/src/types/AdProps.ts +8 -9
  246. package/src/types/DaroMMobileAds.ts +3 -6
  247. package/src/types/NativeAdViewProps.ts +12 -5
  248. package/src/types/index.ts +1 -1
  249. package/android/gradle.properties +0 -5
  250. package/android/src/main/AndroidManifestNew.xml +0 -7
  251. package/android/src/main/java/com/darom/DaroMAdNativeViewManager.kt +0 -136
  252. package/android/src/main/java/com/darom/DaroMModule.kt +0 -203
  253. package/android/src/main/java/com/darom/DaroMPackage.kt +0 -21
  254. package/android/src/main/java/com/darom/util/EventEmitterUtil.kt +0 -24
  255. package/android/src/main/java/com/darom/view/DaroMAdBannerViewContainer.kt +0 -163
  256. package/android/src/main/java/com/darom/view/DaroMAdNativeViewContainer.kt +0 -375
  257. package/android/src/main/res/layout/layout_activity_transparent.xml +0 -7
  258. package/android/src/main/res/values/styles.xml +0 -11
  259. package/ios/DaroM-Bridging-Header.h +0 -6
  260. package/ios/DaroMAdBannerViewManager.swift +0 -91
  261. package/ios/DaroMNativeAdViewManager.swift +0 -291
  262. package/react-native-daro-m.podspec +0 -44
@@ -1,41 +1,46 @@
1
- import Daro
2
-
1
+ import React
3
2
 
4
3
  extension DaroMModule {
5
- @objc(isRewardedAdReady:::)
4
+ @objc(isRewardedAdReady:adUnitId:resolve:reject:)
6
5
  func isRewardedAdReady(
7
- _ adUnitId: String,
6
+ requestId: Double,
7
+ adUnitId: String,
8
8
  resolve: RCTPromiseResolveBlock,
9
9
  reject: RCTPromiseRejectBlock
10
10
  ) {
11
+ let requestId = Int(requestId)
11
12
  if !Self.sdkInitialized {
12
13
  DaroMModule.logger.debug("[DaroMMobileAds] !isInitialized")
13
14
  resolve(false)
14
15
  return
15
16
  }
16
17
 
17
- resolve(rewardedAds[adUnitId]?.loadedAd != nil)
18
+ resolve(rewardedAds[requestId]?.loadedAd != nil)
18
19
  }
19
20
 
20
- @objc(loadRewardedAd:::)
21
+ @objc(loadRewardedAd:adUnitId:resolve:reject:)
21
22
  func loadRewardedAd(
22
- _ adUnitId: String,
23
+ requestId: Double,
24
+ adUnitId: String,
23
25
  resolve: RCTPromiseResolveBlock,
24
26
  reject: RCTPromiseRejectBlock
25
27
  ) {
26
- let rewardedLoader = retrieveRewardedLoader(for: adUnitId)
28
+ let requestId = Int(requestId)
29
+ let rewardedLoader = retrieveRewardedLoader(requestId: requestId, adUnitId: adUnitId)
27
30
  rewardedLoader.loadAd()
28
31
  resolve(Void())
29
32
  }
30
33
 
31
- @objc(showRewardedAd::::)
34
+ @objc(showRewardedAd:adUnitId:customData:resolve:reject:)
32
35
  func showRewardedAd(
33
- _ adUnitId: String,
36
+ requestId: Double,
37
+ adUnitId: String,
34
38
  customData: String?,
35
39
  resolve: @escaping RCTPromiseResolveBlock,
36
40
  reject: @escaping RCTPromiseRejectBlock
37
41
  ) {
38
- guard let loadedAd = rewardedAds[adUnitId]?.loadedAd else {
42
+ let requestId = Int(requestId)
43
+ guard let loadedAd = rewardedAds[requestId]?.loadedAd else {
39
44
  reject("REWARDED_AD_NOT_LOADED", "Rewarded ad not loaded", nil)
40
45
  return
41
46
  }
@@ -52,57 +57,57 @@ extension DaroMModule {
52
57
  }
53
58
  }
54
59
 
55
- func retrieveRewardedLoader(for unitId: String) -> DaroRewardedAdLoader {
56
- if let rewardedAd = rewardedAds[unitId] {
60
+ func retrieveRewardedLoader(requestId: Int, adUnitId: String) -> DaroRewardedAdLoader {
61
+ if let rewardedAd = rewardedAds[requestId] {
57
62
  return rewardedAd.loader
58
63
  } else {
59
- let rewardedAdLoader = DaroRewardedAdLoader(unit: DaroAdUnit(unitId: unitId))
64
+ let rewardedAdLoader = DaroRewardedAdLoader(unit: DaroAdUnit(unitId: adUnitId))
60
65
  rewardedAdLoader.listener.onAdClicked = { [weak self] adInfo in
61
66
  DaroMModule.logger.debug("[DARO] Sample Rewarded Ad clicked")
62
- self?.sendEvent(with: .onRewardedAdClickedEvent, body: adInfo?.toBody)
67
+ self?.sendEvent(with: .onRewardedAdClickedEvent, body: adInfo?.toBody(requestId: requestId))
63
68
  }
64
69
 
65
70
  rewardedAdLoader.listener.onAdImpression = { [weak self] adInfo in
66
71
  DaroMModule.logger.debug("[DARO] Sample Rewarded Ad impression")
67
- self?.rewardedAds[unitId]?.loadedAd = nil
68
- self?.sendEvent(with: .onRewardedAdImpressionRecordedEvent, body: adInfo?.toBody)
72
+ self?.rewardedAds[requestId]?.loadedAd = nil
73
+ self?.sendEvent(with: .onRewardedAdImpressionRecordedEvent, body: adInfo?.toBody(requestId: requestId))
69
74
  }
70
75
 
71
76
  rewardedAdLoader.listener.onAdLoadSuccess = { [weak self] ad, adInfo in
72
77
  DaroMModule.logger.debug("[DARO] Sample Rewarded Ad loaded")
73
- self?.rewardedAds[unitId]?.loadedAd = ad
74
- self?.sendEvent(with: .onRewardedAdLoadedEvent, body: adInfo?.toBody)
75
- self?.setupRewardedListener(for: ad)
78
+ self?.rewardedAds[requestId]?.loadedAd = ad
79
+ self?.sendEvent(with: .onRewardedAdLoadedEvent, body: adInfo?.toBody(requestId: requestId))
80
+ self?.setupRewardedListener(for: ad, requestId: requestId)
76
81
  }
77
82
 
78
83
  rewardedAdLoader.listener.onAdLoadFail = { [weak self] error in
79
84
  DaroMModule.logger.debug("[DARO] Sample Rewarded Ad failed to load: \(error)")
80
- self?.sendEvent(with: .onRewardedAdLoadFailedEvent, body: error.toBody)
85
+ self?.sendEvent(with: .onRewardedAdLoadFailedEvent, body: error.toBody(requestId: requestId))
81
86
  }
82
- self.rewardedAds[unitId] = RewardedAd(loader: rewardedAdLoader)
87
+ self.rewardedAds[requestId] = RewardedAd(loader: rewardedAdLoader)
83
88
  return rewardedAdLoader
84
89
  }
85
90
  }
86
91
 
87
- private func setupRewardedListener(for ad: DaroRewardedAd) {
92
+ private func setupRewardedListener(for ad: DaroRewardedAd, requestId: Int) {
88
93
  ad.rewardedAdListener.onShown = { [weak self] adInfo in
89
94
  DaroMModule.logger.debug("[DARO] Sample Rewarded Ad displayed")
90
- self?.sendEvent(with: .onRewardedAdDisplayedEvent, body: adInfo?.toBody)
95
+ self?.sendEvent(with: .onRewardedAdDisplayedEvent, body: adInfo?.toBody(requestId: requestId))
91
96
  }
92
97
 
93
98
  ad.rewardedAdListener.onDismiss = { [weak self] adInfo in
94
99
  DaroMModule.logger.debug("[DARO] Sample Rewarded Ad hidden")
95
- self?.sendEvent(with: .onRewardedAdHiddenEvent, body: adInfo?.toBody)
100
+ self?.sendEvent(with: .onRewardedAdHiddenEvent, body: adInfo?.toBody(requestId: requestId))
96
101
  }
97
102
 
98
103
  ad.rewardedAdListener.onFailedToShow = { [weak self] adInfo, error in
99
104
  DaroMModule.logger.debug("[DARO] Sample Rewarded Ad failed to display: \(error)")
100
- self?.sendEvent(with: .onRewardedAdFailedToDisplayEvent, body: adInfo?.toBody)
105
+ self?.sendEvent(with: .onRewardedAdFailedToDisplayEvent, body: adInfo?.toBody(requestId: requestId))
101
106
  }
102
107
 
103
108
  ad.rewardedAdListener.onEarnedReward = { [weak self] adInfo, rewardItem in
104
109
  DaroMModule.logger.debug("[DARO] Sample Rewarded Ad received reward")
105
- self?.sendEvent(with: .onRewardedAdReceivedRewardEvent, body: rewardItem?.toBody(unitId: adInfo?.adUnitId ?? ""))
110
+ self?.sendEvent(with: .onRewardedAdReceivedRewardEvent, body: rewardItem?.toBody(requestId: requestId, unitId: adInfo?.adUnitId ?? ""))
106
111
  }
107
112
  }
108
113
  }
@@ -115,4 +120,10 @@ private extension DaroRewardedItem {
115
120
  "rewardAmount": self.amount,
116
121
  ]
117
122
  }
123
+
124
+ func toBody(requestId: Int, unitId: String) -> [String: Any] {
125
+ var body = self.toBody(unitId: unitId)
126
+ body["requestId"] = requestId
127
+ return body
128
+ }
118
129
  }
@@ -1,45 +1,73 @@
1
1
  #import <React/RCTBridgeModule.h>
2
2
  #import <React/RCTEventEmitter.h>
3
3
 
4
+ #ifdef RCT_NEW_ARCH_ENABLED
5
+ #import <DaroReactNativeSpec/DaroReactNativeSpec.h>
6
+ #endif
7
+
4
8
  @interface RCT_EXTERN_MODULE (DaroMModule, RCTEventEmitter)
5
9
 
6
10
  #pragma mark - Initialization
7
11
 
8
- RCT_EXTERN_METHOD(isInitialized : (RCTPromiseResolveBlock)resolve : (RCTPromiseRejectBlock)reject)
9
- RCT_EXTERN_METHOD(initializeSdk : (RCTPromiseResolveBlock)resolve : (RCTPromiseRejectBlock)reject)
10
- RCT_EXTERN_METHOD(setUserId : (NSString *)userId : (RCTPromiseResolveBlock)resolve : (RCTPromiseRejectBlock)reject)
12
+ RCT_EXTERN_METHOD(isInitialized:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
13
+ RCT_EXTERN_METHOD(initializeSdk:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
14
+ RCT_EXTERN_METHOD(setUserId:(NSString *)userId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
11
15
 
12
16
  #pragma mark - Mediation Debugger
13
17
 
14
- RCT_EXTERN_METHOD(showMediationDebugger : (RCTPromiseResolveBlock)resolve : (RCTPromiseRejectBlock)reject)
18
+ RCT_EXTERN_METHOD(showMediationDebugger:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
15
19
 
16
20
  #pragma mark - Interstitial
17
21
 
18
- RCT_EXTERN_METHOD(isInterstitialReady : (NSString *)adUnitId : (RCTPromiseResolveBlock)resolve : (RCTPromiseRejectBlock)reject)
19
- RCT_EXTERN_METHOD(loadInterstitial : (NSString *)adUnitId : (RCTPromiseResolveBlock)resolve : (RCTPromiseRejectBlock)reject)
20
- RCT_EXTERN_METHOD(showInterstitial : (NSString *)adUnitIdentifier : (RCTPromiseResolveBlock)resolve : (RCTPromiseRejectBlock)reject)
22
+ RCT_EXTERN_METHOD(isInterstitialReady:(double)requestId adUnitId:(NSString *)adUnitId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
23
+ RCT_EXTERN_METHOD(loadInterstitial:(double)requestId adUnitId:(NSString *)adUnitId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
24
+ RCT_EXTERN_METHOD(showInterstitial:(double)requestId adUnitId:(NSString *)adUnitId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
21
25
 
22
26
  #pragma mark - Rewarded
23
27
 
24
- RCT_EXTERN_METHOD(isRewardedAdReady : (NSString *)adUnitId : (RCTPromiseResolveBlock)resolve : (RCTPromiseRejectBlock)reject)
25
- RCT_EXTERN_METHOD(loadRewardedAd : (NSString *)adUnitId : (RCTPromiseResolveBlock)resolve : (RCTPromiseRejectBlock)reject)
26
- RCT_EXTERN_METHOD(showRewardedAd : (NSString *)adUnitIdentifier : (nullable NSString *)customData : (RCTPromiseResolveBlock)resolve : (RCTPromiseRejectBlock)reject)
28
+ RCT_EXTERN_METHOD(isRewardedAdReady:(double)requestId adUnitId:(NSString *)adUnitId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
29
+ RCT_EXTERN_METHOD(loadRewardedAd:(double)requestId adUnitId:(NSString *)adUnitId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
30
+ RCT_EXTERN_METHOD(showRewardedAd:(double)requestId adUnitId:(NSString *)adUnitId customData:(nullable NSString *)customData resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
27
31
 
28
32
  #pragma mark - AppOpen Ad
29
33
 
30
- RCT_EXTERN_METHOD(isAppOpenAdReady : (NSString *)adUnitId : (RCTPromiseResolveBlock)resolve : (RCTPromiseRejectBlock)reject)
31
- RCT_EXTERN_METHOD(loadAppOpenAd : (NSString *)adUnitId : (RCTPromiseResolveBlock)resolve : (RCTPromiseRejectBlock)reject)
32
- RCT_EXTERN_METHOD(showAppOpenAd : (NSString *)adUnitIdentifier : (nullable NSString *)customData : (RCTPromiseResolveBlock)resolve : (RCTPromiseRejectBlock)reject)
34
+ RCT_EXTERN_METHOD(isAppOpenAdReady:(double)requestId adUnitId:(NSString *)adUnitId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
35
+ RCT_EXTERN_METHOD(loadAppOpenAd:(double)requestId adUnitId:(NSString *)adUnitId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
36
+ RCT_EXTERN_METHOD(showAppOpenAd:(double)requestId adUnitId:(NSString *)adUnitId placement:(nullable NSString *)placement customData:(nullable NSString *)customData resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
33
37
 
34
38
  #pragma mark - Light Popup
35
39
 
36
- RCT_EXTERN_METHOD(isLightPopupReady : (NSString *)adUnitId : (RCTPromiseResolveBlock)resolve : (RCTPromiseRejectBlock)reject)
37
- RCT_EXTERN_METHOD(loadLightPopup : (NSString *)adUnitId : (RCTPromiseResolveBlock)resolve : (RCTPromiseRejectBlock)reject)
38
- RCT_EXTERN_METHOD(showLightPopup : (NSString *)adUnitId : (RCTPromiseResolveBlock)resolve : (RCTPromiseRejectBlock)reject)
39
- RCT_EXTERN_METHOD(setLightPopupAdConfiguration : (NSString *)adUnitId : (NSDictionary *)configuration : (RCTPromiseResolveBlock)resolve : (RCTPromiseRejectBlock)reject)
40
+ RCT_EXTERN_METHOD(isLightPopupReady:(double)requestId adUnitId:(NSString *)adUnitId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
41
+ RCT_EXTERN_METHOD(loadLightPopup:(double)requestId adUnitId:(NSString *)adUnitId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
42
+ RCT_EXTERN_METHOD(showLightPopup:(double)requestId adUnitId:(NSString *)adUnitId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
43
+ RCT_EXTERN_METHOD(setLightPopupAdConfiguration:(double)requestId adUnitId:(NSString *)adUnitId configuration:(NSDictionary *)configuration resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
40
44
 
41
45
  + (BOOL)requiresMainQueueSetup {
42
46
  return YES;
43
47
  }
44
48
 
45
49
  @end
50
+
51
+ #ifdef RCT_NEW_ARCH_ENABLED
52
+
53
+ @interface DaroMModule (TurboModule) <RCTTurboModule>
54
+ @end
55
+
56
+ @implementation DaroMModule (TurboModule)
57
+
58
+ - (facebook::react::ModuleConstants<JS::NativeDaroModule::Constants>)getConstants
59
+ {
60
+ NSDictionary *constants = [self constantsToExport] ?: @{};
61
+ return (facebook::react::ModuleConstants<JS::NativeDaroModule::Constants>)
62
+ [_RCTTypedModuleConstants newWithUnsafeDictionary:constants];
63
+ }
64
+
65
+ - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
66
+ (const facebook::react::ObjCTurboModule::InitParams &)params
67
+ {
68
+ return std::make_shared<facebook::react::NativeDaroModuleSpecJSI>(params);
69
+ }
70
+
71
+ @end
72
+
73
+ #endif
@@ -1,5 +1,4 @@
1
- import GoogleMobileAds
2
- import Daro
1
+ import React
3
2
  import os.log
4
3
 
5
4
  @objc(DaroMModule)
@@ -83,20 +82,20 @@ class DaroMModule: RCTEventEmitter {
83
82
 
84
83
  static var sdkInitialized: Bool = false
85
84
  // 광고 인스턴스 저장소
86
- internal var interstitials: [String: InterstitialAd] = [:]
87
- internal var rewardedAds: [String: RewardedAd] = [:]
88
- internal var appOpenAds: [String: AppOpenAd] = [:]
89
- internal var lightPopups: [String: LightPopupAd] = [:]
90
- internal var lightPopupConfigurations: [String: [String: Any]] = [:]
85
+ internal var interstitials: [Int: InterstitialAd] = [:]
86
+ internal var rewardedAds: [Int: RewardedAd] = [:]
87
+ internal var appOpenAds: [Int: AppOpenAd] = [:]
88
+ internal var lightPopups: [Int: LightPopupAd] = [:]
89
+ internal var lightPopupConfigurations: [Int: [String: Any]] = [:]
91
90
 
92
91
  // MARK: - SDK 초기화 및 설정
93
92
 
94
- @objc(isInitialized::)
93
+ @objc(isInitialized:reject:)
95
94
  func isInitialized(resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) {
96
95
  resolve(Self.sdkInitialized)
97
96
  }
98
97
 
99
- @objc(initializeSdk::)
98
+ @objc(initializeSdk:reject:)
100
99
  func initializeSdk(
101
100
  resolve: @escaping RCTPromiseResolveBlock,
102
101
  reject: @escaping RCTPromiseRejectBlock
@@ -107,7 +106,7 @@ class DaroMModule: RCTEventEmitter {
107
106
  resolve(Void())
108
107
  return
109
108
  }
110
-
109
+
111
110
  // 초기화 진행
112
111
  DaroAds.shared.logLevel = .debug
113
112
  DaroAds.shared.initialized { error in
@@ -122,18 +121,14 @@ class DaroMModule: RCTEventEmitter {
122
121
  }
123
122
  }
124
123
 
125
- @objc(showMediationDebugger::)
124
+ @objc(showMediationDebugger:reject:)
126
125
  func showMediationDebugger(resolve: @escaping RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) {
127
- // ALSdk.shared().showMediationDebugger()
128
- DispatchQueue.main.async {
129
- MobileAds.shared.presentAdInspector(from: nil) { error in
130
- // Error will be non-nil if there was an issue and the inspector was not displayed.
131
- }
126
+ DaroMediationDebugger.show {
132
127
  resolve(Void())
133
128
  }
134
129
  }
135
130
 
136
- @objc(setUserId:::)
131
+ @objc(setUserId:resolve:reject:)
137
132
  func setUserId(userId: String, resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) {
138
133
  DaroAds.shared.userId = userId
139
134
  resolve(Void())
@@ -206,6 +201,12 @@ extension DaroAdInfo {
206
201
  "latencyMillis": self.latency as Any,
207
202
  ]
208
203
  }
204
+
205
+ func toBody(requestId: Int) -> [String: Any] {
206
+ var body = self.toBody
207
+ body["requestId"] = requestId
208
+ return body
209
+ }
209
210
  }
210
211
 
211
212
  extension DaroError {
@@ -215,4 +216,10 @@ extension DaroError {
215
216
  "message": self.message,
216
217
  ]
217
218
  }
219
+
220
+ func toBody(requestId: Int) -> [String: Any] {
221
+ var body = self.toBody
222
+ body["requestId"] = requestId
223
+ return body
224
+ }
218
225
  }
@@ -0,0 +1,207 @@
1
+ #import <React/RCTDefines.h>
2
+
3
+ #ifdef RCT_NEW_ARCH_ENABLED
4
+
5
+ #import <React/RCTComponent.h>
6
+ #import <React/RCTFabricComponentsPlugins.h>
7
+ #import <React/RCTViewComponentView.h>
8
+ #import <react/renderer/components/DaroReactNativeSpec/ComponentDescriptors.h>
9
+ #import <react/renderer/components/DaroReactNativeSpec/EventEmitters.h>
10
+ #import <react/renderer/components/DaroReactNativeSpec/Props.h>
11
+ #import <react/renderer/components/DaroReactNativeSpec/RCTComponentViewHelpers.h>
12
+ #include <folly/dynamic.h>
13
+ #include <string>
14
+
15
+ using namespace facebook::react;
16
+
17
+ extern UIView *DaroMFabricCreateSwiftView(NSString *className);
18
+ extern void DaroMFabricSetValue(UIView *view, NSString *key, id value);
19
+ extern void DaroMFabricPerformSelector(UIView *view, SEL selector);
20
+ extern void DaroMFabricPerformSelectorWithObject(UIView *view, SEL selector, id object);
21
+ extern NSString *DaroMFabricNSStringFromStdString(const std::string &value);
22
+ extern NSDictionary *DaroMFabricEventBody(NSDictionary *body);
23
+ extern std::string DaroMFabricEventString(NSDictionary *body, NSString *key);
24
+ extern double DaroMFabricEventDouble(NSDictionary *body, NSString *key);
25
+ extern int DaroMFabricEventInt(NSDictionary *body, NSString *key);
26
+
27
+ @interface DaroMAdBannerViewComponentView : RCTViewComponentView <RCTDaroMAdBannerViewViewProtocol>
28
+ @end
29
+
30
+ @implementation DaroMAdBannerViewComponentView {
31
+ UIView *_bannerView;
32
+ }
33
+
34
+ + (void)load
35
+ {
36
+ [super load];
37
+ }
38
+
39
+ - (instancetype)initWithFrame:(CGRect)frame
40
+ {
41
+ if (self = [super initWithFrame:frame]) {
42
+ static const auto defaultProps = std::make_shared<const DaroMAdBannerViewProps>();
43
+ _props = defaultProps;
44
+ [self createBannerView];
45
+ }
46
+
47
+ return self;
48
+ }
49
+
50
+ - (void)createBannerView
51
+ {
52
+ _bannerView = DaroMFabricCreateSwiftView(@"DaroMAdBannerView");
53
+ self.contentView = _bannerView;
54
+ [self installEventHandlers];
55
+ }
56
+
57
+ - (void)installEventHandlers
58
+ {
59
+ __weak DaroMAdBannerViewComponentView *weakSelf = self;
60
+
61
+ RCTDirectEventBlock onAdLoadedEvent = ^(NSDictionary *body) {
62
+ DaroMAdBannerViewComponentView *strongSelf = weakSelf;
63
+ if (!strongSelf) {
64
+ return;
65
+ }
66
+
67
+ auto eventEmitter = std::static_pointer_cast<const DaroMAdBannerViewEventEmitter>(strongSelf->_eventEmitter);
68
+ if (!eventEmitter) {
69
+ return;
70
+ }
71
+
72
+ NSDictionary *eventBody = DaroMFabricEventBody(body);
73
+ eventEmitter->onAdLoadedEvent({
74
+ .adUnitId = DaroMFabricEventString(eventBody, @"adUnitId"),
75
+ .latencyMillis = DaroMFabricEventDouble(eventBody, @"latencyMillis"),
76
+ });
77
+ };
78
+
79
+ RCTDirectEventBlock onAdLoadFailedEvent = ^(NSDictionary *body) {
80
+ DaroMAdBannerViewComponentView *strongSelf = weakSelf;
81
+ if (!strongSelf) {
82
+ return;
83
+ }
84
+
85
+ auto eventEmitter = std::static_pointer_cast<const DaroMAdBannerViewEventEmitter>(strongSelf->_eventEmitter);
86
+ if (!eventEmitter) {
87
+ return;
88
+ }
89
+
90
+ NSDictionary *eventBody = DaroMFabricEventBody(body);
91
+ eventEmitter->onAdLoadFailedEvent({
92
+ .adUnitId = DaroMFabricEventString(eventBody, @"adUnitId"),
93
+ .code = DaroMFabricEventInt(eventBody, @"code"),
94
+ .message = DaroMFabricEventString(eventBody, @"message"),
95
+ .latencyMillis = DaroMFabricEventDouble(eventBody, @"latencyMillis"),
96
+ });
97
+ };
98
+
99
+ RCTDirectEventBlock onAdClickedEvent = ^(NSDictionary *body) {
100
+ DaroMAdBannerViewComponentView *strongSelf = weakSelf;
101
+ if (!strongSelf) {
102
+ return;
103
+ }
104
+
105
+ auto eventEmitter = std::static_pointer_cast<const DaroMAdBannerViewEventEmitter>(strongSelf->_eventEmitter);
106
+ if (!eventEmitter) {
107
+ return;
108
+ }
109
+
110
+ NSDictionary *eventBody = DaroMFabricEventBody(body);
111
+ eventEmitter->onAdClickedEvent({
112
+ .adUnitId = DaroMFabricEventString(eventBody, @"adUnitId"),
113
+ .latencyMillis = DaroMFabricEventDouble(eventBody, @"latencyMillis"),
114
+ });
115
+ };
116
+
117
+ RCTDirectEventBlock onAdImpressionRecordedEvent = ^(NSDictionary *body) {
118
+ DaroMAdBannerViewComponentView *strongSelf = weakSelf;
119
+ if (!strongSelf) {
120
+ return;
121
+ }
122
+
123
+ auto eventEmitter = std::static_pointer_cast<const DaroMAdBannerViewEventEmitter>(strongSelf->_eventEmitter);
124
+ if (!eventEmitter) {
125
+ return;
126
+ }
127
+
128
+ NSDictionary *eventBody = DaroMFabricEventBody(body);
129
+ eventEmitter->onAdImpressionRecordedEvent({
130
+ .adUnitId = DaroMFabricEventString(eventBody, @"adUnitId"),
131
+ .latencyMillis = DaroMFabricEventDouble(eventBody, @"latencyMillis"),
132
+ });
133
+ };
134
+
135
+ DaroMFabricSetValue(_bannerView, @"onAdLoadedEvent", onAdLoadedEvent);
136
+ DaroMFabricSetValue(_bannerView, @"onAdLoadFailedEvent", onAdLoadFailedEvent);
137
+ DaroMFabricSetValue(_bannerView, @"onAdClickedEvent", onAdClickedEvent);
138
+ DaroMFabricSetValue(_bannerView, @"onAdImpressionRecordedEvent", onAdImpressionRecordedEvent);
139
+ }
140
+
141
+ + (ComponentDescriptorProvider)componentDescriptorProvider
142
+ {
143
+ return concreteComponentDescriptorProvider<DaroMAdBannerViewComponentDescriptor>();
144
+ }
145
+
146
+ - (void)updateProps:(const Props::Shared &)props oldProps:(const Props::Shared &)oldProps
147
+ {
148
+ const auto &oldComponentProps = *std::static_pointer_cast<const DaroMAdBannerViewProps>(_props);
149
+ const auto &newComponentProps = *std::static_pointer_cast<const DaroMAdBannerViewProps>(props);
150
+ NSMutableArray<NSString *> *changedProps = [NSMutableArray new];
151
+
152
+ if (oldComponentProps.adUnitId != newComponentProps.adUnitId) {
153
+ DaroMFabricSetValue(_bannerView, @"adUnitId", DaroMFabricNSStringFromStdString(newComponentProps.adUnitId));
154
+ [changedProps addObject:@"adUnitId"];
155
+ }
156
+
157
+ if (oldComponentProps.adFormat != newComponentProps.adFormat) {
158
+ DaroMFabricSetValue(_bannerView, @"adFormat", DaroMFabricNSStringFromStdString(newComponentProps.adFormat));
159
+ [changedProps addObject:@"adFormat"];
160
+ }
161
+
162
+ if (oldComponentProps.loadOnMount != newComponentProps.loadOnMount) {
163
+ DaroMFabricSetValue(_bannerView, @"loadOnMount", @(newComponentProps.loadOnMount));
164
+ [changedProps addObject:@"loadOnMount"];
165
+ }
166
+
167
+ if (oldComponentProps.isVisible != newComponentProps.isVisible) {
168
+ DaroMFabricSetValue(_bannerView, @"isVisible", @(newComponentProps.isVisible));
169
+ [changedProps addObject:@"isVisible"];
170
+ }
171
+
172
+ [super updateProps:props oldProps:oldProps];
173
+
174
+ DaroMFabricPerformSelectorWithObject(_bannerView, NSSelectorFromString(@"applyReactProps:"), changedProps);
175
+ }
176
+
177
+ - (void)loadAd
178
+ {
179
+ DaroMFabricPerformSelector(_bannerView, NSSelectorFromString(@"loadAd"));
180
+ }
181
+
182
+ - (void)handleCommand:(const NSString *)commandName args:(const NSArray *)args
183
+ {
184
+ RCTDaroMAdBannerViewHandleCommand(self, commandName, args);
185
+ }
186
+
187
+ - (void)prepareForRecycle
188
+ {
189
+ [super prepareForRecycle];
190
+ DaroMFabricSetValue(_bannerView, @"onAdLoadedEvent", nil);
191
+ DaroMFabricSetValue(_bannerView, @"onAdLoadFailedEvent", nil);
192
+ DaroMFabricSetValue(_bannerView, @"onAdClickedEvent", nil);
193
+ DaroMFabricSetValue(_bannerView, @"onAdImpressionRecordedEvent", nil);
194
+ DaroMFabricPerformSelector(_bannerView, NSSelectorFromString(@"prepareForReuse"));
195
+ [self installEventHandlers];
196
+ static const auto defaultProps = std::make_shared<const DaroMAdBannerViewProps>();
197
+ _props = defaultProps;
198
+ }
199
+
200
+ @end
201
+
202
+ Class<RCTComponentViewProtocol> DaroMAdBannerViewCls(void)
203
+ {
204
+ return DaroMAdBannerViewComponentView.class;
205
+ }
206
+
207
+ #endif
@@ -0,0 +1,31 @@
1
+ #import <React/RCTDefines.h>
2
+
3
+ #ifdef RCT_NEW_ARCH_ENABLED
4
+
5
+ #import <Foundation/Foundation.h>
6
+ #include <string>
7
+
8
+ NSDictionary *DaroMFabricEventBody(NSDictionary *body)
9
+ {
10
+ return [body isKindOfClass:NSDictionary.class] ? body : @{};
11
+ }
12
+
13
+ std::string DaroMFabricEventString(NSDictionary *body, NSString *key)
14
+ {
15
+ id value = body[key];
16
+ return [value isKindOfClass:NSString.class] ? std::string([value UTF8String]) : "";
17
+ }
18
+
19
+ double DaroMFabricEventDouble(NSDictionary *body, NSString *key)
20
+ {
21
+ id value = body[key];
22
+ return [value respondsToSelector:@selector(doubleValue)] ? [value doubleValue] : 0;
23
+ }
24
+
25
+ int DaroMFabricEventInt(NSDictionary *body, NSString *key)
26
+ {
27
+ id value = body[key];
28
+ return [value respondsToSelector:@selector(intValue)] ? [value intValue] : 0;
29
+ }
30
+
31
+ #endif
@@ -0,0 +1,123 @@
1
+ #import <React/RCTDefines.h>
2
+
3
+ #ifdef RCT_NEW_ARCH_ENABLED
4
+
5
+ #import <React/RCTLog.h>
6
+ #import <UIKit/UIKit.h>
7
+ #include <folly/dynamic.h>
8
+ #include <string>
9
+
10
+ static NSString *DaroMFabricSetterNameForKey(NSString *key)
11
+ {
12
+ if (key.length == 0) {
13
+ return nil;
14
+ }
15
+
16
+ NSString *first = [[key substringToIndex:1] uppercaseString];
17
+ NSString *rest = [key substringFromIndex:1];
18
+ return [NSString stringWithFormat:@"set%@%@:", first, rest];
19
+ }
20
+
21
+ void DaroMFabricSetValue(UIView *view, NSString *key, id value)
22
+ {
23
+ SEL setter = NSSelectorFromString(DaroMFabricSetterNameForKey(key));
24
+ if (![view respondsToSelector:setter]) {
25
+ return;
26
+ }
27
+
28
+ [view setValue:value forKey:key];
29
+ }
30
+
31
+ void DaroMFabricPerformSelector(UIView *view, SEL selector)
32
+ {
33
+ if (![view respondsToSelector:selector]) {
34
+ return;
35
+ }
36
+
37
+ IMP imp = [view methodForSelector:selector];
38
+ auto function = reinterpret_cast<void (*)(id, SEL)>(imp);
39
+ function(view, selector);
40
+ }
41
+
42
+ void DaroMFabricPerformSelectorWithObject(UIView *view, SEL selector, id object)
43
+ {
44
+ if (![view respondsToSelector:selector]) {
45
+ return;
46
+ }
47
+
48
+ IMP imp = [view methodForSelector:selector];
49
+ auto function = reinterpret_cast<void (*)(id, SEL, id)>(imp);
50
+ function(view, selector, object);
51
+ }
52
+
53
+ void DaroMFabricPerformSelectorWithTwoObjects(UIView *view, SEL selector, id firstObject, id secondObject)
54
+ {
55
+ if (![view respondsToSelector:selector]) {
56
+ return;
57
+ }
58
+
59
+ IMP imp = [view methodForSelector:selector];
60
+ auto function = reinterpret_cast<void (*)(id, SEL, id, id)>(imp);
61
+ function(view, selector, firstObject, secondObject);
62
+ }
63
+
64
+ UIView *DaroMFabricCreateSwiftView(NSString *className)
65
+ {
66
+ Class viewClass = NSClassFromString(className);
67
+ if (![viewClass isSubclassOfClass:UIView.class]) {
68
+ RCTLogError(@"%@ is not available as a UIView subclass.", className);
69
+ return [UIView new];
70
+ }
71
+
72
+ return [[viewClass alloc] init];
73
+ }
74
+
75
+ NSString *DaroMFabricNSStringFromStdString(const std::string &value)
76
+ {
77
+ return [NSString stringWithUTF8String:value.c_str()];
78
+ }
79
+
80
+ static id DaroMFabricNSObjectFromDynamic(const folly::dynamic &value)
81
+ {
82
+ switch (value.type()) {
83
+ case folly::dynamic::NULLT:
84
+ return (id)kCFNull;
85
+ case folly::dynamic::BOOL:
86
+ return value.getBool() ? @YES : @NO;
87
+ case folly::dynamic::INT64:
88
+ return @(value.getInt());
89
+ case folly::dynamic::DOUBLE:
90
+ return @(value.getDouble());
91
+ case folly::dynamic::STRING:
92
+ return [[NSString alloc] initWithBytes:value.c_str() length:value.size() encoding:NSUTF8StringEncoding];
93
+ case folly::dynamic::ARRAY: {
94
+ NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:value.size()];
95
+ for (const auto &item : value) {
96
+ id converted = DaroMFabricNSObjectFromDynamic(item);
97
+ if (converted != nil) {
98
+ [array addObject:converted];
99
+ }
100
+ }
101
+ return array;
102
+ }
103
+ case folly::dynamic::OBJECT: {
104
+ NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] initWithCapacity:value.size()];
105
+ for (const auto &item : value.items()) {
106
+ id key = DaroMFabricNSObjectFromDynamic(item.first);
107
+ id converted = DaroMFabricNSObjectFromDynamic(item.second);
108
+ if (key != nil && converted != nil && [key conformsToProtocol:@protocol(NSCopying)]) {
109
+ dictionary[key] = converted;
110
+ }
111
+ }
112
+ return dictionary;
113
+ }
114
+ }
115
+ }
116
+
117
+ id DaroMFabricIdFromDynamic(const folly::dynamic &value)
118
+ {
119
+ id converted = DaroMFabricNSObjectFromDynamic(value);
120
+ return converted == (id)kCFNull ? nil : converted;
121
+ }
122
+
123
+ #endif