@vynix-org/react-native-ads-sdk 0.1.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 (128) hide show
  1. package/AdsSdk.podspec +52 -0
  2. package/LICENSE +20 -0
  3. package/README.md +95 -0
  4. package/android/build.gradle +108 -0
  5. package/android/gradle.properties +5 -0
  6. package/android/src/main/AndroidManifest.xml +5 -0
  7. package/android/src/main/java/com/adssdk/AdsSdkModule.kt +23 -0
  8. package/android/src/main/java/com/adssdk/AdsSdkPackage.kt +33 -0
  9. package/ios/AdsSdk.h +5 -0
  10. package/ios/AdsSdk.mm +18 -0
  11. package/lib/module/ads-manager/AppOpenAdsManager.js +131 -0
  12. package/lib/module/ads-manager/AppOpenAdsManager.js.map +1 -0
  13. package/lib/module/ads-manager/GoogleMobileAdsManager.js +62 -0
  14. package/lib/module/ads-manager/GoogleMobileAdsManager.js.map +1 -0
  15. package/lib/module/ads-manager/InterstitialAdsManager.js +291 -0
  16. package/lib/module/ads-manager/InterstitialAdsManager.js.map +1 -0
  17. package/lib/module/ads-manager/NativeAdsManager.js +405 -0
  18. package/lib/module/ads-manager/NativeAdsManager.js.map +1 -0
  19. package/lib/module/ads-manager/RewardedAdsManager.js +328 -0
  20. package/lib/module/ads-manager/RewardedAdsManager.js.map +1 -0
  21. package/lib/module/ads-manager/RewardedInterstitialAdsManager.js +328 -0
  22. package/lib/module/ads-manager/RewardedInterstitialAdsManager.js.map +1 -0
  23. package/lib/module/components/BannerAdComponent.js +159 -0
  24. package/lib/module/components/BannerAdComponent.js.map +1 -0
  25. package/lib/module/components/FullscreenStyles.js +162 -0
  26. package/lib/module/components/FullscreenStyles.js.map +1 -0
  27. package/lib/module/components/NativeAdComponent.js +172 -0
  28. package/lib/module/components/NativeAdComponent.js.map +1 -0
  29. package/lib/module/components/NativeAdFullscreenComponent.js +205 -0
  30. package/lib/module/components/NativeAdFullscreenComponent.js.map +1 -0
  31. package/lib/module/components/NativeStyles.js +143 -0
  32. package/lib/module/components/NativeStyles.js.map +1 -0
  33. package/lib/module/event/custom-event.js +29 -0
  34. package/lib/module/event/custom-event.js.map +1 -0
  35. package/lib/module/hook/useAppOpenAd.js +138 -0
  36. package/lib/module/hook/useAppOpenAd.js.map +1 -0
  37. package/lib/module/hook/useInterstitialAd.js +157 -0
  38. package/lib/module/hook/useInterstitialAd.js.map +1 -0
  39. package/lib/module/hook/useNativeAd.js +147 -0
  40. package/lib/module/hook/useNativeAd.js.map +1 -0
  41. package/lib/module/hook/useRewardedAd.js +166 -0
  42. package/lib/module/hook/useRewardedAd.js.map +1 -0
  43. package/lib/module/hook/useRewardedInterstitialAd.js +166 -0
  44. package/lib/module/hook/useRewardedInterstitialAd.js.map +1 -0
  45. package/lib/module/index.js +14 -0
  46. package/lib/module/index.js.map +1 -0
  47. package/lib/module/package.json +1 -0
  48. package/lib/module/stores/interstitial-ads-store.js +205 -0
  49. package/lib/module/stores/interstitial-ads-store.js.map +1 -0
  50. package/lib/module/stores/native-ads-store.js +204 -0
  51. package/lib/module/stores/native-ads-store.js.map +1 -0
  52. package/lib/module/stores/rewarded-ads-store.js +216 -0
  53. package/lib/module/stores/rewarded-ads-store.js.map +1 -0
  54. package/lib/module/stores/rewarded-interstitial-ads-store.js +216 -0
  55. package/lib/module/stores/rewarded-interstitial-ads-store.js.map +1 -0
  56. package/lib/module/types/ads-types.js +25 -0
  57. package/lib/module/types/ads-types.js.map +1 -0
  58. package/lib/typescript/package.json +1 -0
  59. package/lib/typescript/src/ads-manager/AppOpenAdsManager.d.ts +38 -0
  60. package/lib/typescript/src/ads-manager/AppOpenAdsManager.d.ts.map +1 -0
  61. package/lib/typescript/src/ads-manager/GoogleMobileAdsManager.d.ts +22 -0
  62. package/lib/typescript/src/ads-manager/GoogleMobileAdsManager.d.ts.map +1 -0
  63. package/lib/typescript/src/ads-manager/InterstitialAdsManager.d.ts +22 -0
  64. package/lib/typescript/src/ads-manager/InterstitialAdsManager.d.ts.map +1 -0
  65. package/lib/typescript/src/ads-manager/NativeAdsManager.d.ts +59 -0
  66. package/lib/typescript/src/ads-manager/NativeAdsManager.d.ts.map +1 -0
  67. package/lib/typescript/src/ads-manager/RewardedAdsManager.d.ts +25 -0
  68. package/lib/typescript/src/ads-manager/RewardedAdsManager.d.ts.map +1 -0
  69. package/lib/typescript/src/ads-manager/RewardedInterstitialAdsManager.d.ts +25 -0
  70. package/lib/typescript/src/ads-manager/RewardedInterstitialAdsManager.d.ts.map +1 -0
  71. package/lib/typescript/src/components/BannerAdComponent.d.ts +22 -0
  72. package/lib/typescript/src/components/BannerAdComponent.d.ts.map +1 -0
  73. package/lib/typescript/src/components/FullscreenStyles.d.ts +155 -0
  74. package/lib/typescript/src/components/FullscreenStyles.d.ts.map +1 -0
  75. package/lib/typescript/src/components/NativeAdComponent.d.ts +24 -0
  76. package/lib/typescript/src/components/NativeAdComponent.d.ts.map +1 -0
  77. package/lib/typescript/src/components/NativeAdFullscreenComponent.d.ts +26 -0
  78. package/lib/typescript/src/components/NativeAdFullscreenComponent.d.ts.map +1 -0
  79. package/lib/typescript/src/components/NativeStyles.d.ts +139 -0
  80. package/lib/typescript/src/components/NativeStyles.d.ts.map +1 -0
  81. package/lib/typescript/src/event/custom-event.d.ts +8 -0
  82. package/lib/typescript/src/event/custom-event.d.ts.map +1 -0
  83. package/lib/typescript/src/hook/useAppOpenAd.d.ts +19 -0
  84. package/lib/typescript/src/hook/useAppOpenAd.d.ts.map +1 -0
  85. package/lib/typescript/src/hook/useInterstitialAd.d.ts +20 -0
  86. package/lib/typescript/src/hook/useInterstitialAd.d.ts.map +1 -0
  87. package/lib/typescript/src/hook/useNativeAd.d.ts +20 -0
  88. package/lib/typescript/src/hook/useNativeAd.d.ts.map +1 -0
  89. package/lib/typescript/src/hook/useRewardedAd.d.ts +27 -0
  90. package/lib/typescript/src/hook/useRewardedAd.d.ts.map +1 -0
  91. package/lib/typescript/src/hook/useRewardedInterstitialAd.d.ts +27 -0
  92. package/lib/typescript/src/hook/useRewardedInterstitialAd.d.ts.map +1 -0
  93. package/lib/typescript/src/index.d.ts +10 -0
  94. package/lib/typescript/src/index.d.ts.map +1 -0
  95. package/lib/typescript/src/stores/interstitial-ads-store.d.ts +36 -0
  96. package/lib/typescript/src/stores/interstitial-ads-store.d.ts.map +1 -0
  97. package/lib/typescript/src/stores/native-ads-store.d.ts +36 -0
  98. package/lib/typescript/src/stores/native-ads-store.d.ts.map +1 -0
  99. package/lib/typescript/src/stores/rewarded-ads-store.d.ts +39 -0
  100. package/lib/typescript/src/stores/rewarded-ads-store.d.ts.map +1 -0
  101. package/lib/typescript/src/stores/rewarded-interstitial-ads-store.d.ts +39 -0
  102. package/lib/typescript/src/stores/rewarded-interstitial-ads-store.d.ts.map +1 -0
  103. package/lib/typescript/src/types/ads-types.d.ts +164 -0
  104. package/lib/typescript/src/types/ads-types.d.ts.map +1 -0
  105. package/package.json +177 -0
  106. package/src/ads-manager/AppOpenAdsManager.ts +155 -0
  107. package/src/ads-manager/GoogleMobileAdsManager.ts +68 -0
  108. package/src/ads-manager/InterstitialAdsManager.ts +371 -0
  109. package/src/ads-manager/NativeAdsManager.ts +445 -0
  110. package/src/ads-manager/RewardedAdsManager.ts +383 -0
  111. package/src/ads-manager/RewardedInterstitialAdsManager.ts +410 -0
  112. package/src/components/BannerAdComponent.tsx +205 -0
  113. package/src/components/FullscreenStyles.ts +158 -0
  114. package/src/components/NativeAdComponent.tsx +208 -0
  115. package/src/components/NativeAdFullscreenComponent.tsx +261 -0
  116. package/src/components/NativeStyles.ts +141 -0
  117. package/src/event/custom-event.ts +30 -0
  118. package/src/hook/useAppOpenAd.ts +161 -0
  119. package/src/hook/useInterstitialAd.ts +195 -0
  120. package/src/hook/useNativeAd.ts +173 -0
  121. package/src/hook/useRewardedAd.ts +205 -0
  122. package/src/hook/useRewardedInterstitialAd.ts +212 -0
  123. package/src/index.tsx +33 -0
  124. package/src/stores/interstitial-ads-store.ts +287 -0
  125. package/src/stores/native-ads-store.ts +272 -0
  126. package/src/stores/rewarded-ads-store.ts +290 -0
  127. package/src/stores/rewarded-interstitial-ads-store.ts +318 -0
  128. package/src/types/ads-types.ts +239 -0
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+
3
+ import { useEffect, useCallback } from 'react';
4
+ import { useInterstitialAdStore } from "../stores/interstitial-ads-store.js";
5
+ import { AdStatus } from "../types/ads-types.js";
6
+ import { interstitialAdsManager } from "../ads-manager/InterstitialAdsManager.js";
7
+
8
+ // Merge InterstitialAdConfig với UseInterstitialAdOptions
9
+
10
+ export const useInterstitialAd = config => {
11
+ const {
12
+ adKey,
13
+ adId,
14
+ timeout,
15
+ maxRetries,
16
+ adHighpriorityId,
17
+ showOnAppStateChange,
18
+ // UseInterstitialAdOptions fields
19
+ autoLoad = false,
20
+ onLoad,
21
+ onDisplay,
22
+ onError,
23
+ onClosed,
24
+ onOpened,
25
+ onClicked
26
+ } = config;
27
+
28
+ // Zustand selectors
29
+ const ad = useInterstitialAdStore(state => state.getAd(adKey));
30
+ const isLoading = useInterstitialAdStore(state => state.isLoading(adKey));
31
+ const error = useInterstitialAdStore(state => state.getError(adKey));
32
+ const isUsingHighPriority = useInterstitialAdStore(state => state.isUsingHighPriority(adKey));
33
+ const hasTriedHighPriority = useInterstitialAdStore(state => state.hasTriedHighPriority(adKey));
34
+
35
+ // Zustand actions
36
+ const preloadAd = useInterstitialAdStore(state => state.preloadAd);
37
+ const loadAd = useInterstitialAdStore(state => state.loadAd);
38
+ const displayAd = useInterstitialAdStore(state => state.displayAd);
39
+ const removeAd = useInterstitialAdStore(state => state.removeAd);
40
+ const refreshAd = useInterstitialAdStore(state => state.refreshAd);
41
+
42
+ // Memoized callbacks
43
+ const handleLoadAd = useCallback(async customConfig => {
44
+ const finalConfig = {
45
+ adKey,
46
+ adId,
47
+ showOnAppStateChange,
48
+ timeout,
49
+ maxRetries,
50
+ adHighpriorityId,
51
+ ...customConfig
52
+ };
53
+ await loadAd(finalConfig);
54
+ }, [adKey, adId, loadAd, showOnAppStateChange, timeout, maxRetries, adHighpriorityId]);
55
+ const handlePreloadAd = useCallback(async customConfig => {
56
+ const finalConfig = {
57
+ adKey,
58
+ adId,
59
+ showOnAppStateChange,
60
+ timeout,
61
+ maxRetries,
62
+ adHighpriorityId,
63
+ ...customConfig
64
+ };
65
+ await preloadAd(finalConfig);
66
+ }, [adKey, adId, preloadAd, showOnAppStateChange, timeout, maxRetries, adHighpriorityId]);
67
+ const handleDisplayAd = useCallback(async () => {
68
+ const displayedAd = await displayAd(adKey);
69
+ if (displayedAd && onDisplay) {
70
+ onDisplay(displayedAd);
71
+ }
72
+ return displayedAd;
73
+ }, [adKey, displayAd, onDisplay]);
74
+ const handleRemoveAd = useCallback(() => {
75
+ removeAd(adKey);
76
+ }, [adKey, removeAd]);
77
+ const handleRefreshAd = useCallback(async () => {
78
+ await refreshAd(adKey);
79
+ }, [adKey, refreshAd]);
80
+
81
+ // Auto load effect
82
+ useEffect(() => {
83
+ if (autoLoad && !ad) {
84
+ handleLoadAd();
85
+ }
86
+ }, [autoLoad, ad, handleLoadAd]);
87
+
88
+ // Event callbacks
89
+ useEffect(() => {
90
+ if (ad?.status === AdStatus.LOADED && onLoad) {
91
+ onLoad(ad);
92
+ }
93
+ }, [ad?.status, ad, onLoad]);
94
+ useEffect(() => {
95
+ if (ad?.status === AdStatus.DISPLAYED && onDisplay) {
96
+ onDisplay(ad);
97
+ }
98
+ }, [ad?.status, ad, onDisplay]);
99
+ useEffect(() => {
100
+ if (ad?.status === AdStatus.ERROR && ad.error && onError) {
101
+ onError(ad.error, ad);
102
+ }
103
+ }, [ad?.status, ad, onError]);
104
+
105
+ // Thêm các event listeners mới cho các sự kiện từ Google Mobile Ads
106
+ useEffect(() => {
107
+ if (!ad) return;
108
+
109
+ // Lắng nghe sự kiện từ InterstitialAdsManager
110
+ const handleAdOpened = openedAd => {
111
+ if (openedAd.adKey === adKey && onOpened) {
112
+ onOpened(openedAd);
113
+ }
114
+ };
115
+ const handleAdClicked = clickedAd => {
116
+ if (clickedAd.adKey === adKey && onClicked) {
117
+ onClicked(clickedAd);
118
+ }
119
+ };
120
+ const handleAdClosed = closedAd => {
121
+ if (closedAd.adKey === adKey && onClosed) {
122
+ onClosed(closedAd);
123
+ }
124
+ };
125
+
126
+ // Đăng ký event listeners
127
+ interstitialAdsManager.on('adOpened', handleAdOpened);
128
+ interstitialAdsManager.on('adClicked', handleAdClicked);
129
+ interstitialAdsManager.on('adClosed', handleAdClosed);
130
+
131
+ // Cleanup listeners khi component unmount
132
+ return () => {
133
+ interstitialAdsManager.off('adOpened', handleAdOpened);
134
+ interstitialAdsManager.off('adClicked', handleAdClicked);
135
+ interstitialAdsManager.off('adClosed', handleAdClosed);
136
+ };
137
+ }, [adKey, onOpened, onClicked, onClosed, ad]);
138
+ return {
139
+ // State
140
+ ad,
141
+ isLoading,
142
+ error,
143
+ status: ad?.status || AdStatus.IDLE,
144
+ isLoaded: ad?.status === AdStatus.LOADED,
145
+ isDisplayed: ad?.status === AdStatus.DISPLAYED,
146
+ hasError: ad?.status === AdStatus.ERROR,
147
+ isUsingHighPriority,
148
+ hasTriedHighPriority,
149
+ // Actions
150
+ loadAd: handleLoadAd,
151
+ preloadAd: handlePreloadAd,
152
+ displayAd: handleDisplayAd,
153
+ removeAd: handleRemoveAd,
154
+ refreshAd: handleRefreshAd
155
+ };
156
+ };
157
+ //# sourceMappingURL=useInterstitialAd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useCallback","useInterstitialAdStore","AdStatus","interstitialAdsManager","useInterstitialAd","config","adKey","adId","timeout","maxRetries","adHighpriorityId","showOnAppStateChange","autoLoad","onLoad","onDisplay","onError","onClosed","onOpened","onClicked","ad","state","getAd","isLoading","error","getError","isUsingHighPriority","hasTriedHighPriority","preloadAd","loadAd","displayAd","removeAd","refreshAd","handleLoadAd","customConfig","finalConfig","handlePreloadAd","handleDisplayAd","displayedAd","handleRemoveAd","handleRefreshAd","status","LOADED","DISPLAYED","ERROR","handleAdOpened","openedAd","handleAdClicked","clickedAd","handleAdClosed","closedAd","on","off","IDLE","isLoaded","isDisplayed","hasError"],"sourceRoot":"../../../src","sources":["hook/useInterstitialAd.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+
3
+ import { useEffect, useCallback } from 'react';
4
+ import { useNativeAdStore } from "../stores/native-ads-store.js";
5
+ import { AdStatus } from "../types/ads-types.js";
6
+ import { nativeAdsManager } from "../ads-manager/NativeAdsManager.js";
7
+
8
+ // Merge AdConfig với UseNativeAdOptions
9
+
10
+ export const useNativeAd = config => {
11
+ const {
12
+ adKey,
13
+ adId,
14
+ timeout,
15
+ maxRetries,
16
+ adHighpriorityId,
17
+ // UseNativeAdOptions fields
18
+ autoLoad = false,
19
+ onLoad,
20
+ onDisplay,
21
+ onError,
22
+ onClicked,
23
+ onImpression
24
+ } = config;
25
+
26
+ // Zustand selectors
27
+ const ad = useNativeAdStore(state => state.getAd(adKey));
28
+ const isLoading = useNativeAdStore(state => state.isLoading(adKey));
29
+ const error = useNativeAdStore(state => state.getError(adKey));
30
+ const isUsingHighPriority = useNativeAdStore(state => state.isUsingHighPriority(adKey));
31
+ const hasTriedHighPriority = useNativeAdStore(state => state.hasTriedHighPriority(adKey));
32
+
33
+ // Zustand actions
34
+ const preloadAd = useNativeAdStore(state => state.preloadAd);
35
+ const loadAd = useNativeAdStore(state => state.loadAd);
36
+ const displayAd = useNativeAdStore(state => state.displayAd);
37
+ const removeAd = useNativeAdStore(state => state.removeAd);
38
+ const refreshAd = useNativeAdStore(state => state.refreshAd);
39
+
40
+ // Memoized callbacks
41
+ const handleLoadAd = useCallback(async customConfig => {
42
+ const finalConfig = {
43
+ adKey,
44
+ adId,
45
+ timeout,
46
+ maxRetries,
47
+ adHighpriorityId,
48
+ ...customConfig
49
+ };
50
+ await loadAd(finalConfig);
51
+ }, [adKey, adId, timeout, maxRetries, adHighpriorityId, loadAd]);
52
+ const handlePreloadAd = useCallback(async customConfig => {
53
+ const finalConfig = {
54
+ adKey,
55
+ adId,
56
+ timeout,
57
+ maxRetries,
58
+ adHighpriorityId,
59
+ ...customConfig
60
+ };
61
+ await preloadAd(finalConfig);
62
+ }, [adKey, adId, timeout, maxRetries, adHighpriorityId, preloadAd]);
63
+ const handleDisplayAd = useCallback(async () => {
64
+ const displayedAd = await displayAd(adKey);
65
+ if (displayedAd && onDisplay) {
66
+ onDisplay(displayedAd);
67
+ }
68
+ return displayedAd;
69
+ }, [adKey, displayAd, onDisplay]);
70
+ const handleRemoveAd = useCallback(() => {
71
+ removeAd(adKey);
72
+ }, [adKey, removeAd]);
73
+ const handleRefreshAd = useCallback(async () => {
74
+ await refreshAd(adKey);
75
+ }, [adKey, refreshAd]);
76
+
77
+ // Auto load effect
78
+ useEffect(() => {
79
+ if (autoLoad && !ad) {
80
+ handleLoadAd();
81
+ }
82
+ }, [autoLoad, ad, handleLoadAd]);
83
+
84
+ // Event callbacks
85
+ useEffect(() => {
86
+ if (ad?.status === AdStatus.LOADED && onLoad) {
87
+ onLoad(ad);
88
+ }
89
+ }, [ad?.status, ad, onLoad]);
90
+ useEffect(() => {
91
+ if (ad?.status === AdStatus.DISPLAYED && onDisplay) {
92
+ onDisplay(ad);
93
+ }
94
+ }, [ad?.status, ad, onDisplay]);
95
+ useEffect(() => {
96
+ if (ad?.status === AdStatus.ERROR && ad.error && onError) {
97
+ onError(ad.error, ad);
98
+ }
99
+ }, [ad?.status, ad, onError]);
100
+
101
+ // Click event listener
102
+ useEffect(() => {
103
+ if (!ad || !onClicked) return;
104
+ const handleClick = data => {
105
+ if (data.adId === ad.adId) {
106
+ onClicked(ad);
107
+ }
108
+ };
109
+ nativeAdsManager.on('adClicked', handleClick);
110
+ return () => {
111
+ nativeAdsManager.off('adClicked', handleClick);
112
+ };
113
+ }, [ad, onClicked]);
114
+
115
+ // Impression event listener
116
+ useEffect(() => {
117
+ if (!ad || !onImpression) return;
118
+ const handleImpression = data => {
119
+ if (data.adId === ad.adId) {
120
+ onImpression(ad);
121
+ }
122
+ };
123
+ nativeAdsManager.on('adImpression', handleImpression);
124
+ return () => {
125
+ nativeAdsManager.off('adImpression', handleImpression);
126
+ };
127
+ }, [ad, onImpression]);
128
+ return {
129
+ // State
130
+ ad,
131
+ isLoading,
132
+ error,
133
+ status: ad?.status || AdStatus.IDLE,
134
+ isLoaded: ad?.status === AdStatus.LOADED,
135
+ isDisplayed: ad?.status === AdStatus.DISPLAYED,
136
+ hasError: ad?.status === AdStatus.ERROR,
137
+ isUsingHighPriority,
138
+ hasTriedHighPriority,
139
+ // Actions
140
+ loadAd: handleLoadAd,
141
+ preloadAd: handlePreloadAd,
142
+ displayAd: handleDisplayAd,
143
+ removeAd: handleRemoveAd,
144
+ refreshAd: handleRefreshAd
145
+ };
146
+ };
147
+ //# sourceMappingURL=useNativeAd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useCallback","useNativeAdStore","AdStatus","nativeAdsManager","useNativeAd","config","adKey","adId","timeout","maxRetries","adHighpriorityId","autoLoad","onLoad","onDisplay","onError","onClicked","onImpression","ad","state","getAd","isLoading","error","getError","isUsingHighPriority","hasTriedHighPriority","preloadAd","loadAd","displayAd","removeAd","refreshAd","handleLoadAd","customConfig","finalConfig","handlePreloadAd","handleDisplayAd","displayedAd","handleRemoveAd","handleRefreshAd","status","LOADED","DISPLAYED","ERROR","handleClick","data","on","off","handleImpression","IDLE","isLoaded","isDisplayed","hasError"],"sourceRoot":"../../../src","sources":["hook/useNativeAd.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+
3
+ import { useEffect, useCallback } from 'react';
4
+ import { useRewardedAdStore } from "../stores/rewarded-ads-store.js";
5
+ import { AdStatus } from "../types/ads-types.js";
6
+ import { rewardedAdsManager } from "../ads-manager/RewardedAdsManager.js";
7
+
8
+ // Merge RewardedAdConfig với UseRewardedAdOptions
9
+
10
+ export const useRewardedAd = config => {
11
+ const {
12
+ adKey,
13
+ adId,
14
+ timeout,
15
+ maxRetries,
16
+ adHighpriorityId,
17
+ showOnAppStateChange,
18
+ // UseRewardedAdOptions fields
19
+ autoLoad = false,
20
+ onLoad,
21
+ onDisplay,
22
+ onError,
23
+ onReward,
24
+ onOpened,
25
+ onClicked,
26
+ onClosed
27
+ } = config;
28
+
29
+ // Zustand selectors
30
+ const ad = useRewardedAdStore(state => state.getAd(adKey));
31
+ const isLoading = useRewardedAdStore(state => state.isLoading(adKey));
32
+ const error = useRewardedAdStore(state => state.getError(adKey));
33
+ const isUsingHighPriority = useRewardedAdStore(state => state.isUsingHighPriority(adKey));
34
+ const hasTriedHighPriority = useRewardedAdStore(state => state.hasTriedHighPriority(adKey));
35
+
36
+ // Zustand actions
37
+ const preloadAd = useRewardedAdStore(state => state.preloadAd);
38
+ const loadAd = useRewardedAdStore(state => state.loadAd);
39
+ const displayAd = useRewardedAdStore(state => state.displayAd);
40
+ const removeAd = useRewardedAdStore(state => state.removeAd);
41
+ const refreshAd = useRewardedAdStore(state => state.refreshAd);
42
+
43
+ // Memoized callbacks
44
+ const handleLoadAd = useCallback(async customConfig => {
45
+ const finalConfig = {
46
+ adKey,
47
+ adId,
48
+ showOnAppStateChange,
49
+ timeout,
50
+ maxRetries,
51
+ adHighpriorityId,
52
+ ...customConfig
53
+ };
54
+ await loadAd(finalConfig);
55
+ }, [adKey, adId, loadAd, showOnAppStateChange, timeout, maxRetries, adHighpriorityId]);
56
+ const handlePreloadAd = useCallback(async customConfig => {
57
+ const finalConfig = {
58
+ adKey,
59
+ adId,
60
+ showOnAppStateChange,
61
+ timeout,
62
+ maxRetries,
63
+ adHighpriorityId,
64
+ ...customConfig
65
+ };
66
+ await preloadAd(finalConfig);
67
+ }, [adKey, adId, preloadAd, showOnAppStateChange, timeout, maxRetries, adHighpriorityId]);
68
+ const handleDisplayAd = useCallback(async () => {
69
+ const result = await displayAd(adKey);
70
+ if (result.ad && onDisplay) {
71
+ onDisplay(result.ad);
72
+ }
73
+ if (result.reward && onReward) {
74
+ onReward(result.reward);
75
+ }
76
+ return result;
77
+ }, [adKey, displayAd, onDisplay, onReward]);
78
+ const handleRemoveAd = useCallback(() => {
79
+ removeAd(adKey);
80
+ }, [adKey, removeAd]);
81
+ const handleRefreshAd = useCallback(async () => {
82
+ await refreshAd(adKey);
83
+ }, [adKey, refreshAd]);
84
+
85
+ // Auto load effect
86
+ useEffect(() => {
87
+ if (autoLoad && !ad) {
88
+ handleLoadAd();
89
+ }
90
+ }, [autoLoad, ad, handleLoadAd]);
91
+
92
+ // Event callbacks
93
+ useEffect(() => {
94
+ if (ad?.status === AdStatus.LOADED && onLoad) {
95
+ onLoad(ad);
96
+ }
97
+ }, [ad?.status, ad, onLoad]);
98
+ useEffect(() => {
99
+ if (ad?.status === AdStatus.DISPLAYED && onDisplay) {
100
+ onDisplay(ad);
101
+ }
102
+ }, [ad?.status, ad, onDisplay]);
103
+ useEffect(() => {
104
+ if (ad?.status === AdStatus.ERROR && ad.error && onError) {
105
+ onError(ad.error, ad);
106
+ }
107
+ }, [ad?.status, ad, onError]);
108
+
109
+ // Lắng nghe các sự kiện từ RewardedAdsManager
110
+ useEffect(() => {
111
+ if (!ad) return;
112
+ const handleAdOpened = openedAd => {
113
+ if (openedAd.adKey === adKey && onOpened) {
114
+ onOpened(openedAd);
115
+ }
116
+ };
117
+ const handleAdClicked = clickedAd => {
118
+ if (clickedAd.adKey === adKey && onClicked) {
119
+ onClicked(clickedAd);
120
+ }
121
+ };
122
+ const handleAdClosed = closedAd => {
123
+ if (closedAd.adKey === adKey && onClosed) {
124
+ onClosed(closedAd);
125
+ }
126
+ };
127
+ const handleEarnedReward = ({
128
+ ad: rewardAd,
129
+ reward
130
+ }) => {
131
+ if (rewardAd.adKey === adKey && onReward) {
132
+ onReward(reward);
133
+ }
134
+ };
135
+ rewardedAdsManager.on('adOpened', handleAdOpened);
136
+ rewardedAdsManager.on('adClicked', handleAdClicked);
137
+ rewardedAdsManager.on('adClosed', handleAdClosed);
138
+ rewardedAdsManager.on('adEarnedReward', handleEarnedReward);
139
+ return () => {
140
+ rewardedAdsManager.off('adOpened', handleAdOpened);
141
+ rewardedAdsManager.off('adClicked', handleAdClicked);
142
+ rewardedAdsManager.off('adClosed', handleAdClosed);
143
+ rewardedAdsManager.off('adEarnedReward', handleEarnedReward);
144
+ };
145
+ }, [adKey, onOpened, onClicked, onClosed, onReward, ad]);
146
+ return {
147
+ // State
148
+ ad,
149
+ isLoading,
150
+ error,
151
+ status: ad?.status || AdStatus.IDLE,
152
+ isLoaded: ad?.status === AdStatus.LOADED,
153
+ isDisplayed: ad?.status === AdStatus.DISPLAYED,
154
+ hasError: ad?.status === AdStatus.ERROR,
155
+ reward: ad?.reward,
156
+ isUsingHighPriority,
157
+ hasTriedHighPriority,
158
+ // Actions
159
+ loadAd: handleLoadAd,
160
+ preloadAd: handlePreloadAd,
161
+ displayAd: handleDisplayAd,
162
+ removeAd: handleRemoveAd,
163
+ refreshAd: handleRefreshAd
164
+ };
165
+ };
166
+ //# sourceMappingURL=useRewardedAd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useCallback","useRewardedAdStore","AdStatus","rewardedAdsManager","useRewardedAd","config","adKey","adId","timeout","maxRetries","adHighpriorityId","showOnAppStateChange","autoLoad","onLoad","onDisplay","onError","onReward","onOpened","onClicked","onClosed","ad","state","getAd","isLoading","error","getError","isUsingHighPriority","hasTriedHighPriority","preloadAd","loadAd","displayAd","removeAd","refreshAd","handleLoadAd","customConfig","finalConfig","handlePreloadAd","handleDisplayAd","result","reward","handleRemoveAd","handleRefreshAd","status","LOADED","DISPLAYED","ERROR","handleAdOpened","openedAd","handleAdClicked","clickedAd","handleAdClosed","closedAd","handleEarnedReward","rewardAd","on","off","IDLE","isLoaded","isDisplayed","hasError"],"sourceRoot":"../../../src","sources":["hook/useRewardedAd.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+
3
+ import { useEffect, useCallback } from 'react';
4
+ import { useRewardedInterstitialAdStore } from "../stores/rewarded-interstitial-ads-store.js";
5
+ import { AdStatus } from "../types/ads-types.js";
6
+ import { rewardedInterstitialAdsManager } from "../ads-manager/RewardedInterstitialAdsManager.js";
7
+
8
+ // Merge RewardedInterstitialAdConfig với UseRewardedInterstitialAdOptions
9
+
10
+ export const useRewardedInterstitialAd = config => {
11
+ const {
12
+ adKey,
13
+ adId,
14
+ timeout,
15
+ maxRetries,
16
+ adHighpriorityId,
17
+ showOnAppStateChange,
18
+ // UseRewardedInterstitialAdOptions fields
19
+ autoLoad = false,
20
+ onLoad,
21
+ onDisplay,
22
+ onError,
23
+ onReward,
24
+ onOpened,
25
+ onClicked,
26
+ onClosed
27
+ } = config;
28
+
29
+ // Zustand selectors
30
+ const ad = useRewardedInterstitialAdStore(state => state.getAd(adKey));
31
+ const isLoading = useRewardedInterstitialAdStore(state => state.isLoading(adKey));
32
+ const error = useRewardedInterstitialAdStore(state => state.getError(adKey));
33
+ const isUsingHighPriority = useRewardedInterstitialAdStore(state => state.isUsingHighPriority(adKey));
34
+ const hasTriedHighPriority = useRewardedInterstitialAdStore(state => state.hasTriedHighPriority(adKey));
35
+
36
+ // Zustand actions
37
+ const preloadAd = useRewardedInterstitialAdStore(state => state.preloadAd);
38
+ const loadAd = useRewardedInterstitialAdStore(state => state.loadAd);
39
+ const displayAd = useRewardedInterstitialAdStore(state => state.displayAd);
40
+ const removeAd = useRewardedInterstitialAdStore(state => state.removeAd);
41
+ const refreshAd = useRewardedInterstitialAdStore(state => state.refreshAd);
42
+
43
+ // Memoized callbacks
44
+ const handleLoadAd = useCallback(async customConfig => {
45
+ const finalConfig = {
46
+ adKey,
47
+ adId,
48
+ showOnAppStateChange,
49
+ timeout,
50
+ maxRetries,
51
+ adHighpriorityId,
52
+ ...customConfig
53
+ };
54
+ await loadAd(finalConfig);
55
+ }, [adKey, adId, loadAd, showOnAppStateChange, timeout, maxRetries, adHighpriorityId]);
56
+ const handlePreloadAd = useCallback(async customConfig => {
57
+ const finalConfig = {
58
+ adKey,
59
+ adId,
60
+ showOnAppStateChange,
61
+ timeout,
62
+ maxRetries,
63
+ adHighpriorityId,
64
+ ...customConfig
65
+ };
66
+ await preloadAd(finalConfig);
67
+ }, [adKey, adId, preloadAd, showOnAppStateChange, timeout, maxRetries, adHighpriorityId]);
68
+ const handleDisplayAd = useCallback(async () => {
69
+ const result = await displayAd(adKey);
70
+ if (result.ad && onDisplay) {
71
+ onDisplay(result.ad);
72
+ }
73
+ if (result.reward && onReward) {
74
+ onReward(result.reward);
75
+ }
76
+ return result;
77
+ }, [adKey, displayAd, onDisplay, onReward]);
78
+ const handleRemoveAd = useCallback(() => {
79
+ removeAd(adKey);
80
+ }, [adKey, removeAd]);
81
+ const handleRefreshAd = useCallback(async () => {
82
+ await refreshAd(adKey);
83
+ }, [adKey, refreshAd]);
84
+
85
+ // Auto load effect
86
+ useEffect(() => {
87
+ if (autoLoad && !ad) {
88
+ handleLoadAd();
89
+ }
90
+ }, [autoLoad, ad, handleLoadAd]);
91
+
92
+ // Event callbacks
93
+ useEffect(() => {
94
+ if (ad?.status === AdStatus.LOADED && onLoad) {
95
+ onLoad(ad);
96
+ }
97
+ }, [ad?.status, ad, onLoad]);
98
+ useEffect(() => {
99
+ if (ad?.status === AdStatus.DISPLAYED && onDisplay) {
100
+ onDisplay(ad);
101
+ }
102
+ }, [ad?.status, ad, onDisplay]);
103
+ useEffect(() => {
104
+ if (ad?.status === AdStatus.ERROR && ad.error && onError) {
105
+ onError(ad.error, ad);
106
+ }
107
+ }, [ad?.status, ad, onError]);
108
+
109
+ // Lắng nghe các sự kiện từ RewardedInterstitialAdsManager
110
+ useEffect(() => {
111
+ if (!ad) return;
112
+ const handleAdOpened = openedAd => {
113
+ if (openedAd.adKey === adKey && onOpened) {
114
+ onOpened(openedAd);
115
+ }
116
+ };
117
+ const handleAdClicked = clickedAd => {
118
+ if (clickedAd.adKey === adKey && onClicked) {
119
+ onClicked(clickedAd);
120
+ }
121
+ };
122
+ const handleAdClosed = closedAd => {
123
+ if (closedAd.adKey === adKey && onClosed) {
124
+ onClosed(closedAd);
125
+ }
126
+ };
127
+ const handleEarnedReward = ({
128
+ ad: rewardAd,
129
+ reward
130
+ }) => {
131
+ if (rewardAd.adKey === adKey && onReward) {
132
+ onReward(reward);
133
+ }
134
+ };
135
+ rewardedInterstitialAdsManager.on('adOpened', handleAdOpened);
136
+ rewardedInterstitialAdsManager.on('adClicked', handleAdClicked);
137
+ rewardedInterstitialAdsManager.on('adClosed', handleAdClosed);
138
+ rewardedInterstitialAdsManager.on('adEarnedReward', handleEarnedReward);
139
+ return () => {
140
+ rewardedInterstitialAdsManager.off('adOpened', handleAdOpened);
141
+ rewardedInterstitialAdsManager.off('adClicked', handleAdClicked);
142
+ rewardedInterstitialAdsManager.off('adClosed', handleAdClosed);
143
+ rewardedInterstitialAdsManager.off('adEarnedReward', handleEarnedReward);
144
+ };
145
+ }, [adKey, onOpened, onClicked, onClosed, onReward, ad]);
146
+ return {
147
+ // State
148
+ ad,
149
+ isLoading,
150
+ error,
151
+ status: ad?.status || AdStatus.IDLE,
152
+ isLoaded: ad?.status === AdStatus.LOADED,
153
+ isDisplayed: ad?.status === AdStatus.DISPLAYED,
154
+ hasError: ad?.status === AdStatus.ERROR,
155
+ reward: ad?.reward,
156
+ isUsingHighPriority,
157
+ hasTriedHighPriority,
158
+ // Actions
159
+ loadAd: handleLoadAd,
160
+ preloadAd: handlePreloadAd,
161
+ displayAd: handleDisplayAd,
162
+ removeAd: handleRemoveAd,
163
+ refreshAd: handleRefreshAd
164
+ };
165
+ };
166
+ //# sourceMappingURL=useRewardedInterstitialAd.js.map