react-native-daro 1.0.0

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 (245) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +47 -0
  3. package/android/build.gradle +99 -0
  4. package/android/gradle.properties +5 -0
  5. package/android/src/main/AndroidManifest.xml +3 -0
  6. package/android/src/main/AndroidManifestNew.xml +7 -0
  7. package/android/src/main/java/com/darom/DaroMAdBannerViewManager.kt +114 -0
  8. package/android/src/main/java/com/darom/DaroMAdNativeViewManager.kt +133 -0
  9. package/android/src/main/java/com/darom/DaroMModule.kt +194 -0
  10. package/android/src/main/java/com/darom/DaroMPackage.kt +21 -0
  11. package/android/src/main/java/com/darom/constants/InternalDaroMBannerSize.kt +23 -0
  12. package/android/src/main/java/com/darom/event/DaroMEvent.kt +57 -0
  13. package/android/src/main/java/com/darom/impl/DaroMBannerViewModuleImpl.kt +10 -0
  14. package/android/src/main/java/com/darom/impl/DaroMInterstitialModuleImpl.kt +113 -0
  15. package/android/src/main/java/com/darom/impl/DaroMLightPopupModuleImpl.kt +149 -0
  16. package/android/src/main/java/com/darom/impl/DaroMRewardedAdModuleImpl.kt +128 -0
  17. package/android/src/main/java/com/darom/util/AdInfoUtil.kt +51 -0
  18. package/android/src/main/java/com/darom/util/EventEmitterUtil.kt +24 -0
  19. package/android/src/main/java/com/darom/view/DaroMAdBannerViewContainer.kt +132 -0
  20. package/android/src/main/java/com/darom/view/DaroMAdNativeViewContainer.kt +372 -0
  21. package/android/src/main/res/layout/layout_activity_transparent.xml +7 -0
  22. package/android/src/main/res/values/styles.xml +11 -0
  23. package/ios/Daro+Extensions.swift +196 -0
  24. package/ios/DaroM-Bridging-Header.h +6 -0
  25. package/ios/DaroMAdBannerViewManager.m +15 -0
  26. package/ios/DaroMAdBannerViewManager.swift +87 -0
  27. package/ios/DaroMModule+AppOpen.swift +98 -0
  28. package/ios/DaroMModule+Interstitial.swift +100 -0
  29. package/ios/DaroMModule+LightPopup.swift +166 -0
  30. package/ios/DaroMModule+Rewarded.swift +118 -0
  31. package/ios/DaroMModule.mm +45 -0
  32. package/ios/DaroMModule.swift +218 -0
  33. package/ios/DaroMNativeAdViewManager.m +26 -0
  34. package/ios/DaroMNativeAdViewManager.swift +291 -0
  35. package/lib/commonjs/AdBannerView.js +115 -0
  36. package/lib/commonjs/AdBannerView.js.map +1 -0
  37. package/lib/commonjs/AppOpenAd.js +92 -0
  38. package/lib/commonjs/AppOpenAd.js.map +1 -0
  39. package/lib/commonjs/ErrorCode.js +11 -0
  40. package/lib/commonjs/ErrorCode.js.map +1 -0
  41. package/lib/commonjs/EventEmitter.js +30 -0
  42. package/lib/commonjs/EventEmitter.js.map +1 -0
  43. package/lib/commonjs/InterstitialAd.js +92 -0
  44. package/lib/commonjs/InterstitialAd.js.map +1 -0
  45. package/lib/commonjs/LightPopupAd.js +135 -0
  46. package/lib/commonjs/LightPopupAd.js.map +1 -0
  47. package/lib/commonjs/RewardedAd.js +105 -0
  48. package/lib/commonjs/RewardedAd.js.map +1 -0
  49. package/lib/commonjs/index.js +126 -0
  50. package/lib/commonjs/index.js.map +1 -0
  51. package/lib/commonjs/nativeAd/NativeAdView.js +103 -0
  52. package/lib/commonjs/nativeAd/NativeAdView.js.map +1 -0
  53. package/lib/commonjs/nativeAd/NativeAdViewComponents.js +189 -0
  54. package/lib/commonjs/nativeAd/NativeAdViewComponents.js.map +1 -0
  55. package/lib/commonjs/nativeAd/NativeAdViewProvider.js +29 -0
  56. package/lib/commonjs/nativeAd/NativeAdViewProvider.js.map +1 -0
  57. package/lib/commonjs/types/AdBannerViewProps.js +6 -0
  58. package/lib/commonjs/types/AdBannerViewProps.js.map +1 -0
  59. package/lib/commonjs/types/AdEvent.js +6 -0
  60. package/lib/commonjs/types/AdEvent.js.map +1 -0
  61. package/lib/commonjs/types/AdInfo.js +6 -0
  62. package/lib/commonjs/types/AdInfo.js.map +1 -0
  63. package/lib/commonjs/types/AdProps.js +6 -0
  64. package/lib/commonjs/types/AdProps.js.map +1 -0
  65. package/lib/commonjs/types/AppOpenAd.js +6 -0
  66. package/lib/commonjs/types/AppOpenAd.js.map +1 -0
  67. package/lib/commonjs/types/DaroMMobileAds.js +2 -0
  68. package/lib/commonjs/types/DaroMMobileAds.js.map +1 -0
  69. package/lib/commonjs/types/FullScreenAd.js +6 -0
  70. package/lib/commonjs/types/FullScreenAd.js.map +1 -0
  71. package/lib/commonjs/types/InterstitialAd.js +6 -0
  72. package/lib/commonjs/types/InterstitialAd.js.map +1 -0
  73. package/lib/commonjs/types/LightPopupAd.js +6 -0
  74. package/lib/commonjs/types/LightPopupAd.js.map +1 -0
  75. package/lib/commonjs/types/NativeAdViewProps.js +6 -0
  76. package/lib/commonjs/types/NativeAdViewProps.js.map +1 -0
  77. package/lib/commonjs/types/RewardedAd.js +6 -0
  78. package/lib/commonjs/types/RewardedAd.js.map +1 -0
  79. package/lib/commonjs/types/index.js +61 -0
  80. package/lib/commonjs/types/index.js.map +1 -0
  81. package/lib/module/AdBannerView.js +111 -0
  82. package/lib/module/AdBannerView.js.map +1 -0
  83. package/lib/module/AppOpenAd.js +88 -0
  84. package/lib/module/AppOpenAd.js.map +1 -0
  85. package/lib/module/ErrorCode.js +7 -0
  86. package/lib/module/ErrorCode.js.map +1 -0
  87. package/lib/module/EventEmitter.js +24 -0
  88. package/lib/module/EventEmitter.js.map +1 -0
  89. package/lib/module/InterstitialAd.js +88 -0
  90. package/lib/module/InterstitialAd.js.map +1 -0
  91. package/lib/module/LightPopupAd.js +130 -0
  92. package/lib/module/LightPopupAd.js.map +1 -0
  93. package/lib/module/RewardedAd.js +101 -0
  94. package/lib/module/RewardedAd.js.map +1 -0
  95. package/lib/module/index.js +30 -0
  96. package/lib/module/index.js.map +1 -0
  97. package/lib/module/nativeAd/NativeAdView.js +99 -0
  98. package/lib/module/nativeAd/NativeAdView.js.map +1 -0
  99. package/lib/module/nativeAd/NativeAdViewComponents.js +179 -0
  100. package/lib/module/nativeAd/NativeAdViewComponents.js.map +1 -0
  101. package/lib/module/nativeAd/NativeAdViewProvider.js +23 -0
  102. package/lib/module/nativeAd/NativeAdViewProvider.js.map +1 -0
  103. package/lib/module/types/AdBannerViewProps.js +4 -0
  104. package/lib/module/types/AdBannerViewProps.js.map +1 -0
  105. package/lib/module/types/AdEvent.js +4 -0
  106. package/lib/module/types/AdEvent.js.map +1 -0
  107. package/lib/module/types/AdInfo.js +4 -0
  108. package/lib/module/types/AdInfo.js.map +1 -0
  109. package/lib/module/types/AdProps.js +4 -0
  110. package/lib/module/types/AdProps.js.map +1 -0
  111. package/lib/module/types/AppOpenAd.js +4 -0
  112. package/lib/module/types/AppOpenAd.js.map +1 -0
  113. package/lib/module/types/DaroMMobileAds.js +2 -0
  114. package/lib/module/types/DaroMMobileAds.js.map +1 -0
  115. package/lib/module/types/FullScreenAd.js +4 -0
  116. package/lib/module/types/FullScreenAd.js.map +1 -0
  117. package/lib/module/types/InterstitialAd.js +4 -0
  118. package/lib/module/types/InterstitialAd.js.map +1 -0
  119. package/lib/module/types/LightPopupAd.js +4 -0
  120. package/lib/module/types/LightPopupAd.js.map +1 -0
  121. package/lib/module/types/NativeAdViewProps.js +4 -0
  122. package/lib/module/types/NativeAdViewProps.js.map +1 -0
  123. package/lib/module/types/RewardedAd.js +4 -0
  124. package/lib/module/types/RewardedAd.js.map +1 -0
  125. package/lib/module/types/index.js +8 -0
  126. package/lib/module/types/index.js.map +1 -0
  127. package/lib/typescript/commonjs/package.json +1 -0
  128. package/lib/typescript/commonjs/src/AdBannerView.d.ts +12 -0
  129. package/lib/typescript/commonjs/src/AdBannerView.d.ts.map +1 -0
  130. package/lib/typescript/commonjs/src/AppOpenAd.d.ts +4 -0
  131. package/lib/typescript/commonjs/src/AppOpenAd.d.ts.map +1 -0
  132. package/lib/typescript/commonjs/src/ErrorCode.d.ts +4 -0
  133. package/lib/typescript/commonjs/src/ErrorCode.d.ts.map +1 -0
  134. package/lib/typescript/commonjs/src/EventEmitter.d.ts +4 -0
  135. package/lib/typescript/commonjs/src/EventEmitter.d.ts.map +1 -0
  136. package/lib/typescript/commonjs/src/InterstitialAd.d.ts +4 -0
  137. package/lib/typescript/commonjs/src/InterstitialAd.d.ts.map +1 -0
  138. package/lib/typescript/commonjs/src/LightPopupAd.d.ts +4 -0
  139. package/lib/typescript/commonjs/src/LightPopupAd.d.ts.map +1 -0
  140. package/lib/typescript/commonjs/src/RewardedAd.d.ts +4 -0
  141. package/lib/typescript/commonjs/src/RewardedAd.d.ts.map +1 -0
  142. package/lib/typescript/commonjs/src/index.d.ts +11 -0
  143. package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
  144. package/lib/typescript/commonjs/src/nativeAd/NativeAdView.d.ts +6 -0
  145. package/lib/typescript/commonjs/src/nativeAd/NativeAdView.d.ts.map +1 -0
  146. package/lib/typescript/commonjs/src/nativeAd/NativeAdViewComponents.d.ts +7 -0
  147. package/lib/typescript/commonjs/src/nativeAd/NativeAdViewComponents.d.ts.map +1 -0
  148. package/lib/typescript/commonjs/src/nativeAd/NativeAdViewProvider.d.ts +14 -0
  149. package/lib/typescript/commonjs/src/nativeAd/NativeAdViewProvider.d.ts.map +1 -0
  150. package/lib/typescript/commonjs/src/types/AdBannerViewProps.d.ts +14 -0
  151. package/lib/typescript/commonjs/src/types/AdBannerViewProps.d.ts.map +1 -0
  152. package/lib/typescript/commonjs/src/types/AdEvent.d.ts +7 -0
  153. package/lib/typescript/commonjs/src/types/AdEvent.d.ts.map +1 -0
  154. package/lib/typescript/commonjs/src/types/AdInfo.d.ts +19 -0
  155. package/lib/typescript/commonjs/src/types/AdInfo.d.ts.map +1 -0
  156. package/lib/typescript/commonjs/src/types/AdProps.d.ts +11 -0
  157. package/lib/typescript/commonjs/src/types/AdProps.d.ts.map +1 -0
  158. package/lib/typescript/commonjs/src/types/AppOpenAd.d.ts +3 -0
  159. package/lib/typescript/commonjs/src/types/AppOpenAd.d.ts.map +1 -0
  160. package/lib/typescript/commonjs/src/types/DaroMMobileAds.d.ts +6 -0
  161. package/lib/typescript/commonjs/src/types/DaroMMobileAds.d.ts.map +1 -0
  162. package/lib/typescript/commonjs/src/types/FullScreenAd.d.ts +21 -0
  163. package/lib/typescript/commonjs/src/types/FullScreenAd.d.ts.map +1 -0
  164. package/lib/typescript/commonjs/src/types/InterstitialAd.d.ts +3 -0
  165. package/lib/typescript/commonjs/src/types/InterstitialAd.d.ts.map +1 -0
  166. package/lib/typescript/commonjs/src/types/LightPopupAd.d.ts +18 -0
  167. package/lib/typescript/commonjs/src/types/LightPopupAd.d.ts.map +1 -0
  168. package/lib/typescript/commonjs/src/types/NativeAdViewProps.d.ts +17 -0
  169. package/lib/typescript/commonjs/src/types/NativeAdViewProps.d.ts.map +1 -0
  170. package/lib/typescript/commonjs/src/types/RewardedAd.d.ts +9 -0
  171. package/lib/typescript/commonjs/src/types/RewardedAd.d.ts.map +1 -0
  172. package/lib/typescript/commonjs/src/types/index.d.ts +6 -0
  173. package/lib/typescript/commonjs/src/types/index.d.ts.map +1 -0
  174. package/lib/typescript/module/package.json +1 -0
  175. package/lib/typescript/module/src/AdBannerView.d.ts +12 -0
  176. package/lib/typescript/module/src/AdBannerView.d.ts.map +1 -0
  177. package/lib/typescript/module/src/AppOpenAd.d.ts +4 -0
  178. package/lib/typescript/module/src/AppOpenAd.d.ts.map +1 -0
  179. package/lib/typescript/module/src/ErrorCode.d.ts +4 -0
  180. package/lib/typescript/module/src/ErrorCode.d.ts.map +1 -0
  181. package/lib/typescript/module/src/EventEmitter.d.ts +4 -0
  182. package/lib/typescript/module/src/EventEmitter.d.ts.map +1 -0
  183. package/lib/typescript/module/src/InterstitialAd.d.ts +4 -0
  184. package/lib/typescript/module/src/InterstitialAd.d.ts.map +1 -0
  185. package/lib/typescript/module/src/LightPopupAd.d.ts +4 -0
  186. package/lib/typescript/module/src/LightPopupAd.d.ts.map +1 -0
  187. package/lib/typescript/module/src/RewardedAd.d.ts +4 -0
  188. package/lib/typescript/module/src/RewardedAd.d.ts.map +1 -0
  189. package/lib/typescript/module/src/index.d.ts +11 -0
  190. package/lib/typescript/module/src/index.d.ts.map +1 -0
  191. package/lib/typescript/module/src/nativeAd/NativeAdView.d.ts +6 -0
  192. package/lib/typescript/module/src/nativeAd/NativeAdView.d.ts.map +1 -0
  193. package/lib/typescript/module/src/nativeAd/NativeAdViewComponents.d.ts +7 -0
  194. package/lib/typescript/module/src/nativeAd/NativeAdViewComponents.d.ts.map +1 -0
  195. package/lib/typescript/module/src/nativeAd/NativeAdViewProvider.d.ts +14 -0
  196. package/lib/typescript/module/src/nativeAd/NativeAdViewProvider.d.ts.map +1 -0
  197. package/lib/typescript/module/src/types/AdBannerViewProps.d.ts +14 -0
  198. package/lib/typescript/module/src/types/AdBannerViewProps.d.ts.map +1 -0
  199. package/lib/typescript/module/src/types/AdEvent.d.ts +7 -0
  200. package/lib/typescript/module/src/types/AdEvent.d.ts.map +1 -0
  201. package/lib/typescript/module/src/types/AdInfo.d.ts +19 -0
  202. package/lib/typescript/module/src/types/AdInfo.d.ts.map +1 -0
  203. package/lib/typescript/module/src/types/AdProps.d.ts +11 -0
  204. package/lib/typescript/module/src/types/AdProps.d.ts.map +1 -0
  205. package/lib/typescript/module/src/types/AppOpenAd.d.ts +3 -0
  206. package/lib/typescript/module/src/types/AppOpenAd.d.ts.map +1 -0
  207. package/lib/typescript/module/src/types/DaroMMobileAds.d.ts +6 -0
  208. package/lib/typescript/module/src/types/DaroMMobileAds.d.ts.map +1 -0
  209. package/lib/typescript/module/src/types/FullScreenAd.d.ts +21 -0
  210. package/lib/typescript/module/src/types/FullScreenAd.d.ts.map +1 -0
  211. package/lib/typescript/module/src/types/InterstitialAd.d.ts +3 -0
  212. package/lib/typescript/module/src/types/InterstitialAd.d.ts.map +1 -0
  213. package/lib/typescript/module/src/types/LightPopupAd.d.ts +18 -0
  214. package/lib/typescript/module/src/types/LightPopupAd.d.ts.map +1 -0
  215. package/lib/typescript/module/src/types/NativeAdViewProps.d.ts +17 -0
  216. package/lib/typescript/module/src/types/NativeAdViewProps.d.ts.map +1 -0
  217. package/lib/typescript/module/src/types/RewardedAd.d.ts +9 -0
  218. package/lib/typescript/module/src/types/RewardedAd.d.ts.map +1 -0
  219. package/lib/typescript/module/src/types/index.d.ts +6 -0
  220. package/lib/typescript/module/src/types/index.d.ts.map +1 -0
  221. package/package.json +185 -0
  222. package/react-native-daro-m.podspec +44 -0
  223. package/src/AdBannerView.tsx +138 -0
  224. package/src/AppOpenAd.ts +113 -0
  225. package/src/ErrorCode.ts +4 -0
  226. package/src/EventEmitter.ts +25 -0
  227. package/src/InterstitialAd.ts +113 -0
  228. package/src/LightPopupAd.ts +161 -0
  229. package/src/RewardedAd.ts +130 -0
  230. package/src/index.tsx +37 -0
  231. package/src/nativeAd/NativeAdView.tsx +124 -0
  232. package/src/nativeAd/NativeAdViewComponents.tsx +239 -0
  233. package/src/nativeAd/NativeAdViewProvider.tsx +32 -0
  234. package/src/types/AdBannerViewProps.ts +15 -0
  235. package/src/types/AdEvent.ts +9 -0
  236. package/src/types/AdInfo.ts +37 -0
  237. package/src/types/AdProps.ts +18 -0
  238. package/src/types/AppOpenAd.ts +3 -0
  239. package/src/types/DaroMMobileAds.ts +8 -0
  240. package/src/types/FullScreenAd.ts +28 -0
  241. package/src/types/InterstitialAd.ts +3 -0
  242. package/src/types/LightPopupAd.ts +19 -0
  243. package/src/types/NativeAdViewProps.ts +18 -0
  244. package/src/types/RewardedAd.ts +15 -0
  245. package/src/types/index.ts +5 -0
@@ -0,0 +1,57 @@
1
+ package com.darom.event
2
+
3
+ internal interface DaroMEvent{
4
+ val value: String
5
+ }
6
+
7
+ internal enum class InterstitialEvent: DaroMEvent {
8
+ ON_INTERSTITIAL_LOADED_EVENT,
9
+ ON_INTERSTITIAL_LOAD_FAILED_EVENT,
10
+ ON_INTERSTITIAL_CLICKED_EVENT,
11
+ ON_INTERSTITIAL_DISPLAYED_EVENT,
12
+ ON_INTERSTITIAL_AD_FAILED_TO_DISPLAY_EVENT,
13
+ ON_INTERSTITIAL_HIDDEN_EVENT,
14
+ ON_INTERSTITIAL_AD_IMPRESSION_RECORDED;
15
+
16
+ override val value: String
17
+ get() = name
18
+ }
19
+
20
+ internal enum class RewardedEvent : DaroMEvent {
21
+ ON_REWARDED_AD_LOADED_EVENT,
22
+ ON_REWARDED_AD_LOAD_FAILED_EVENT,
23
+ ON_REWARDED_AD_CLICKED_EVENT,
24
+ ON_REWARDED_AD_DISPLAYED_EVENT,
25
+ ON_REWARDED_AD_FAILED_TO_DISPLAY_EVENT,
26
+ ON_REWARDED_AD_HIDDEN_EVENT,
27
+ ON_REWARDED_AD_RECEIVED_REWARD_EVENT,
28
+ ON_REWARDED_AD_IMPRESSION_RECORDED;
29
+
30
+ override val value: String
31
+ get() = name
32
+ }
33
+
34
+ internal enum class LightPopupEvent : DaroMEvent {
35
+ ON_LIGHTPOPUP_LOADED_EVENT,
36
+ ON_LIGHTPOPUP_LOAD_FAILED_EVENT,
37
+ ON_LIGHTPOPUP_CLICKED_EVENT,
38
+ ON_LIGHTPOPUP_DISPLAYED_EVENT,
39
+ ON_LIGHTPOPUP_AD_FAILED_TO_DISPLAY_EVENT,
40
+ ON_LIGHTPOPUP_HIDDEN_EVENT,
41
+ ON_LIGHTPOPUP_AD_IMPRESSION_RECORDED;
42
+
43
+ override val value: String
44
+ get() = name
45
+ }
46
+
47
+ internal enum class AdViewEvent(
48
+ val key: String
49
+ ): DaroMEvent {
50
+ ON_AD_CLICKED("onAdClickedEvent"),
51
+ ON_AD_FAILED_TO_LOAD("onAdLoadFailedEvent"),
52
+ ON_AD_IMPRESSION("onAdImpressionRecordedEvent"),
53
+ ON_AD_LOADED("onAdLoadedEvent");
54
+
55
+ override val value: String
56
+ get() = name
57
+ }
@@ -0,0 +1,10 @@
1
+ package com.darom.impl
2
+
3
+ import com.darom.DaroMModule
4
+ import com.facebook.react.bridge.ReactApplicationContext
5
+
6
+ internal class DaroMBannerViewModuleImpl(
7
+ context: ReactApplicationContext,
8
+ ) : DaroMModule.DaroMBannerModule(context) {
9
+
10
+ }
@@ -0,0 +1,113 @@
1
+ package com.darom.impl
2
+
3
+ import android.app.Activity
4
+ import com.darom.DaroMModule
5
+ import com.darom.event.InterstitialEvent
6
+ import com.darom.util.AdInfoUtil
7
+ import com.facebook.react.bridge.Promise
8
+ import com.facebook.react.bridge.ReactApplicationContext
9
+ import droom.daro.core.adunit.DaroInterstitialAdUnit
10
+ import droom.daro.core.listener.DaroInterstitialAdListener
11
+ import droom.daro.core.listener.DaroInterstitialAdLoaderListener
12
+ import droom.daro.core.model.DaroAdDisplayFailError
13
+ import droom.daro.core.model.DaroAdInfo
14
+ import droom.daro.core.model.DaroAdLoadError
15
+ import droom.daro.core.model.DaroInterstitialAd
16
+ import droom.daro.loader.DaroInterstitialAdLoader
17
+
18
+ internal class DaroMInterstitialModuleImpl(
19
+ context: ReactApplicationContext,
20
+ private val getCurrentActivity: () -> Activity?,
21
+ ) : DaroMModule.DaroMInterstitialModule(context) {
22
+
23
+ private val currentActivity: Activity?
24
+ get() = getCurrentActivity()
25
+
26
+ private val loaderMap: MutableMap<String, DaroInterstitialAdLoader> = mutableMapOf()
27
+ private val interstitialAdMap: MutableMap<String, DaroInterstitialAd> = mutableMapOf()
28
+
29
+
30
+ override fun isInterstitialReady(adUnitId: String, promise: Promise) {
31
+ promise.resolve(retrieveAd(adUnitId) != null)
32
+ }
33
+
34
+ override fun loadInterstitial(adUnitId: String) {
35
+ retrieveLoader(adUnitId).load()
36
+ }
37
+
38
+ override fun showInterstitial(adUnitId: String) {
39
+ currentActivity?.let {
40
+ retrieveAd(adUnitId)?.apply {
41
+ setListener(object : DaroInterstitialAdListener {
42
+ override fun onDismiss(ad: DaroAdInfo) {
43
+ sendNativeEvent(
44
+ event = InterstitialEvent.ON_INTERSTITIAL_HIDDEN_EVENT,
45
+ params = AdInfoUtil.getAdInfo(adUnitId, ad),
46
+ )
47
+ }
48
+
49
+ override fun onFailedToShow(ad: DaroAdInfo, error: DaroAdDisplayFailError) {
50
+ sendNativeEvent(
51
+ event = InterstitialEvent.ON_INTERSTITIAL_AD_FAILED_TO_DISPLAY_EVENT,
52
+ params = AdInfoUtil.getAdDisplayFailedInfo(adUnitId, ad, error),
53
+ )
54
+ }
55
+
56
+ override fun onShown(ad: DaroAdInfo) {
57
+ sendNativeEvent(
58
+ event = InterstitialEvent.ON_INTERSTITIAL_DISPLAYED_EVENT,
59
+ params = AdInfoUtil.getAdInfo(adUnitId, ad),
60
+ )
61
+
62
+ interstitialAdMap.remove(adUnitId)
63
+ }
64
+
65
+ override fun onAdClicked(responseInfo: DaroAdInfo) {
66
+ sendNativeEvent(
67
+ event = InterstitialEvent.ON_INTERSTITIAL_CLICKED_EVENT,
68
+ params = AdInfoUtil.getAdInfo(adUnitId, responseInfo),
69
+ )
70
+ }
71
+
72
+ override fun onAdImpression(responseInfo: DaroAdInfo) {
73
+ sendNativeEvent(
74
+ event = InterstitialEvent.ON_INTERSTITIAL_AD_IMPRESSION_RECORDED,
75
+ params = AdInfoUtil.getAdInfo(adUnitId, responseInfo),
76
+ )
77
+ }
78
+ })
79
+
80
+ show(it)
81
+ }
82
+ }
83
+ }
84
+
85
+ private fun retrieveLoader(adUnitId: String): DaroInterstitialAdLoader {
86
+ return loaderMap[adUnitId] ?: DaroInterstitialAdLoader(
87
+ context,
88
+ DaroInterstitialAdUnit(adUnitId, adUnitId)
89
+ ).also {
90
+ loaderMap[adUnitId] = it
91
+ it.setListener(object : DaroInterstitialAdLoaderListener {
92
+ override fun onAdLoadSuccess(ad: DaroInterstitialAd, responseInfo: DaroAdInfo) {
93
+ interstitialAdMap[adUnitId] = ad
94
+ sendNativeEvent(
95
+ event = InterstitialEvent.ON_INTERSTITIAL_LOADED_EVENT,
96
+ params = AdInfoUtil.getAdInfo(adUnitId, responseInfo),
97
+ )
98
+ }
99
+
100
+ override fun onAdLoadFail(err: DaroAdLoadError) {
101
+ sendNativeEvent(
102
+ event = InterstitialEvent.ON_INTERSTITIAL_LOAD_FAILED_EVENT,
103
+ params = AdInfoUtil.getAdLoadFailedInfo(adUnitId, err),
104
+ )
105
+ }
106
+ })
107
+ }
108
+ }
109
+
110
+ private fun retrieveAd(adUnitId: String): DaroInterstitialAd? {
111
+ return interstitialAdMap[adUnitId]
112
+ }
113
+ }
@@ -0,0 +1,149 @@
1
+ package com.darom.impl
2
+
3
+ import android.app.Activity
4
+ import androidx.core.graphics.toColorInt
5
+ import com.darom.DaroMModule
6
+ import com.darom.event.LightPopupEvent
7
+ import com.darom.util.AdInfoUtil
8
+ import com.facebook.react.bridge.Promise
9
+ import com.facebook.react.bridge.ReactApplicationContext
10
+ import com.facebook.react.bridge.ReadableMap
11
+ import droom.daro.core.adunit.DaroLightPopupAdUnit
12
+ import droom.daro.core.listener.DaroLightPopupAdListener
13
+ import droom.daro.core.listener.DaroLightPopupAdLoaderListener
14
+ import droom.daro.core.model.DaroAdDisplayFailError
15
+ import droom.daro.core.model.DaroAdInfo
16
+ import droom.daro.core.model.DaroAdLoadError
17
+ import droom.daro.core.model.DaroLightPopupAd
18
+ import droom.daro.core.model.DaroLightPopupAdOptions
19
+ import droom.daro.loader.DaroLightPopupAdLoader
20
+
21
+ internal class DaroMLightPopupModuleImpl(
22
+ context: ReactApplicationContext,
23
+ private val getCurrentActivity: () -> Activity?,
24
+ ) : DaroMModule.DaroMLightPopupModule(context) {
25
+
26
+ private val currentActivity: Activity?
27
+ get() = getCurrentActivity()
28
+
29
+ private val lightpopupAdMap: MutableMap<String, DaroLightPopupAd> = mutableMapOf()
30
+ private val optionMap: MutableMap<String, DaroLightPopupAdOptions> = mutableMapOf()
31
+ private val loaderMap: MutableMap<String, DaroLightPopupAdLoader> = mutableMapOf()
32
+
33
+ override fun isLightPopupReady(adUnitId: String, promise: Promise) {
34
+ promise.resolve(retrieveAd(adUnitId) != null)
35
+ }
36
+
37
+ override fun loadLightPopup(adUnitId: String) {
38
+ context.runOnUiQueueThread {
39
+ retrieveLoader(adUnitId).load()
40
+ }
41
+ }
42
+
43
+ override fun setLightPopupAdConfiguration(
44
+ adUnitId: String,
45
+ parameterMap: ReadableMap,
46
+ ) {
47
+ val newOption = DaroLightPopupAdOptions().let {
48
+ it.copy(
49
+ backgroundColor = parameterMap.getString("backgroundColor")?.toColorInt()
50
+ ?: it.backgroundColor,
51
+ containerColor = parameterMap.getString("cardViewBackgroundColor")?.toColorInt()
52
+ ?: it.containerColor,
53
+ adMarkLabelTextColor = parameterMap.getString("adMarkLabelTextColor")?.toColorInt()
54
+ ?: it.adMarkLabelTextColor,
55
+ adMarkLabelBackgroundColor = parameterMap.getString("adMarkLabelBackgroundColor")
56
+ ?.toColorInt() ?: it.adMarkLabelBackgroundColor,
57
+ titleColor = parameterMap.getString("titleTextColor")?.toColorInt() ?: it.titleColor,
58
+ bodyColor = parameterMap.getString("bodyTextColor")?.toColorInt() ?: it.bodyColor,
59
+ ctaBackgroundColor = parameterMap.getString("ctaButtonBackgroundColor")?.toColorInt()
60
+ ?: it.ctaBackgroundColor,
61
+ ctaTextColor = parameterMap.getString("ctaButtonTextColor")?.toColorInt()
62
+ ?: it.ctaTextColor,
63
+ closeButtonText = parameterMap.getString("closeButtonText") ?: it.closeButtonText,
64
+ closeButtonColor = parameterMap.getString("closeButtonTextColor")?.toColorInt()
65
+ ?: it.closeButtonColor,
66
+ )
67
+ }
68
+
69
+ optionMap[adUnitId] = newOption
70
+ }
71
+
72
+ override fun showLightPopup(adUnitId: String) {
73
+ currentActivity?.let {
74
+ it.runOnUiThread {
75
+ retrieveAd(adUnitId)?.apply {
76
+ setListener(object : DaroLightPopupAdListener {
77
+ override fun onDismiss(ad: DaroAdInfo) {
78
+ sendNativeEvent(
79
+ event = LightPopupEvent.ON_LIGHTPOPUP_HIDDEN_EVENT,
80
+ params = AdInfoUtil.getAdInfo(adUnitId, ad),
81
+ )
82
+ }
83
+
84
+ override fun onFailedToShow(ad: DaroAdInfo, error: DaroAdDisplayFailError) {
85
+ sendNativeEvent(
86
+ event = LightPopupEvent.ON_LIGHTPOPUP_AD_FAILED_TO_DISPLAY_EVENT,
87
+ params = AdInfoUtil.getAdDisplayFailedInfo(adUnitId, ad, error),
88
+ )
89
+ }
90
+
91
+ override fun onShown(ad: DaroAdInfo) {
92
+ sendNativeEvent(
93
+ event = LightPopupEvent.ON_LIGHTPOPUP_DISPLAYED_EVENT,
94
+ params = AdInfoUtil.getAdInfo(adUnitId, ad),
95
+ )
96
+
97
+ lightpopupAdMap.remove(adUnitId)
98
+ }
99
+
100
+ override fun onAdClicked(responseInfo: DaroAdInfo) {
101
+ sendNativeEvent(
102
+ event = LightPopupEvent.ON_LIGHTPOPUP_CLICKED_EVENT,
103
+ params = AdInfoUtil.getAdInfo(adUnitId, responseInfo),
104
+ )
105
+ }
106
+
107
+ override fun onAdImpression(responseInfo: DaroAdInfo) {
108
+ sendNativeEvent(
109
+ event = LightPopupEvent.ON_LIGHTPOPUP_AD_IMPRESSION_RECORDED,
110
+ params = AdInfoUtil.getAdInfo(adUnitId, responseInfo),
111
+ )
112
+ }
113
+ })
114
+
115
+ show(it)
116
+ }
117
+ }
118
+ }
119
+ }
120
+
121
+ private fun retrieveLoader(adUnitId: String): DaroLightPopupAdLoader {
122
+ return loaderMap[adUnitId] ?: DaroLightPopupAdLoader(
123
+ context,
124
+ DaroLightPopupAdUnit(adUnitId, adUnitId, optionMap[adUnitId] ?: DaroLightPopupAdOptions())
125
+ ).also {
126
+ loaderMap[adUnitId] = it
127
+ it.setListener(object : DaroLightPopupAdLoaderListener {
128
+ override fun onAdLoadSuccess(ad: DaroLightPopupAd, responseInfo: DaroAdInfo) {
129
+ lightpopupAdMap[adUnitId] = ad
130
+ sendNativeEvent(
131
+ event = LightPopupEvent.ON_LIGHTPOPUP_LOADED_EVENT,
132
+ params = AdInfoUtil.getAdInfo(adUnitId, responseInfo),
133
+ )
134
+ }
135
+
136
+ override fun onAdLoadFail(err: DaroAdLoadError) {
137
+ sendNativeEvent(
138
+ event = LightPopupEvent.ON_LIGHTPOPUP_LOAD_FAILED_EVENT,
139
+ params = AdInfoUtil.getAdLoadFailedInfo(adUnitId, err),
140
+ )
141
+ }
142
+ })
143
+ }
144
+ }
145
+
146
+ private fun retrieveAd(adUnitId: String): DaroLightPopupAd? {
147
+ return lightpopupAdMap[adUnitId]
148
+ }
149
+ }
@@ -0,0 +1,128 @@
1
+ package com.darom.impl
2
+
3
+ import android.app.Activity
4
+ import com.darom.DaroMModule
5
+ import com.darom.event.RewardedEvent
6
+ import com.darom.util.AdInfoUtil
7
+ import com.facebook.react.bridge.Promise
8
+ import com.facebook.react.bridge.ReactApplicationContext
9
+ import droom.daro.core.adunit.DaroRewardedAdUnit
10
+ import droom.daro.core.listener.DaroRewardedAdListener
11
+ import droom.daro.core.listener.DaroRewardedAdLoaderListener
12
+ import droom.daro.core.model.DaroAdDisplayFailError
13
+ import droom.daro.core.model.DaroAdInfo
14
+ import droom.daro.core.model.DaroAdLoadError
15
+ import droom.daro.core.model.DaroRewardedAd
16
+ import droom.daro.loader.DaroRewardedAdLoader
17
+
18
+ internal class DaroMRewardedAdModuleImpl(
19
+ context: ReactApplicationContext,
20
+ private val getCurrentActivity: () -> Activity?,
21
+ ) : DaroMModule.DaroMRewardedModule(context) {
22
+
23
+ private val currentActivity: Activity?
24
+ get() = getCurrentActivity()
25
+
26
+ private val rewardedAdMap: MutableMap<String, DaroRewardedAd> = mutableMapOf()
27
+ private val loaderMap: MutableMap<String, DaroRewardedAdLoader> = mutableMapOf()
28
+
29
+ override fun isRewardedAdReady(adUnitId: String, promise: Promise) {
30
+ promise.resolve(retrieveAd(adUnitId) != null)
31
+ }
32
+
33
+ override fun loadRewardedAd(adUnitId: String) {
34
+ retrieveLoader(adUnitId).load()
35
+ }
36
+
37
+ override fun showRewardedAd(adUnitId: String, customData: String?) {
38
+ currentActivity?.let { activity ->
39
+ retrieveAd(adUnitId)?.apply {
40
+ setListener(object : DaroRewardedAdListener {
41
+ override fun onAdImpression(adInfo: DaroAdInfo) {
42
+ super.onAdImpression(adInfo)
43
+ }
44
+
45
+ override fun onAdClicked(adInfo: DaroAdInfo) {
46
+ super.onAdClicked(adInfo)
47
+ }
48
+
49
+ override fun onDismiss(adInfo: DaroAdInfo) {
50
+ sendNativeEvent(
51
+ event = RewardedEvent.ON_REWARDED_AD_HIDDEN_EVENT,
52
+ params = AdInfoUtil.getAdInfo(adUnitId, adInfo),
53
+ )
54
+ }
55
+
56
+ override fun onEarnedReward(
57
+ adInfo: DaroAdInfo,
58
+ rewardItem: DaroRewardedAd.DaroRewardedItem,
59
+ ) {
60
+ sendNativeEvent(
61
+ event = RewardedEvent.ON_REWARDED_AD_RECEIVED_REWARD_EVENT,
62
+ params = AdInfoUtil.getRewardInfo(adUnitId, rewardItem),
63
+ )
64
+ }
65
+
66
+ override fun onFailedToShow(
67
+ adInfo: DaroAdInfo,
68
+ error: DaroAdDisplayFailError,
69
+ ) {
70
+ sendNativeEvent(
71
+ event = RewardedEvent.ON_REWARDED_AD_FAILED_TO_DISPLAY_EVENT,
72
+ params = AdInfoUtil.getAdDisplayFailedInfo(adUnitId, adInfo, error),
73
+ )
74
+ }
75
+
76
+ override fun onShown(adInfo: DaroAdInfo) {
77
+ sendNativeEvent(
78
+ event = RewardedEvent.ON_REWARDED_AD_DISPLAYED_EVENT,
79
+ params = AdInfoUtil.getAdInfo(adUnitId, adInfo),
80
+ )
81
+
82
+ rewardedAdMap.remove(adUnitId)
83
+ }
84
+ })
85
+
86
+ customData?.let { it -> setCustomData(it) }
87
+ activity.runOnUiThread {
88
+ show(activity)
89
+ }
90
+ }
91
+ }
92
+ }
93
+
94
+ private fun retrieveLoader(adUnitId: String): DaroRewardedAdLoader {
95
+ return loaderMap[adUnitId] ?: DaroRewardedAdLoader(
96
+ context,
97
+ DaroRewardedAdUnit(adUnitId, adUnitId)
98
+ ).also {
99
+ loaderMap[adUnitId] = it
100
+ it.setListener(
101
+ object : DaroRewardedAdLoaderListener {
102
+ override fun onAdLoadFail(err: DaroAdLoadError) {
103
+ sendNativeEvent(
104
+ event = RewardedEvent.ON_REWARDED_AD_LOAD_FAILED_EVENT,
105
+ params = AdInfoUtil.getAdLoadFailedInfo(adUnitId, err),
106
+ )
107
+ }
108
+
109
+ override fun onAdLoadSuccess(
110
+ ad: DaroRewardedAd,
111
+ adInfo: DaroAdInfo,
112
+ ) {
113
+ rewardedAdMap[adUnitId] = ad
114
+
115
+ sendNativeEvent(
116
+ event = RewardedEvent.ON_REWARDED_AD_LOADED_EVENT,
117
+ params = AdInfoUtil.getAdInfo(adUnitId, adInfo),
118
+ )
119
+ }
120
+ }
121
+ )
122
+ }
123
+ }
124
+
125
+ private fun retrieveAd(adUnitId: String): DaroRewardedAd? {
126
+ return rewardedAdMap[adUnitId]
127
+ }
128
+ }
@@ -0,0 +1,51 @@
1
+ package com.darom.util
2
+
3
+ import com.facebook.react.bridge.Arguments
4
+ import com.facebook.react.bridge.WritableMap
5
+ import droom.daro.core.model.DaroAdDisplayFailError
6
+ import droom.daro.core.model.DaroAdInfo
7
+ import droom.daro.core.model.DaroAdLoadError
8
+ import droom.daro.core.model.DaroRewardedAd
9
+
10
+ internal object AdInfoUtil {
11
+ fun getAdInfo(adUnitId: String, ad: DaroAdInfo): WritableMap {
12
+ val adInfo = Arguments.createMap()
13
+ adInfo.putString("adUnitId", adUnitId)
14
+ adInfo.putInt("latencyMillis", ad.latency)
15
+
16
+ return adInfo
17
+ }
18
+
19
+ fun getAdLoadFailedInfo(adUnitId: String?, error: DaroAdLoadError?): WritableMap {
20
+ val errInfo = Arguments.createMap()
21
+ errInfo.putString("adUnitId", adUnitId)
22
+
23
+ if (error != null) {
24
+ errInfo.putInt("code", error.code)
25
+ errInfo.putString("message", error.message)
26
+ errInfo.putInt("latencyMillis", error.latency)
27
+ } else {
28
+ errInfo.putInt("code", -1)
29
+ }
30
+
31
+ return errInfo
32
+ }
33
+
34
+ fun getAdDisplayFailedInfo(adUnitId: String, ad: DaroAdInfo, error: DaroAdDisplayFailError): WritableMap {
35
+ val info = getAdInfo(adUnitId, ad)
36
+
37
+ info.putString("message", error.message)
38
+
39
+ return info
40
+ }
41
+
42
+ fun getRewardInfo(adUnitId: String, reward: DaroRewardedAd.DaroRewardedItem): WritableMap {
43
+ val adInfo = Arguments.createMap()
44
+
45
+ adInfo.putString("adUnitId", adUnitId)
46
+ adInfo.putString("rewardLabel", reward.type)
47
+ adInfo.putInt("rewardAmount", reward.amount)
48
+
49
+ return adInfo
50
+ }
51
+ }
@@ -0,0 +1,24 @@
1
+ package com.darom.util
2
+
3
+ import android.view.View
4
+ import com.darom.event.DaroMEvent
5
+ import com.facebook.react.bridge.ReactContext
6
+ import com.facebook.react.bridge.WritableMap
7
+ import com.facebook.react.modules.core.DeviceEventManagerModule
8
+ import com.facebook.react.uimanager.events.RCTEventEmitter
9
+
10
+ internal object EventEmitterUtil {
11
+ // React Native Bridge
12
+ fun sendReactNativeEvent(reactContext: ReactContext, event: DaroMEvent, params: WritableMap?) {
13
+ reactContext
14
+ .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
15
+ .emit(event.value, params)
16
+ }
17
+
18
+ fun View.sendNativeViewEvent(reactContext: ReactContext, event: DaroMEvent, params: WritableMap?) {
19
+ reactContext
20
+ .getJSModule(RCTEventEmitter::class.java)
21
+ .receiveEvent(id, event.value, params)
22
+ }
23
+ }
24
+
@@ -0,0 +1,132 @@
1
+ package com.darom.view
2
+
3
+ import android.annotation.SuppressLint
4
+ import androidx.core.view.children
5
+ import com.darom.event.AdViewEvent
6
+ import com.darom.util.AdInfoUtil
7
+ import com.darom.util.EventEmitterUtil.sendNativeViewEvent
8
+ import com.facebook.react.bridge.ReactContext
9
+ import com.facebook.react.views.view.ReactViewGroup
10
+ import droom.daro.core.adunit.DaroBannerAdUnit
11
+ import droom.daro.core.model.DaroAdInfo
12
+ import droom.daro.core.model.DaroAdLoadError
13
+ import droom.daro.core.model.DaroBannerSize
14
+ import droom.daro.core.model.DaroViewAd
15
+ import droom.daro.view.DaroAdViewListener
16
+ import droom.daro.view.DaroBannerAdView
17
+
18
+ @SuppressLint("ViewConstructor")
19
+ class DaroMAdBannerViewContainer(val context: ReactContext) : ReactViewGroup(context),
20
+ DaroAdViewListener {
21
+
22
+ private var adView: DaroBannerAdView? = null
23
+
24
+ internal var adUnitId: String = ""
25
+
26
+ internal var adSize: DaroBannerSize? = null
27
+
28
+ internal var loadOnMount: Boolean = true
29
+
30
+ fun loadAd() {
31
+ (adView ?: buildAdView())?.apply {
32
+ adView = this
33
+
34
+ if (this.parent == null) {
35
+ this@DaroMAdBannerViewContainer.addView(this)
36
+ }
37
+
38
+ loadAd()
39
+ }
40
+ }
41
+
42
+ private fun buildAdView(): DaroBannerAdView? {
43
+ if (adUnitId.isEmpty() || adSize == null) {
44
+ return null
45
+ }
46
+
47
+ return DaroBannerAdView(
48
+ context,
49
+ DaroBannerAdUnit(
50
+ key = adUnitId,
51
+ placement = adUnitId,
52
+ bannerSize = adSize!!,
53
+ )
54
+ ).also { view ->
55
+ view.setListener(this)
56
+ }
57
+ }
58
+
59
+ fun destroy() {
60
+ adView?.destroy()
61
+ }
62
+
63
+ override fun onAdClicked(adInfo: DaroAdInfo) {
64
+ sendNativeViewEvent(
65
+ reactContext = context,
66
+ event = AdViewEvent.ON_AD_CLICKED,
67
+ params = AdInfoUtil.getAdInfo(adUnitId, adInfo)
68
+ )
69
+ }
70
+
71
+ override fun onAdImpression(adInfo: DaroAdInfo) {
72
+ sendNativeViewEvent(
73
+ reactContext = context,
74
+ event = AdViewEvent.ON_AD_IMPRESSION,
75
+ params = AdInfoUtil.getAdInfo(adUnitId, adInfo),
76
+ )
77
+ }
78
+
79
+ override fun onAdLoadFail(err: DaroAdLoadError) {
80
+ sendNativeViewEvent(
81
+ reactContext = context,
82
+ event = AdViewEvent.ON_AD_FAILED_TO_LOAD,
83
+ params = AdInfoUtil.getAdLoadFailedInfo(adUnitId, err),
84
+ )
85
+ }
86
+
87
+ override fun onAdLoadSuccess(
88
+ ad: DaroViewAd,
89
+ adInfo: DaroAdInfo,
90
+ ) {
91
+ sendNativeViewEvent(
92
+ reactContext = context,
93
+ event = AdViewEvent.ON_AD_LOADED,
94
+ params = AdInfoUtil.getAdInfo(adUnitId, adInfo),
95
+ )
96
+
97
+ adView?.children?.first()?.let {
98
+ it.measure(
99
+ MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
100
+ MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)
101
+ )
102
+
103
+ it.layout(0, 0, width, height)
104
+ it.requestLayout()
105
+ adView!!.requestLayout()
106
+ }
107
+ }
108
+
109
+ override fun requestLayout() {
110
+ super.requestLayout()
111
+
112
+ // https://stackoverflow.com/a/39838774/5477988
113
+ // This is required to ensure ad refreshes render correctly in RN Android due to known issue
114
+ // where `getWidth()` and `getHeight()` return 0 on attach
115
+ try {
116
+ adView?.measure(
117
+ MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
118
+ MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)
119
+ )
120
+
121
+ adView?.layout(0, 0, width, height)
122
+ } catch (_: Exception) {
123
+ // Ignore
124
+ }
125
+ }
126
+
127
+ fun onSetProps() {
128
+ if (loadOnMount) {
129
+ loadAd()
130
+ }
131
+ }
132
+ }