react-native-daro 1.0.15 → 2.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/README.md +2 -5
  2. package/android/build.gradle +17 -14
  3. package/android/src/main/java/com/daro/reactnative/DaroMediaViewManager.kt +25 -0
  4. package/android/src/main/java/com/daro/reactnative/DaroRNAdBannerViewManager.kt +105 -0
  5. package/android/src/main/java/com/daro/reactnative/DaroRNAdNativeViewManager.kt +163 -0
  6. package/android/src/main/java/com/daro/reactnative/DaroRNModule.kt +376 -0
  7. package/android/src/main/java/com/daro/reactnative/DaroRNPackage.kt +45 -0
  8. package/android/src/main/java/com/daro/reactnative/DaroSdkBridge.kt +52 -0
  9. package/android/src/main/java/com/daro/reactnative/constants/{InternalDaroMBannerSize.kt → InternalDaroRNBannerSize.kt} +2 -2
  10. package/android/src/main/java/com/daro/reactnative/event/{DaroMEvent.kt → DaroRNEvent.kt} +22 -11
  11. package/android/src/main/java/com/daro/reactnative/impl/{DaroMBannerViewModuleImpl.kt → DaroRNBannerViewModuleImpl.kt} +3 -3
  12. package/android/src/main/java/com/daro/reactnative/impl/{DaroMInterstitialModuleImpl.kt → DaroRNInterstitialModuleImpl.kt} +4 -4
  13. package/android/src/main/java/com/daro/reactnative/impl/{DaroMLightPopupModuleImpl.kt → DaroRNLightPopupModuleImpl.kt} +4 -4
  14. package/android/src/main/java/com/daro/reactnative/impl/{DaroMRewardedAdModuleImpl.kt → DaroRNRewardedAdModuleImpl.kt} +4 -4
  15. package/android/src/main/java/com/daro/reactnative/util/AdInfoUtil.kt +12 -0
  16. package/android/src/main/java/com/daro/reactnative/util/DaroQaProbe.kt +147 -0
  17. package/android/src/main/java/com/daro/reactnative/util/EventEmitterUtil.kt +20 -7
  18. package/android/src/main/java/com/daro/reactnative/view/DaroMediaView.kt +123 -0
  19. package/android/src/main/java/com/daro/reactnative/view/{DaroMAdBannerViewContainer.kt → DaroRNAdBannerViewContainer.kt} +2 -3
  20. package/android/src/main/java/com/daro/reactnative/view/DaroRNAdNativeViewContainer.kt +623 -0
  21. package/android/src/newarch/java/com/daro/reactnative/DaroRNModuleSpec.kt +6 -0
  22. package/android/src/oldarch/java/com/daro/reactnative/DaroRNModuleSpec.kt +119 -0
  23. package/ios/{DaroMModule+AppOpen.swift → DaroRNModule+AppOpen.swift} +22 -20
  24. package/ios/DaroRNModule+Consent.swift +88 -0
  25. package/ios/{DaroMModule+Interstitial.swift → DaroRNModule+Interstitial.swift} +21 -18
  26. package/ios/{DaroMModule+LightPopup.swift → DaroRNModule+LightPopup.swift} +18 -15
  27. package/ios/DaroRNModule+Qa.swift +158 -0
  28. package/ios/{DaroMModule+Rewarded.swift → DaroRNModule+Rewarded.swift} +22 -19
  29. package/ios/DaroRNModule.mm +88 -0
  30. package/ios/{DaroMModule.swift → DaroRNModule.swift} +24 -10
  31. package/ios/Fabric/DaroRNAdBannerComponentView.mm +219 -0
  32. package/ios/Fabric/DaroRNFabricEventSink.mm +31 -0
  33. package/ios/Fabric/DaroRNFabricPropApplier.mm +123 -0
  34. package/ios/Fabric/DaroRNNativeAdComponentView.mm +306 -0
  35. package/ios/{DaroMAdBannerViewManager.m → Paper/DaroRNAdBannerViewManager.m} +4 -2
  36. package/ios/Paper/DaroRNAdBannerViewManager.swift +21 -0
  37. package/ios/{DaroMNativeAdViewManager.m → Paper/DaroRNNativeAdViewManager.m} +3 -2
  38. package/ios/Paper/DaroRNNativeAdViewManager.swift +22 -0
  39. package/ios/Shared/DaroMediationDebugger.swift +14 -0
  40. package/ios/{mediation/admob → Shared}/DaroMediationTypes.swift +1 -0
  41. package/ios/Shared/DaroRNAdEventSink.swift +24 -0
  42. package/ios/Shared/DaroRNBannerAdView.swift +188 -0
  43. package/ios/Shared/DaroRNNativeAdLoadCoordinator.swift +49 -0
  44. package/ios/Shared/DaroRNNativeAdView.swift +575 -0
  45. package/ios/Shared/DaroRNNativeAssetResolver.swift +53 -0
  46. package/lib/commonjs/AdBannerView.js +20 -41
  47. package/lib/commonjs/AdBannerView.js.map +1 -1
  48. package/lib/commonjs/AppOpenAd.js +45 -12
  49. package/lib/commonjs/AppOpenAd.js.map +1 -1
  50. package/lib/commonjs/DaroMediaViewNativeComponent.ts +9 -0
  51. package/lib/commonjs/DaroRNAdBannerViewNativeComponent.ts +50 -0
  52. package/lib/commonjs/DaroRNNativeAdViewNativeComponent.ts +65 -0
  53. package/lib/commonjs/EventEmitter.js +4 -5
  54. package/lib/commonjs/EventEmitter.js.map +1 -1
  55. package/lib/commonjs/InterstitialAd.js +9 -11
  56. package/lib/commonjs/InterstitialAd.js.map +1 -1
  57. package/lib/commonjs/LightPopupAd.js +11 -12
  58. package/lib/commonjs/LightPopupAd.js.map +1 -1
  59. package/lib/commonjs/NativeDaroModule.js +9 -0
  60. package/lib/commonjs/NativeDaroModule.js.map +1 -0
  61. package/lib/commonjs/RewardedAd.js +9 -11
  62. package/lib/commonjs/RewardedAd.js.map +1 -1
  63. package/lib/commonjs/codegen-env.d.js +2 -0
  64. package/lib/commonjs/codegen-env.d.js.map +1 -0
  65. package/lib/commonjs/hooks/useInterstitialAd.js +110 -0
  66. package/lib/commonjs/hooks/useInterstitialAd.js.map +1 -0
  67. package/lib/commonjs/hooks/useLightPopupAd.js +114 -0
  68. package/lib/commonjs/hooks/useLightPopupAd.js.map +1 -0
  69. package/lib/commonjs/hooks/useRewardedAd.js +113 -0
  70. package/lib/commonjs/hooks/useRewardedAd.js.map +1 -0
  71. package/lib/commonjs/index.js +150 -13
  72. package/lib/commonjs/index.js.map +1 -1
  73. package/lib/commonjs/nativeAd/NativeAdView.js +23 -22
  74. package/lib/commonjs/nativeAd/NativeAdView.js.map +1 -1
  75. package/lib/commonjs/nativeAd/NativeAdViewComponents.js +43 -31
  76. package/lib/commonjs/nativeAd/NativeAdViewComponents.js.map +1 -1
  77. package/lib/commonjs/nativeAd/NativeAdViewProvider.js +34 -7
  78. package/lib/commonjs/nativeAd/NativeAdViewProvider.js.map +1 -1
  79. package/lib/module/AdBannerView.js +19 -42
  80. package/lib/module/AdBannerView.js.map +1 -1
  81. package/lib/module/AppOpenAd.js +45 -13
  82. package/lib/module/AppOpenAd.js.map +1 -1
  83. package/lib/module/DaroMediaViewNativeComponent.ts +9 -0
  84. package/lib/module/DaroRNAdBannerViewNativeComponent.ts +50 -0
  85. package/lib/module/DaroRNNativeAdViewNativeComponent.ts +65 -0
  86. package/lib/module/EventEmitter.js +4 -6
  87. package/lib/module/EventEmitter.js.map +1 -1
  88. package/lib/module/InterstitialAd.js +8 -11
  89. package/lib/module/InterstitialAd.js.map +1 -1
  90. package/lib/module/LightPopupAd.js +11 -13
  91. package/lib/module/LightPopupAd.js.map +1 -1
  92. package/lib/module/NativeDaroModule.js +5 -0
  93. package/lib/module/NativeDaroModule.js.map +1 -0
  94. package/lib/module/RewardedAd.js +8 -11
  95. package/lib/module/RewardedAd.js.map +1 -1
  96. package/lib/module/codegen-env.d.js +2 -0
  97. package/lib/module/codegen-env.d.js.map +1 -0
  98. package/lib/module/hooks/useInterstitialAd.js +106 -0
  99. package/lib/module/hooks/useInterstitialAd.js.map +1 -0
  100. package/lib/module/hooks/useLightPopupAd.js +110 -0
  101. package/lib/module/hooks/useLightPopupAd.js.map +1 -0
  102. package/lib/module/hooks/useRewardedAd.js +109 -0
  103. package/lib/module/hooks/useRewardedAd.js.map +1 -0
  104. package/lib/module/index.js +108 -13
  105. package/lib/module/index.js.map +1 -1
  106. package/lib/module/nativeAd/NativeAdView.js +22 -23
  107. package/lib/module/nativeAd/NativeAdView.js.map +1 -1
  108. package/lib/module/nativeAd/NativeAdViewComponents.js +45 -34
  109. package/lib/module/nativeAd/NativeAdViewComponents.js.map +1 -1
  110. package/lib/module/nativeAd/NativeAdViewProvider.js +35 -8
  111. package/lib/module/nativeAd/NativeAdViewProvider.js.map +1 -1
  112. package/lib/typescript/commonjs/plugin/src/index.d.ts +2 -6
  113. package/lib/typescript/commonjs/plugin/src/index.d.ts.map +1 -1
  114. package/lib/typescript/commonjs/plugin/src/withAndroid.d.ts +2 -6
  115. package/lib/typescript/commonjs/plugin/src/withAndroid.d.ts.map +1 -1
  116. package/lib/typescript/commonjs/plugin/src/withIos.d.ts +2 -6
  117. package/lib/typescript/commonjs/plugin/src/withIos.d.ts.map +1 -1
  118. package/lib/typescript/commonjs/src/AdBannerView.d.ts +2 -2
  119. package/lib/typescript/commonjs/src/AdBannerView.d.ts.map +1 -1
  120. package/lib/typescript/commonjs/src/AppOpenAd.d.ts +2 -2
  121. package/lib/typescript/commonjs/src/AppOpenAd.d.ts.map +1 -1
  122. package/lib/typescript/commonjs/src/DaroMediaViewNativeComponent.d.ts +6 -0
  123. package/lib/typescript/commonjs/src/DaroMediaViewNativeComponent.d.ts.map +1 -0
  124. package/lib/typescript/commonjs/src/DaroRNAdBannerViewNativeComponent.d.ts +33 -0
  125. package/lib/typescript/commonjs/src/DaroRNAdBannerViewNativeComponent.d.ts.map +1 -0
  126. package/lib/typescript/commonjs/src/DaroRNNativeAdViewNativeComponent.d.ts +43 -0
  127. package/lib/typescript/commonjs/src/DaroRNNativeAdViewNativeComponent.d.ts.map +1 -0
  128. package/lib/typescript/commonjs/src/EventEmitter.d.ts.map +1 -1
  129. package/lib/typescript/commonjs/src/InterstitialAd.d.ts.map +1 -1
  130. package/lib/typescript/commonjs/src/LightPopupAd.d.ts.map +1 -1
  131. package/lib/typescript/commonjs/src/NativeDaroModule.d.ts +70 -0
  132. package/lib/typescript/commonjs/src/NativeDaroModule.d.ts.map +1 -0
  133. package/lib/typescript/commonjs/src/RewardedAd.d.ts.map +1 -1
  134. package/lib/typescript/commonjs/src/hooks/useInterstitialAd.d.ts +19 -0
  135. package/lib/typescript/commonjs/src/hooks/useInterstitialAd.d.ts.map +1 -0
  136. package/lib/typescript/commonjs/src/hooks/useLightPopupAd.d.ts +23 -0
  137. package/lib/typescript/commonjs/src/hooks/useLightPopupAd.d.ts.map +1 -0
  138. package/lib/typescript/commonjs/src/hooks/useRewardedAd.d.ts +20 -0
  139. package/lib/typescript/commonjs/src/hooks/useRewardedAd.d.ts.map +1 -0
  140. package/lib/typescript/commonjs/src/index.d.ts +86 -1
  141. package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
  142. package/lib/typescript/commonjs/src/nativeAd/NativeAdView.d.ts +1 -0
  143. package/lib/typescript/commonjs/src/nativeAd/NativeAdView.d.ts.map +1 -1
  144. package/lib/typescript/commonjs/src/nativeAd/NativeAdViewComponents.d.ts.map +1 -1
  145. package/lib/typescript/commonjs/src/nativeAd/NativeAdViewProvider.d.ts +11 -5
  146. package/lib/typescript/commonjs/src/nativeAd/NativeAdViewProvider.d.ts.map +1 -1
  147. package/lib/typescript/commonjs/src/types/AdInfo.d.ts +15 -0
  148. package/lib/typescript/commonjs/src/types/AdInfo.d.ts.map +1 -1
  149. package/lib/typescript/commonjs/src/types/AdProps.d.ts +0 -1
  150. package/lib/typescript/commonjs/src/types/AdProps.d.ts.map +1 -1
  151. package/lib/typescript/commonjs/src/types/NativeAdViewProps.d.ts +2 -0
  152. package/lib/typescript/commonjs/src/types/NativeAdViewProps.d.ts.map +1 -1
  153. package/lib/typescript/module/plugin/src/index.d.ts +2 -6
  154. package/lib/typescript/module/plugin/src/index.d.ts.map +1 -1
  155. package/lib/typescript/module/plugin/src/withAndroid.d.ts +2 -6
  156. package/lib/typescript/module/plugin/src/withAndroid.d.ts.map +1 -1
  157. package/lib/typescript/module/plugin/src/withIos.d.ts +2 -6
  158. package/lib/typescript/module/plugin/src/withIos.d.ts.map +1 -1
  159. package/lib/typescript/module/src/AdBannerView.d.ts +2 -2
  160. package/lib/typescript/module/src/AdBannerView.d.ts.map +1 -1
  161. package/lib/typescript/module/src/AppOpenAd.d.ts +2 -2
  162. package/lib/typescript/module/src/AppOpenAd.d.ts.map +1 -1
  163. package/lib/typescript/module/src/DaroMediaViewNativeComponent.d.ts +6 -0
  164. package/lib/typescript/module/src/DaroMediaViewNativeComponent.d.ts.map +1 -0
  165. package/lib/typescript/module/src/DaroRNAdBannerViewNativeComponent.d.ts +33 -0
  166. package/lib/typescript/module/src/DaroRNAdBannerViewNativeComponent.d.ts.map +1 -0
  167. package/lib/typescript/module/src/DaroRNNativeAdViewNativeComponent.d.ts +43 -0
  168. package/lib/typescript/module/src/DaroRNNativeAdViewNativeComponent.d.ts.map +1 -0
  169. package/lib/typescript/module/src/EventEmitter.d.ts.map +1 -1
  170. package/lib/typescript/module/src/InterstitialAd.d.ts.map +1 -1
  171. package/lib/typescript/module/src/LightPopupAd.d.ts.map +1 -1
  172. package/lib/typescript/module/src/NativeDaroModule.d.ts +70 -0
  173. package/lib/typescript/module/src/NativeDaroModule.d.ts.map +1 -0
  174. package/lib/typescript/module/src/RewardedAd.d.ts.map +1 -1
  175. package/lib/typescript/module/src/hooks/useInterstitialAd.d.ts +19 -0
  176. package/lib/typescript/module/src/hooks/useInterstitialAd.d.ts.map +1 -0
  177. package/lib/typescript/module/src/hooks/useLightPopupAd.d.ts +23 -0
  178. package/lib/typescript/module/src/hooks/useLightPopupAd.d.ts.map +1 -0
  179. package/lib/typescript/module/src/hooks/useRewardedAd.d.ts +20 -0
  180. package/lib/typescript/module/src/hooks/useRewardedAd.d.ts.map +1 -0
  181. package/lib/typescript/module/src/index.d.ts +86 -1
  182. package/lib/typescript/module/src/index.d.ts.map +1 -1
  183. package/lib/typescript/module/src/nativeAd/NativeAdView.d.ts +1 -0
  184. package/lib/typescript/module/src/nativeAd/NativeAdView.d.ts.map +1 -1
  185. package/lib/typescript/module/src/nativeAd/NativeAdViewComponents.d.ts.map +1 -1
  186. package/lib/typescript/module/src/nativeAd/NativeAdViewProvider.d.ts +11 -5
  187. package/lib/typescript/module/src/nativeAd/NativeAdViewProvider.d.ts.map +1 -1
  188. package/lib/typescript/module/src/types/AdInfo.d.ts +15 -0
  189. package/lib/typescript/module/src/types/AdInfo.d.ts.map +1 -1
  190. package/lib/typescript/module/src/types/AdProps.d.ts +0 -1
  191. package/lib/typescript/module/src/types/AdProps.d.ts.map +1 -1
  192. package/lib/typescript/module/src/types/NativeAdViewProps.d.ts +2 -0
  193. package/lib/typescript/module/src/types/NativeAdViewProps.d.ts.map +1 -1
  194. package/package.json +12 -5
  195. package/plugin/build/index.d.ts +2 -6
  196. package/plugin/build/index.js +21 -56
  197. package/plugin/build/withAndroid.d.ts +2 -6
  198. package/plugin/build/withAndroid.js +123 -83
  199. package/plugin/build/withIos.d.ts +2 -6
  200. package/plugin/build/withIos.js +37 -34
  201. package/react-native-daro.podspec +4 -2
  202. package/src/AdBannerView.tsx +24 -63
  203. package/src/AppOpenAd.ts +48 -17
  204. package/src/DaroMediaViewNativeComponent.ts +9 -0
  205. package/src/DaroRNAdBannerViewNativeComponent.ts +50 -0
  206. package/src/DaroRNNativeAdViewNativeComponent.ts +65 -0
  207. package/src/EventEmitter.ts +4 -5
  208. package/src/InterstitialAd.ts +8 -10
  209. package/src/LightPopupAd.ts +11 -12
  210. package/src/NativeDaroModule.ts +106 -0
  211. package/src/RewardedAd.ts +8 -10
  212. package/src/codegen-env.d.ts +45 -0
  213. package/src/hooks/useInterstitialAd.ts +117 -0
  214. package/src/hooks/useLightPopupAd.ts +132 -0
  215. package/src/hooks/useRewardedAd.ts +122 -0
  216. package/src/index.tsx +157 -22
  217. package/src/nativeAd/NativeAdView.tsx +41 -54
  218. package/src/nativeAd/NativeAdViewComponents.tsx +80 -42
  219. package/src/nativeAd/NativeAdViewProvider.tsx +75 -17
  220. package/src/types/AdInfo.ts +17 -0
  221. package/src/types/AdProps.ts +0 -2
  222. package/src/types/NativeAdViewProps.ts +7 -0
  223. package/android/src/admob/java/com/daro/reactnative/DaroSdkBridge.kt +0 -23
  224. package/android/src/main/java/com/daro/reactnative/DaroMAdBannerViewManager.kt +0 -132
  225. package/android/src/main/java/com/daro/reactnative/DaroMAdNativeViewManager.kt +0 -136
  226. package/android/src/main/java/com/daro/reactnative/DaroMModule.kt +0 -202
  227. package/android/src/main/java/com/daro/reactnative/DaroMPackage.kt +0 -21
  228. package/android/src/main/java/com/daro/reactnative/view/DaroMAdNativeViewContainer.kt +0 -375
  229. package/ios/DaroMAdBannerViewManager.swift +0 -91
  230. package/ios/DaroMModule.mm +0 -45
  231. package/ios/DaroMNativeAdViewManager.swift +0 -291
  232. package/ios/mediation/admob/DaroMediationDebugger.swift +0 -11
  233. package/lib/commonjs/types/DaroMMobileAds.js +0 -2
  234. package/lib/commonjs/types/DaroMMobileAds.js.map +0 -1
  235. package/lib/module/types/DaroMMobileAds.js +0 -2
  236. package/lib/module/types/DaroMMobileAds.js.map +0 -1
  237. package/lib/typescript/commonjs/src/types/DaroMMobileAds.d.ts +0 -6
  238. package/lib/typescript/commonjs/src/types/DaroMMobileAds.d.ts.map +0 -1
  239. package/lib/typescript/module/src/types/DaroMMobileAds.d.ts +0 -6
  240. package/lib/typescript/module/src/types/DaroMMobileAds.d.ts.map +0 -1
  241. package/src/types/DaroMMobileAds.ts +0 -5
@@ -1,43 +1,46 @@
1
1
  import React
2
2
 
3
- extension DaroMModule {
4
- @objc(isRewardedAdReady::::)
3
+ extension DaroRNModule {
4
+ @objc(isRewardedAdReady:adUnitId:resolve:reject:)
5
5
  func isRewardedAdReady(
6
- _ requestId: NSNumber,
6
+ requestId: Double,
7
7
  adUnitId: String,
8
8
  resolve: RCTPromiseResolveBlock,
9
9
  reject: RCTPromiseRejectBlock
10
10
  ) {
11
+ let requestId = Int(requestId)
11
12
  if !Self.sdkInitialized {
12
- DaroMModule.logger.debug("[DaroMMobileAds] !isInitialized")
13
+ DaroRNModule.logger.debug("[DaroRNMobileAds] !isInitialized")
13
14
  resolve(false)
14
15
  return
15
16
  }
16
17
 
17
- resolve(rewardedAds[requestId.intValue]?.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
- _ requestId: NSNumber,
23
+ requestId: Double,
23
24
  adUnitId: String,
24
25
  resolve: RCTPromiseResolveBlock,
25
26
  reject: RCTPromiseRejectBlock
26
27
  ) {
27
- let rewardedLoader = retrieveRewardedLoader(requestId: requestId.intValue, adUnitId: adUnitId)
28
+ let requestId = Int(requestId)
29
+ let rewardedLoader = retrieveRewardedLoader(requestId: requestId, adUnitId: adUnitId)
28
30
  rewardedLoader.loadAd()
29
31
  resolve(Void())
30
32
  }
31
33
 
32
- @objc(showRewardedAd:::::)
34
+ @objc(showRewardedAd:adUnitId:customData:resolve:reject:)
33
35
  func showRewardedAd(
34
- _ requestId: NSNumber,
36
+ requestId: Double,
35
37
  adUnitId: String,
36
38
  customData: String?,
37
39
  resolve: @escaping RCTPromiseResolveBlock,
38
40
  reject: @escaping RCTPromiseRejectBlock
39
41
  ) {
40
- guard let loadedAd = rewardedAds[requestId.intValue]?.loadedAd else {
42
+ let requestId = Int(requestId)
43
+ guard let loadedAd = rewardedAds[requestId]?.loadedAd else {
41
44
  reject("REWARDED_AD_NOT_LOADED", "Rewarded ad not loaded", nil)
42
45
  return
43
46
  }
@@ -60,25 +63,25 @@ extension DaroMModule {
60
63
  } else {
61
64
  let rewardedAdLoader = DaroRewardedAdLoader(unit: DaroAdUnit(unitId: adUnitId))
62
65
  rewardedAdLoader.listener.onAdClicked = { [weak self] adInfo in
63
- DaroMModule.logger.debug("[DARO] Sample Rewarded Ad clicked")
66
+ DaroRNModule.logger.debug("[DARO] Sample Rewarded Ad clicked")
64
67
  self?.sendEvent(with: .onRewardedAdClickedEvent, body: adInfo?.toBody(requestId: requestId))
65
68
  }
66
69
 
67
70
  rewardedAdLoader.listener.onAdImpression = { [weak self] adInfo in
68
- DaroMModule.logger.debug("[DARO] Sample Rewarded Ad impression")
71
+ DaroRNModule.logger.debug("[DARO] Sample Rewarded Ad impression")
69
72
  self?.rewardedAds[requestId]?.loadedAd = nil
70
73
  self?.sendEvent(with: .onRewardedAdImpressionRecordedEvent, body: adInfo?.toBody(requestId: requestId))
71
74
  }
72
75
 
73
76
  rewardedAdLoader.listener.onAdLoadSuccess = { [weak self] ad, adInfo in
74
- DaroMModule.logger.debug("[DARO] Sample Rewarded Ad loaded")
77
+ DaroRNModule.logger.debug("[DARO] Sample Rewarded Ad loaded")
75
78
  self?.rewardedAds[requestId]?.loadedAd = ad
76
79
  self?.sendEvent(with: .onRewardedAdLoadedEvent, body: adInfo?.toBody(requestId: requestId))
77
80
  self?.setupRewardedListener(for: ad, requestId: requestId)
78
81
  }
79
82
 
80
83
  rewardedAdLoader.listener.onAdLoadFail = { [weak self] error in
81
- DaroMModule.logger.debug("[DARO] Sample Rewarded Ad failed to load: \(error)")
84
+ DaroRNModule.logger.debug("[DARO] Sample Rewarded Ad failed to load: \(error)")
82
85
  self?.sendEvent(with: .onRewardedAdLoadFailedEvent, body: error.toBody(requestId: requestId))
83
86
  }
84
87
  self.rewardedAds[requestId] = RewardedAd(loader: rewardedAdLoader)
@@ -88,22 +91,22 @@ extension DaroMModule {
88
91
 
89
92
  private func setupRewardedListener(for ad: DaroRewardedAd, requestId: Int) {
90
93
  ad.rewardedAdListener.onShown = { [weak self] adInfo in
91
- DaroMModule.logger.debug("[DARO] Sample Rewarded Ad displayed")
94
+ DaroRNModule.logger.debug("[DARO] Sample Rewarded Ad displayed")
92
95
  self?.sendEvent(with: .onRewardedAdDisplayedEvent, body: adInfo?.toBody(requestId: requestId))
93
96
  }
94
97
 
95
98
  ad.rewardedAdListener.onDismiss = { [weak self] adInfo in
96
- DaroMModule.logger.debug("[DARO] Sample Rewarded Ad hidden")
99
+ DaroRNModule.logger.debug("[DARO] Sample Rewarded Ad hidden")
97
100
  self?.sendEvent(with: .onRewardedAdHiddenEvent, body: adInfo?.toBody(requestId: requestId))
98
101
  }
99
102
 
100
103
  ad.rewardedAdListener.onFailedToShow = { [weak self] adInfo, error in
101
- DaroMModule.logger.debug("[DARO] Sample Rewarded Ad failed to display: \(error)")
104
+ DaroRNModule.logger.debug("[DARO] Sample Rewarded Ad failed to display: \(error)")
102
105
  self?.sendEvent(with: .onRewardedAdFailedToDisplayEvent, body: adInfo?.toBody(requestId: requestId))
103
106
  }
104
107
 
105
108
  ad.rewardedAdListener.onEarnedReward = { [weak self] adInfo, rewardItem in
106
- DaroMModule.logger.debug("[DARO] Sample Rewarded Ad received reward")
109
+ DaroRNModule.logger.debug("[DARO] Sample Rewarded Ad received reward")
107
110
  self?.sendEvent(with: .onRewardedAdReceivedRewardEvent, body: rewardItem?.toBody(requestId: requestId, unitId: adInfo?.adUnitId ?? ""))
108
111
  }
109
112
  }
@@ -0,0 +1,88 @@
1
+ #import <React/RCTBridgeModule.h>
2
+ #import <React/RCTEventEmitter.h>
3
+
4
+ #ifdef RCT_NEW_ARCH_ENABLED
5
+ #import <DaroReactNativeSpec/DaroReactNativeSpec.h>
6
+ #endif
7
+
8
+ @interface RCT_EXTERN_MODULE (DaroRNModule, RCTEventEmitter)
9
+
10
+ #pragma mark - Initialization
11
+
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)
15
+
16
+ #pragma mark - Consent
17
+
18
+ RCT_EXTERN_METHOD(setGdpr:(NSString *)status consentString:(NSString *)consentString resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
19
+ RCT_EXTERN_METHOD(setCcpa:(NSString *)status consentString:(NSString *)consentString resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
20
+ RCT_EXTERN_METHOD(setCoppa:(NSString *)status resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
21
+
22
+ #pragma mark - Mediation Debugger
23
+
24
+ RCT_EXTERN_METHOD(showMediationDebugger:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
25
+ RCT_EXTERN_METHOD(showMediationDebuggerFor:(NSString *)mediation resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
26
+
27
+ #pragma mark - QA Surface
28
+
29
+ RCT_EXTERN_METHOD(getSdkVersion:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
30
+ RCT_EXTERN_METHOD(getMediationStatuses:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
31
+ RCT_EXTERN_METHOD(getMediationWeights:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
32
+ RCT_EXTERN_METHOD(getAdapterInventory:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
33
+ RCT_EXTERN_METHOD(getIntegrationKeyInfo:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
34
+
35
+ #pragma mark - Interstitial
36
+
37
+ RCT_EXTERN_METHOD(isInterstitialReady:(double)requestId adUnitId:(NSString *)adUnitId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
38
+ RCT_EXTERN_METHOD(loadInterstitial:(double)requestId adUnitId:(NSString *)adUnitId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
39
+ RCT_EXTERN_METHOD(showInterstitial:(double)requestId adUnitId:(NSString *)adUnitId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
40
+
41
+ #pragma mark - Rewarded
42
+
43
+ RCT_EXTERN_METHOD(isRewardedAdReady:(double)requestId adUnitId:(NSString *)adUnitId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
44
+ RCT_EXTERN_METHOD(loadRewardedAd:(double)requestId adUnitId:(NSString *)adUnitId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
45
+ RCT_EXTERN_METHOD(showRewardedAd:(double)requestId adUnitId:(NSString *)adUnitId customData:(nullable NSString *)customData resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
46
+
47
+ #pragma mark - AppOpen Ad
48
+
49
+ RCT_EXTERN_METHOD(isAppOpenAdReady:(double)requestId adUnitId:(NSString *)adUnitId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
50
+ RCT_EXTERN_METHOD(loadAppOpenAd:(double)requestId adUnitId:(NSString *)adUnitId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
51
+ RCT_EXTERN_METHOD(showAppOpenAd:(double)requestId adUnitId:(NSString *)adUnitId customData:(nullable NSString *)customData resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
52
+
53
+ #pragma mark - Light Popup
54
+
55
+ RCT_EXTERN_METHOD(isLightPopupReady:(double)requestId adUnitId:(NSString *)adUnitId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
56
+ RCT_EXTERN_METHOD(loadLightPopup:(double)requestId adUnitId:(NSString *)adUnitId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
57
+ RCT_EXTERN_METHOD(showLightPopup:(double)requestId adUnitId:(NSString *)adUnitId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
58
+ RCT_EXTERN_METHOD(setLightPopupAdConfiguration:(double)requestId adUnitId:(NSString *)adUnitId configuration:(NSDictionary *)configuration resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
59
+
60
+ + (BOOL)requiresMainQueueSetup {
61
+ return YES;
62
+ }
63
+
64
+ @end
65
+
66
+ #ifdef RCT_NEW_ARCH_ENABLED
67
+
68
+ @interface DaroRNModule (TurboModule) <RCTTurboModule>
69
+ @end
70
+
71
+ @implementation DaroRNModule (TurboModule)
72
+
73
+ - (facebook::react::ModuleConstants<JS::NativeDaroModule::Constants>)getConstants
74
+ {
75
+ NSDictionary *constants = [self constantsToExport] ?: @{};
76
+ return (facebook::react::ModuleConstants<JS::NativeDaroModule::Constants>)
77
+ [_RCTTypedModuleConstants newWithUnsafeDictionary:constants];
78
+ }
79
+
80
+ - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
81
+ (const facebook::react::ObjCTurboModule::InitParams &)params
82
+ {
83
+ return std::make_shared<facebook::react::NativeDaroModuleSpecJSI>(params);
84
+ }
85
+
86
+ @end
87
+
88
+ #endif
@@ -1,11 +1,11 @@
1
1
  import React
2
2
  import os.log
3
3
 
4
- @objc(DaroMModule)
5
- class DaroMModule: RCTEventEmitter {
4
+ @objc(DaroRNModule)
5
+ class DaroRNModule: RCTEventEmitter {
6
6
 
7
7
  // 중앙집중식 로거 - 다른 파일에서도 사용 가능
8
- static let logger = Logger(subsystem: "com.darom.react-native", category: "DaroMModule")
8
+ static let logger = Logger(subsystem: "com.daro.reactnative", category: "DaroRNModule")
9
9
 
10
10
  enum Event: String, CaseIterable {
11
11
 
@@ -90,12 +90,12 @@ class DaroMModule: RCTEventEmitter {
90
90
 
91
91
  // MARK: - SDK 초기화 및 설정
92
92
 
93
- @objc(isInitialized::)
93
+ @objc(isInitialized:reject:)
94
94
  func isInitialized(resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) {
95
95
  resolve(Self.sdkInitialized)
96
96
  }
97
97
 
98
- @objc(initializeSdk::)
98
+ @objc(initializeSdk:reject:)
99
99
  func initializeSdk(
100
100
  resolve: @escaping RCTPromiseResolveBlock,
101
101
  reject: @escaping RCTPromiseRejectBlock
@@ -121,14 +121,14 @@ class DaroMModule: RCTEventEmitter {
121
121
  }
122
122
  }
123
123
 
124
- @objc(showMediationDebugger::)
124
+ @objc(showMediationDebugger:reject:)
125
125
  func showMediationDebugger(resolve: @escaping RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) {
126
126
  DaroMediationDebugger.show {
127
127
  resolve(Void())
128
128
  }
129
129
  }
130
130
 
131
- @objc(setUserId:::)
131
+ @objc(setUserId:resolve:reject:)
132
132
  func setUserId(userId: String, resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) {
133
133
  DaroAds.shared.userId = userId
134
134
  resolve(Void())
@@ -172,7 +172,7 @@ class DaroMModule: RCTEventEmitter {
172
172
  }
173
173
 
174
174
  // MARK: - Constants
175
- extension DaroMModule {
175
+ extension DaroRNModule {
176
176
 
177
177
  // https://reactnative.dev/docs/legacy/native-modules-ios#sending-events-to-javascript
178
178
  // Sending Events to JavaScript
@@ -188,18 +188,32 @@ extension DaroMModule {
188
188
  }
189
189
 
190
190
  // MARK: - Helpers
191
- extension DaroMModule {
191
+ extension DaroRNModule {
192
192
  func sendEvent(with event: Event, body: Any?) {
193
193
  sendEvent(withName: event.rawValue, body: body)
194
194
  }
195
195
  }
196
196
 
197
197
  extension DaroAdInfo {
198
+ // 모듈 경로와 뷰 경로(DaroRNBannerAdView·DaroRNNativeAdView)가 **둘 다 여기를 지난다.**
198
199
  var toBody: [String: Any] {
199
- return [
200
+ var body: [String: Any] = [
200
201
  "adUnitId": self.adUnitId,
201
202
  "latencyMillis": self.latency as Any,
202
203
  ]
204
+ // 없을 때는 키를 넣지 않는다 — [String: Any] 에 nil 을 담으면 JS 에서 null 로
205
+ // 보이고, 타입은 옵셔널이라 undefined 여야 한다.
206
+ //
207
+ // SDK 가 정한 어휘를 **그대로** 넘긴다. 래퍼에서 매핑하지 않는다 — 발행 tarball 이
208
+ // android/ios 를 소스로 싣기 때문에 여기 매핑을 두면 그대로 읽힌다.
209
+ if let mediationPlatform = self.mediationPlatform {
210
+ body["mediationPlatform"] = mediationPlatform
211
+ }
212
+ // 벤더 어휘. 정규화하지 않는다 (AdMob responseInfo.adNetwork / AppLovin networkName).
213
+ if let adNetwork = self.adNetwork {
214
+ body["adNetwork"] = adNetwork
215
+ }
216
+ return body
203
217
  }
204
218
 
205
219
  func toBody(requestId: Int) -> [String: Any] {
@@ -0,0 +1,219 @@
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 *DaroRNFabricCreateSwiftView(NSString *className);
18
+ extern void DaroRNFabricSetValue(UIView *view, NSString *key, id value);
19
+ extern void DaroRNFabricPerformSelector(UIView *view, SEL selector);
20
+ extern void DaroRNFabricPerformSelectorWithObject(UIView *view, SEL selector, id object);
21
+ extern NSString *DaroRNFabricNSStringFromStdString(const std::string &value);
22
+ extern NSDictionary *DaroRNFabricEventBody(NSDictionary *body);
23
+ extern std::string DaroRNFabricEventString(NSDictionary *body, NSString *key);
24
+ extern double DaroRNFabricEventDouble(NSDictionary *body, NSString *key);
25
+ extern int DaroRNFabricEventInt(NSDictionary *body, NSString *key);
26
+
27
+ @interface DaroRNAdBannerViewComponentView : RCTViewComponentView <RCTDaroRNAdBannerViewViewProtocol>
28
+ @end
29
+
30
+ @implementation DaroRNAdBannerViewComponentView {
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 DaroRNAdBannerViewProps>();
43
+ _props = defaultProps;
44
+ [self createBannerView];
45
+ }
46
+
47
+ return self;
48
+ }
49
+
50
+ - (void)createBannerView
51
+ {
52
+ _bannerView = DaroRNFabricCreateSwiftView(@"DaroRNAdBannerView");
53
+ self.contentView = _bannerView;
54
+ [self installEventHandlers];
55
+ }
56
+
57
+ - (void)installEventHandlers
58
+ {
59
+ __weak DaroRNAdBannerViewComponentView *weakSelf = self;
60
+
61
+ RCTDirectEventBlock onAdLoadedEvent = ^(NSDictionary *body) {
62
+ DaroRNAdBannerViewComponentView *strongSelf = weakSelf;
63
+ if (!strongSelf) {
64
+ return;
65
+ }
66
+
67
+ auto eventEmitter = std::static_pointer_cast<const DaroRNAdBannerViewEventEmitter>(strongSelf->_eventEmitter);
68
+ if (!eventEmitter) {
69
+ return;
70
+ }
71
+
72
+ NSDictionary *eventBody = DaroRNFabricEventBody(body);
73
+ eventEmitter->onAdLoadedEvent({
74
+ .adUnitId = DaroRNFabricEventString(eventBody, @"adUnitId"),
75
+ .latencyMillis = DaroRNFabricEventDouble(eventBody, @"latencyMillis"),
76
+ // Fabric 이벤트는 타입 있는 구조체다 — **여기 안 적으면 네이티브가 보내도 JS 에 안 온다.**
77
+ // Android 는 맵을 통째로 넘겨서 안 걸린다. codegen 타입만 넓히면 부족하다.
78
+ .mediationPlatform = DaroRNFabricEventString(eventBody, @"mediationPlatform"),
79
+ .adNetwork = DaroRNFabricEventString(eventBody, @"adNetwork"),
80
+ });
81
+ };
82
+
83
+ RCTDirectEventBlock onAdLoadFailedEvent = ^(NSDictionary *body) {
84
+ DaroRNAdBannerViewComponentView *strongSelf = weakSelf;
85
+ if (!strongSelf) {
86
+ return;
87
+ }
88
+
89
+ auto eventEmitter = std::static_pointer_cast<const DaroRNAdBannerViewEventEmitter>(strongSelf->_eventEmitter);
90
+ if (!eventEmitter) {
91
+ return;
92
+ }
93
+
94
+ NSDictionary *eventBody = DaroRNFabricEventBody(body);
95
+ eventEmitter->onAdLoadFailedEvent({
96
+ .adUnitId = DaroRNFabricEventString(eventBody, @"adUnitId"),
97
+ .code = DaroRNFabricEventInt(eventBody, @"code"),
98
+ .message = DaroRNFabricEventString(eventBody, @"message"),
99
+ .latencyMillis = DaroRNFabricEventDouble(eventBody, @"latencyMillis"),
100
+ });
101
+ };
102
+
103
+ RCTDirectEventBlock onAdClickedEvent = ^(NSDictionary *body) {
104
+ DaroRNAdBannerViewComponentView *strongSelf = weakSelf;
105
+ if (!strongSelf) {
106
+ return;
107
+ }
108
+
109
+ auto eventEmitter = std::static_pointer_cast<const DaroRNAdBannerViewEventEmitter>(strongSelf->_eventEmitter);
110
+ if (!eventEmitter) {
111
+ return;
112
+ }
113
+
114
+ NSDictionary *eventBody = DaroRNFabricEventBody(body);
115
+ eventEmitter->onAdClickedEvent({
116
+ .adUnitId = DaroRNFabricEventString(eventBody, @"adUnitId"),
117
+ .latencyMillis = DaroRNFabricEventDouble(eventBody, @"latencyMillis"),
118
+ // Fabric 이벤트는 타입 있는 구조체다 — **여기 안 적으면 네이티브가 보내도 JS 에 안 온다.**
119
+ // Android 는 맵을 통째로 넘겨서 안 걸린다. codegen 타입만 넓히면 부족하다.
120
+ .mediationPlatform = DaroRNFabricEventString(eventBody, @"mediationPlatform"),
121
+ .adNetwork = DaroRNFabricEventString(eventBody, @"adNetwork"),
122
+ });
123
+ };
124
+
125
+ RCTDirectEventBlock onAdImpressionRecordedEvent = ^(NSDictionary *body) {
126
+ DaroRNAdBannerViewComponentView *strongSelf = weakSelf;
127
+ if (!strongSelf) {
128
+ return;
129
+ }
130
+
131
+ auto eventEmitter = std::static_pointer_cast<const DaroRNAdBannerViewEventEmitter>(strongSelf->_eventEmitter);
132
+ if (!eventEmitter) {
133
+ return;
134
+ }
135
+
136
+ NSDictionary *eventBody = DaroRNFabricEventBody(body);
137
+ eventEmitter->onAdImpressionRecordedEvent({
138
+ .adUnitId = DaroRNFabricEventString(eventBody, @"adUnitId"),
139
+ .latencyMillis = DaroRNFabricEventDouble(eventBody, @"latencyMillis"),
140
+ // Fabric 이벤트는 타입 있는 구조체다 — **여기 안 적으면 네이티브가 보내도 JS 에 안 온다.**
141
+ // Android 는 맵을 통째로 넘겨서 안 걸린다. codegen 타입만 넓히면 부족하다.
142
+ .mediationPlatform = DaroRNFabricEventString(eventBody, @"mediationPlatform"),
143
+ .adNetwork = DaroRNFabricEventString(eventBody, @"adNetwork"),
144
+ });
145
+ };
146
+
147
+ DaroRNFabricSetValue(_bannerView, @"onAdLoadedEvent", onAdLoadedEvent);
148
+ DaroRNFabricSetValue(_bannerView, @"onAdLoadFailedEvent", onAdLoadFailedEvent);
149
+ DaroRNFabricSetValue(_bannerView, @"onAdClickedEvent", onAdClickedEvent);
150
+ DaroRNFabricSetValue(_bannerView, @"onAdImpressionRecordedEvent", onAdImpressionRecordedEvent);
151
+ }
152
+
153
+ + (ComponentDescriptorProvider)componentDescriptorProvider
154
+ {
155
+ return concreteComponentDescriptorProvider<DaroRNAdBannerViewComponentDescriptor>();
156
+ }
157
+
158
+ - (void)updateProps:(const Props::Shared &)props oldProps:(const Props::Shared &)oldProps
159
+ {
160
+ const auto &oldComponentProps = *std::static_pointer_cast<const DaroRNAdBannerViewProps>(_props);
161
+ const auto &newComponentProps = *std::static_pointer_cast<const DaroRNAdBannerViewProps>(props);
162
+ NSMutableArray<NSString *> *changedProps = [NSMutableArray new];
163
+
164
+ if (oldComponentProps.adUnitId != newComponentProps.adUnitId) {
165
+ DaroRNFabricSetValue(_bannerView, @"adUnitId", DaroRNFabricNSStringFromStdString(newComponentProps.adUnitId));
166
+ [changedProps addObject:@"adUnitId"];
167
+ }
168
+
169
+ if (oldComponentProps.adFormat != newComponentProps.adFormat) {
170
+ DaroRNFabricSetValue(_bannerView, @"adFormat", DaroRNFabricNSStringFromStdString(newComponentProps.adFormat));
171
+ [changedProps addObject:@"adFormat"];
172
+ }
173
+
174
+ if (oldComponentProps.loadOnMount != newComponentProps.loadOnMount) {
175
+ DaroRNFabricSetValue(_bannerView, @"loadOnMount", @(newComponentProps.loadOnMount));
176
+ [changedProps addObject:@"loadOnMount"];
177
+ }
178
+
179
+ if (oldComponentProps.isVisible != newComponentProps.isVisible) {
180
+ DaroRNFabricSetValue(_bannerView, @"isVisible", @(newComponentProps.isVisible));
181
+ [changedProps addObject:@"isVisible"];
182
+ }
183
+
184
+ [super updateProps:props oldProps:oldProps];
185
+
186
+ DaroRNFabricPerformSelectorWithObject(_bannerView, NSSelectorFromString(@"applyReactProps:"), changedProps);
187
+ }
188
+
189
+ - (void)loadAd
190
+ {
191
+ DaroRNFabricPerformSelector(_bannerView, NSSelectorFromString(@"loadAd"));
192
+ }
193
+
194
+ - (void)handleCommand:(const NSString *)commandName args:(const NSArray *)args
195
+ {
196
+ RCTDaroRNAdBannerViewHandleCommand(self, commandName, args);
197
+ }
198
+
199
+ - (void)prepareForRecycle
200
+ {
201
+ [super prepareForRecycle];
202
+ DaroRNFabricSetValue(_bannerView, @"onAdLoadedEvent", nil);
203
+ DaroRNFabricSetValue(_bannerView, @"onAdLoadFailedEvent", nil);
204
+ DaroRNFabricSetValue(_bannerView, @"onAdClickedEvent", nil);
205
+ DaroRNFabricSetValue(_bannerView, @"onAdImpressionRecordedEvent", nil);
206
+ DaroRNFabricPerformSelector(_bannerView, NSSelectorFromString(@"prepareForReuse"));
207
+ [self installEventHandlers];
208
+ static const auto defaultProps = std::make_shared<const DaroRNAdBannerViewProps>();
209
+ _props = defaultProps;
210
+ }
211
+
212
+ @end
213
+
214
+ Class<RCTComponentViewProtocol> DaroRNAdBannerViewCls(void)
215
+ {
216
+ return DaroRNAdBannerViewComponentView.class;
217
+ }
218
+
219
+ #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 *DaroRNFabricEventBody(NSDictionary *body)
9
+ {
10
+ return [body isKindOfClass:NSDictionary.class] ? body : @{};
11
+ }
12
+
13
+ std::string DaroRNFabricEventString(NSDictionary *body, NSString *key)
14
+ {
15
+ id value = body[key];
16
+ return [value isKindOfClass:NSString.class] ? std::string([value UTF8String]) : "";
17
+ }
18
+
19
+ double DaroRNFabricEventDouble(NSDictionary *body, NSString *key)
20
+ {
21
+ id value = body[key];
22
+ return [value respondsToSelector:@selector(doubleValue)] ? [value doubleValue] : 0;
23
+ }
24
+
25
+ int DaroRNFabricEventInt(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 *DaroRNFabricSetterNameForKey(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 DaroRNFabricSetValue(UIView *view, NSString *key, id value)
22
+ {
23
+ SEL setter = NSSelectorFromString(DaroRNFabricSetterNameForKey(key));
24
+ if (![view respondsToSelector:setter]) {
25
+ return;
26
+ }
27
+
28
+ [view setValue:value forKey:key];
29
+ }
30
+
31
+ void DaroRNFabricPerformSelector(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 DaroRNFabricPerformSelectorWithObject(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 DaroRNFabricPerformSelectorWithTwoObjects(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 *DaroRNFabricCreateSwiftView(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 *DaroRNFabricNSStringFromStdString(const std::string &value)
76
+ {
77
+ return [NSString stringWithUTF8String:value.c_str()];
78
+ }
79
+
80
+ static id DaroRNFabricNSObjectFromDynamic(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 = DaroRNFabricNSObjectFromDynamic(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 = DaroRNFabricNSObjectFromDynamic(item.first);
107
+ id converted = DaroRNFabricNSObjectFromDynamic(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 DaroRNFabricIdFromDynamic(const folly::dynamic &value)
118
+ {
119
+ id converted = DaroRNFabricNSObjectFromDynamic(value);
120
+ return converted == (id)kCFNull ? nil : converted;
121
+ }
122
+
123
+ #endif