@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 @@
1
+ {"version":3,"file":"interstitial-ads-store.d.ts","sourceRoot":"","sources":["../../../../src/stores/interstitial-ads-store.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EAC1B,MAAM,oBAAoB,CAAC;AAE5B,UAAU,mBAAmB;IAE3B,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IACzC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE5B,SAAS,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;IACrE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,WAAW,EAAE,MAAM,IAAI,CAAC;IAGxB,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,sBAAsB,GAAG,IAAI,CAAC;IACxD,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC3C,SAAS,EAAE,MAAM,sBAAsB,EAAE,CAAC;IAC1C,YAAY,EAAE,MAAM,sBAAsB,EAAE,CAAC;IAC7C,WAAW,EAAE,MAAM,sBAAsB,EAAE,CAAC;IAC5C,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAChD,oBAAoB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAGjD,SAAS,EAAE,CAAC,EAAE,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAChD,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACvD,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzD,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED,eAAO,MAAM,sBAAsB;;;;;;;;EAgMlC,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { type AdInstance, type AdConfig } from '../types/ads-types';
2
+ interface NativeAdStore {
3
+ ads: Map<string, AdInstance>;
4
+ loadingKeys: Set<string>;
5
+ errors: Map<string, string>;
6
+ preloadAd: (config: AdConfig) => Promise<void>;
7
+ loadAd: (config: AdConfig) => Promise<void>;
8
+ displayAd: (adKey: string) => Promise<AdInstance | null>;
9
+ removeAd: (adKey: string) => void;
10
+ refreshAd: (adKey: string) => Promise<void>;
11
+ clearAllAds: () => void;
12
+ getAd: (adKey: string) => AdInstance | null;
13
+ isLoading: (adKey: string) => boolean;
14
+ getError: (adKey: string) => string | null;
15
+ getAllAds: () => AdInstance[];
16
+ getLoadedAds: () => AdInstance[];
17
+ getErrorAds: () => AdInstance[];
18
+ isUsingHighPriority: (adKey: string) => boolean;
19
+ hasTriedHighPriority: (adKey: string) => boolean;
20
+ _updateAd: (ad: AdInstance) => void;
21
+ _removeAd: (adKey: string) => void;
22
+ _setLoading: (adKey: string, loading: boolean) => void;
23
+ _setError: (adKey: string, error: string | null) => void;
24
+ _clearError: (adKey: string) => void;
25
+ }
26
+ export declare const useNativeAdStore: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<NativeAdStore>, "subscribe"> & {
27
+ subscribe: {
28
+ (listener: (selectedState: NativeAdStore, previousSelectedState: NativeAdStore) => void): () => void;
29
+ <U>(selector: (state: NativeAdStore) => U, listener: (selectedState: U, previousSelectedState: U) => void, options?: {
30
+ equalityFn?: ((a: U, b: U) => boolean) | undefined;
31
+ fireImmediately?: boolean;
32
+ } | undefined): () => void;
33
+ };
34
+ }>;
35
+ export {};
36
+ //# sourceMappingURL=native-ads-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-ads-store.d.ts","sourceRoot":"","sources":["../../../../src/stores/native-ads-store.ts"],"names":[],"mappings":"AAGA,OAAO,EAAY,KAAK,UAAU,EAAE,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9E,UAAU,aAAa;IAErB,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC7B,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAG5B,SAAS,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IACzD,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,WAAW,EAAE,MAAM,IAAI,CAAC;IAGxB,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,UAAU,GAAG,IAAI,CAAC;IAC5C,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC3C,SAAS,EAAE,MAAM,UAAU,EAAE,CAAC;IAC9B,YAAY,EAAE,MAAM,UAAU,EAAE,CAAC;IACjC,WAAW,EAAE,MAAM,UAAU,EAAE,CAAC;IAChC,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAChD,oBAAoB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAGjD,SAAS,EAAE,CAAC,EAAE,EAAE,UAAU,KAAK,IAAI,CAAC;IACpC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACvD,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzD,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED,eAAO,MAAM,gBAAgB;;;;;;;;EAsL5B,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { type RewardedAdInstance, type RewardedAdConfig } from '../types/ads-types';
2
+ interface RewardedAdStore {
3
+ ads: Map<string, RewardedAdInstance>;
4
+ loadingKeys: Set<string>;
5
+ errors: Map<string, string>;
6
+ preloadAd: (config: RewardedAdConfig) => Promise<void>;
7
+ loadAd: (config: RewardedAdConfig) => Promise<void>;
8
+ displayAd: (adKey: string) => Promise<{
9
+ ad: RewardedAdInstance | null;
10
+ reward: any;
11
+ }>;
12
+ removeAd: (adKey: string) => void;
13
+ refreshAd: (adKey: string) => Promise<void>;
14
+ clearAllAds: () => void;
15
+ getAd: (adKey: string) => RewardedAdInstance | null;
16
+ isLoading: (adKey: string) => boolean;
17
+ getError: (adKey: string) => string | null;
18
+ getAllAds: () => RewardedAdInstance[];
19
+ getLoadedAds: () => RewardedAdInstance[];
20
+ getErrorAds: () => RewardedAdInstance[];
21
+ isUsingHighPriority: (adKey: string) => boolean;
22
+ hasTriedHighPriority: (adKey: string) => boolean;
23
+ _updateAd: (ad: RewardedAdInstance) => void;
24
+ _removeAd: (adKey: string) => void;
25
+ _setLoading: (adKey: string, loading: boolean) => void;
26
+ _setError: (adKey: string, error: string | null) => void;
27
+ _clearError: (adKey: string) => void;
28
+ }
29
+ export declare const useRewardedAdStore: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<RewardedAdStore>, "subscribe"> & {
30
+ subscribe: {
31
+ (listener: (selectedState: RewardedAdStore, previousSelectedState: RewardedAdStore) => void): () => void;
32
+ <U>(selector: (state: RewardedAdStore) => U, listener: (selectedState: U, previousSelectedState: U) => void, options?: {
33
+ equalityFn?: ((a: U, b: U) => boolean) | undefined;
34
+ fireImmediately?: boolean;
35
+ } | undefined): () => void;
36
+ };
37
+ }>;
38
+ export {};
39
+ //# sourceMappingURL=rewarded-ads-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rewarded-ads-store.d.ts","sourceRoot":"","sources":["../../../../src/stores/rewarded-ads-store.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACtB,MAAM,oBAAoB,CAAC;AAE5B,UAAU,eAAe;IAEvB,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACrC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAG5B,SAAS,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,SAAS,EAAE,CACT,KAAK,EAAE,MAAM,KACV,OAAO,CAAC;QAAE,EAAE,EAAE,kBAAkB,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,GAAG,CAAA;KAAE,CAAC,CAAC;IAC7D,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,WAAW,EAAE,MAAM,IAAI,CAAC;IAGxB,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,kBAAkB,GAAG,IAAI,CAAC;IACpD,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC3C,SAAS,EAAE,MAAM,kBAAkB,EAAE,CAAC;IACtC,YAAY,EAAE,MAAM,kBAAkB,EAAE,CAAC;IACzC,WAAW,EAAE,MAAM,kBAAkB,EAAE,CAAC;IACxC,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAChD,oBAAoB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAGjD,SAAS,EAAE,CAAC,EAAE,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC5C,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACvD,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzD,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED,eAAO,MAAM,kBAAkB;;;;;;;;EAwL9B,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { type RewardedInterstitialAdInstance, type RewardedInterstitialAdConfig } from '../types/ads-types';
2
+ interface RewardedInterstitialAdStore {
3
+ ads: Map<string, RewardedInterstitialAdInstance>;
4
+ loadingKeys: Set<string>;
5
+ errors: Map<string, string>;
6
+ preloadAd: (config: RewardedInterstitialAdConfig) => Promise<void>;
7
+ loadAd: (config: RewardedInterstitialAdConfig) => Promise<void>;
8
+ displayAd: (adKey: string) => Promise<{
9
+ ad: RewardedInterstitialAdInstance | null;
10
+ reward: any;
11
+ }>;
12
+ removeAd: (adKey: string) => void;
13
+ refreshAd: (adKey: string) => Promise<void>;
14
+ clearAllAds: () => void;
15
+ getAd: (adKey: string) => RewardedInterstitialAdInstance | null;
16
+ isLoading: (adKey: string) => boolean;
17
+ getError: (adKey: string) => string | null;
18
+ getAllAds: () => RewardedInterstitialAdInstance[];
19
+ getLoadedAds: () => RewardedInterstitialAdInstance[];
20
+ getErrorAds: () => RewardedInterstitialAdInstance[];
21
+ isUsingHighPriority: (adKey: string) => boolean;
22
+ hasTriedHighPriority: (adKey: string) => boolean;
23
+ _updateAd: (ad: RewardedInterstitialAdInstance) => void;
24
+ _removeAd: (adKey: string) => void;
25
+ _setLoading: (adKey: string, loading: boolean) => void;
26
+ _setError: (adKey: string, error: string | null) => void;
27
+ _clearError: (adKey: string) => void;
28
+ }
29
+ export declare const useRewardedInterstitialAdStore: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<RewardedInterstitialAdStore>, "subscribe"> & {
30
+ subscribe: {
31
+ (listener: (selectedState: RewardedInterstitialAdStore, previousSelectedState: RewardedInterstitialAdStore) => void): () => void;
32
+ <U>(selector: (state: RewardedInterstitialAdStore) => U, listener: (selectedState: U, previousSelectedState: U) => void, options?: {
33
+ equalityFn?: ((a: U, b: U) => boolean) | undefined;
34
+ fireImmediately?: boolean;
35
+ } | undefined): () => void;
36
+ };
37
+ }>;
38
+ export {};
39
+ //# sourceMappingURL=rewarded-interstitial-ads-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rewarded-interstitial-ads-store.d.ts","sourceRoot":"","sources":["../../../../src/stores/rewarded-interstitial-ads-store.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,8BAA8B,EACnC,KAAK,4BAA4B,EAClC,MAAM,oBAAoB,CAAC;AAE5B,UAAU,2BAA2B;IAEnC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,8BAA8B,CAAC,CAAC;IACjD,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAG5B,SAAS,EAAE,CAAC,MAAM,EAAE,4BAA4B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,MAAM,EAAE,CAAC,MAAM,EAAE,4BAA4B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,SAAS,EAAE,CACT,KAAK,EAAE,MAAM,KACV,OAAO,CAAC;QAAE,EAAE,EAAE,8BAA8B,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,GAAG,CAAA;KAAE,CAAC,CAAC;IACzE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,WAAW,EAAE,MAAM,IAAI,CAAC;IAGxB,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,8BAA8B,GAAG,IAAI,CAAC;IAChE,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC3C,SAAS,EAAE,MAAM,8BAA8B,EAAE,CAAC;IAClD,YAAY,EAAE,MAAM,8BAA8B,EAAE,CAAC;IACrD,WAAW,EAAE,MAAM,8BAA8B,EAAE,CAAC;IACpD,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAChD,oBAAoB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAGjD,SAAS,EAAE,CAAC,EAAE,EAAE,8BAA8B,KAAK,IAAI,CAAC;IACxD,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACvD,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzD,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED,eAAO,MAAM,8BAA8B;;;;;;;;EAkMxC,CAAC"}
@@ -0,0 +1,164 @@
1
+ export declare enum AdStatus {
2
+ IDLE = "idle",
3
+ LOADING = "loading",
4
+ LOADED = "loaded",
5
+ DISPLAYED = "displayed",
6
+ ERROR = "error"
7
+ }
8
+ export interface AdConfig {
9
+ adId: string;
10
+ adKey: string;
11
+ timeout?: number;
12
+ maxRetries?: number;
13
+ adHighpriorityId?: string;
14
+ }
15
+ export interface AdData {
16
+ id: string;
17
+ title?: string;
18
+ description?: string;
19
+ imageUrl?: string;
20
+ callToAction?: string;
21
+ advertiser?: string;
22
+ rating?: number;
23
+ price?: string;
24
+ store?: string;
25
+ iconUrl?: string;
26
+ images?: string[];
27
+ videoUrl?: string;
28
+ socialContext?: string;
29
+ nativeAd?: any;
30
+ [adKey: string]: any;
31
+ }
32
+ export interface AdInstance {
33
+ adKey: string;
34
+ adId: string;
35
+ status: AdStatus;
36
+ data: AdData | null;
37
+ error: string | null;
38
+ loadTime: number | null;
39
+ displayTime: number | null;
40
+ retryCount: number;
41
+ isUsingHighPriority?: boolean;
42
+ hasTriedHighPriority?: boolean;
43
+ }
44
+ export interface AdManagerState {
45
+ ads: Map<string, AdInstance>;
46
+ loadingKeys: Set<string>;
47
+ displayedKeys: Set<string>;
48
+ }
49
+ export interface AdManagerActions {
50
+ preloadAd: (adKey: string, adId: string, config?: Partial<AdConfig>) => Promise<void>;
51
+ loadAd: (adKey: string, adId: string, config?: Partial<AdConfig>) => Promise<void>;
52
+ displayAd: (adKey: string) => Promise<AdInstance | null>;
53
+ getAd: (adKey: string) => AdInstance | null;
54
+ removeAd: (adKey: string) => void;
55
+ clearAllAds: () => void;
56
+ refreshAd: (adKey: string) => Promise<void>;
57
+ }
58
+ export interface AdManagerContextType extends AdManagerState, AdManagerActions {
59
+ }
60
+ export interface UseAdOptions {
61
+ autoLoad?: boolean;
62
+ autoRefresh?: boolean;
63
+ refreshInterval?: number;
64
+ onLoad?: (ad: AdInstance) => void;
65
+ onDisplay?: (ad: AdInstance) => void;
66
+ onError?: (error: string, ad: AdInstance) => void;
67
+ }
68
+ export interface BannerAdConfig extends AdConfig {
69
+ size?: 'BANNER' | 'LARGE_BANNER' | 'MEDIUM_RECTANGLE' | 'FULL_BANNER' | 'LEADERBOARD' | 'ANCHORED_ADAPTIVE_BANNER';
70
+ position?: 'top' | 'bottom';
71
+ margin?: number;
72
+ }
73
+ export interface BannerAdInstance extends AdInstance {
74
+ type: 'banner';
75
+ config: BannerAdConfig;
76
+ bannerAd?: any;
77
+ }
78
+ export interface InterstitialAdConfig extends AdConfig {
79
+ showOnAppStateChange?: boolean;
80
+ }
81
+ export interface InterstitialAdInstance extends AdInstance {
82
+ type: 'interstitial';
83
+ config: InterstitialAdConfig;
84
+ interstitialAd?: any;
85
+ }
86
+ export interface RewardedAdConfig extends AdConfig {
87
+ showOnAppStateChange?: boolean;
88
+ }
89
+ export interface RewardedAdInstance extends AdInstance {
90
+ type: 'rewarded';
91
+ config: RewardedAdConfig;
92
+ rewardedAd?: any;
93
+ reward?: {
94
+ type: string;
95
+ amount: number;
96
+ };
97
+ }
98
+ export interface RewardedInterstitialAdConfig extends AdConfig {
99
+ showOnAppStateChange?: boolean;
100
+ }
101
+ export interface RewardedInterstitialAdInstance extends AdInstance {
102
+ type: 'rewarded_interstitial';
103
+ config: RewardedInterstitialAdConfig;
104
+ rewardedInterstitialAd?: any;
105
+ reward?: {
106
+ type: string;
107
+ amount: number;
108
+ };
109
+ }
110
+ export type AnyAdInstance = AdInstance | BannerAdInstance | InterstitialAdInstance | RewardedAdInstance | RewardedInterstitialAdInstance;
111
+ export type AdType = 'native' | 'banner' | 'interstitial' | 'rewarded' | 'rewarded_interstitial';
112
+ export interface GenericAdManagerState {
113
+ ads: Map<string, AnyAdInstance>;
114
+ loadingKeys: Set<string>;
115
+ displayedKeys: Set<string>;
116
+ }
117
+ export interface GenericAdManagerActions {
118
+ preloadAd: (adKey: string, adId: string, adType: AdType, config?: Partial<AdConfig | BannerAdConfig | InterstitialAdConfig | RewardedAdConfig | RewardedInterstitialAdConfig>) => Promise<void>;
119
+ loadAd: (adKey: string, adId: string, adType: AdType, config?: Partial<AdConfig | BannerAdConfig | InterstitialAdConfig | RewardedAdConfig | RewardedInterstitialAdConfig>) => Promise<void>;
120
+ displayAd: (adKey: string) => Promise<AnyAdInstance | null>;
121
+ getAd: (adKey: string) => AnyAdInstance | null;
122
+ removeAd: (adKey: string) => void;
123
+ clearAllAds: () => void;
124
+ refreshAd: (adKey: string) => Promise<void>;
125
+ clearAdsByType: (adType: AdType) => void;
126
+ }
127
+ export interface GenericAdManagerContextType extends GenericAdManagerState, GenericAdManagerActions {
128
+ }
129
+ export interface UseBannerAdOptions extends UseAdOptions {
130
+ size?: BannerAdConfig['size'];
131
+ position?: BannerAdConfig['position'];
132
+ margin?: BannerAdConfig['margin'];
133
+ }
134
+ export interface UseInterstitialAdOptions extends UseAdOptions {
135
+ showOnAppStateChange?: boolean;
136
+ onOpened?: (ad: InterstitialAdInstance) => void;
137
+ onClicked?: (ad: InterstitialAdInstance) => void;
138
+ onClosed?: (ad: InterstitialAdInstance) => void;
139
+ }
140
+ export interface UseRewardedAdOptions extends UseAdOptions {
141
+ showOnAppStateChange?: boolean;
142
+ onReward?: (reward: {
143
+ type: string;
144
+ amount: number;
145
+ }) => void;
146
+ onOpened?: (ad: RewardedAdInstance) => void;
147
+ onClicked?: (ad: RewardedAdInstance) => void;
148
+ onClosed?: (ad: RewardedAdInstance) => void;
149
+ }
150
+ export interface UseRewardedInterstitialAdOptions extends UseAdOptions {
151
+ showOnAppStateChange?: boolean;
152
+ onReward?: (reward: {
153
+ type: string;
154
+ amount: number;
155
+ }) => void;
156
+ onOpened?: (ad: RewardedInterstitialAdInstance) => void;
157
+ onClicked?: (ad: RewardedInterstitialAdInstance) => void;
158
+ onClosed?: (ad: RewardedInterstitialAdInstance) => void;
159
+ }
160
+ export interface UseNativeAdOptions extends UseAdOptions {
161
+ onClicked?: (ad: AdInstance) => void;
162
+ onImpression?: (ad: AdInstance) => void;
163
+ }
164
+ //# sourceMappingURL=ads-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ads-types.d.ts","sourceRoot":"","sources":["../../../../src/types/ads-types.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAClB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,SAAS,cAAc;IACvB,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,GAAG,CAAC;IAEf,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC7B,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,CACT,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,KACvB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,MAAM,EAAE,CACN,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,KACvB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IACzD,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,UAAU,GAAG,IAAI,CAAC;IAC5C,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,oBACf,SAAQ,cAAc,EACpB,gBAAgB;CAAG;AAEvB,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,KAAK,IAAI,CAAC;IAClC,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,KAAK,IAAI,CAAC;IACrC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,KAAK,IAAI,CAAC;CACnD;AAGD,MAAM,WAAW,cAAe,SAAQ,QAAQ;IAC9C,IAAI,CAAC,EACD,QAAQ,GACR,cAAc,GACd,kBAAkB,GAClB,aAAa,GACb,aAAa,GACb,0BAA0B,CAAC;IAC/B,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAClD,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,CAAC,EAAE,GAAG,CAAC;CAChB;AAGD,MAAM,WAAW,oBAAqB,SAAQ,QAAQ;IACpD,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,sBAAuB,SAAQ,UAAU;IACxD,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,cAAc,CAAC,EAAE,GAAG,CAAC;CACtB;AAGD,MAAM,WAAW,gBAAiB,SAAQ,QAAQ;IAChD,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IACpD,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAGD,MAAM,WAAW,4BAA6B,SAAQ,QAAQ;IAC5D,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,8BAA+B,SAAQ,UAAU;IAChE,IAAI,EAAE,uBAAuB,CAAC;IAC9B,MAAM,EAAE,4BAA4B,CAAC;IACrC,sBAAsB,CAAC,EAAE,GAAG,CAAC;IAC7B,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAGD,MAAM,MAAM,aAAa,GACrB,UAAU,GACV,gBAAgB,GAChB,sBAAsB,GACtB,kBAAkB,GAClB,8BAA8B,CAAC;AAEnC,MAAM,MAAM,MAAM,GACd,QAAQ,GACR,QAAQ,GACR,cAAc,GACd,UAAU,GACV,uBAAuB,CAAC;AAG5B,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAChC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,CACT,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,OAAO,CACZ,QAAQ,GACR,cAAc,GACd,oBAAoB,GACpB,gBAAgB,GAChB,4BAA4B,CAC/B,KACE,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,MAAM,EAAE,CACN,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,OAAO,CACZ,QAAQ,GACR,cAAc,GACd,oBAAoB,GACpB,gBAAgB,GAChB,4BAA4B,CAC/B,KACE,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAC5D,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,aAAa,GAAG,IAAI,CAAC;IAC/C,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1C;AAED,MAAM,WAAW,2BACf,SAAQ,qBAAqB,EAC3B,uBAAuB;CAAG;AAG9B,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,IAAI,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IAC9B,QAAQ,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,wBAAyB,SAAQ,YAAY;IAC5D,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAChD,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACjD,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,sBAAsB,KAAK,IAAI,CAAC;CACjD;AAED,MAAM,WAAW,oBAAqB,SAAQ,YAAY;IACxD,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC9D,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC5C,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC7C,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,kBAAkB,KAAK,IAAI,CAAC;CAC7C;AAED,MAAM,WAAW,gCAAiC,SAAQ,YAAY;IACpE,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC9D,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,8BAA8B,KAAK,IAAI,CAAC;IACxD,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,8BAA8B,KAAK,IAAI,CAAC;IACzD,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,8BAA8B,KAAK,IAAI,CAAC;CACzD;AAED,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,KAAK,IAAI,CAAC;IACrC,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,KAAK,IAAI,CAAC;CACzC"}
package/package.json ADDED
@@ -0,0 +1,177 @@
1
+ {
2
+ "name": "@vynix-org/react-native-ads-sdk",
3
+ "version": "0.1.1",
4
+ "description": "This is ads sdk for vynix",
5
+ "access": "public",
6
+ "main": "./lib/module/index.js",
7
+ "types": "./lib/typescript/src/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "source": "./src/index.tsx",
11
+ "types": "./lib/typescript/src/index.d.ts",
12
+ "default": "./lib/module/index.js"
13
+ },
14
+ "./package.json": "./package.json"
15
+ },
16
+ "files": [
17
+ "src",
18
+ "lib",
19
+ "android",
20
+ "ios",
21
+ "cpp",
22
+ "*.podspec",
23
+ "react-native.config.js",
24
+ "!ios/build",
25
+ "!android/build",
26
+ "!android/gradle",
27
+ "!android/gradlew",
28
+ "!android/gradlew.bat",
29
+ "!android/local.properties",
30
+ "!**/__tests__",
31
+ "!**/__fixtures__",
32
+ "!**/__mocks__",
33
+ "!**/.*"
34
+ ],
35
+ "scripts": {
36
+ "example": "yarn workspace react-native-ads-sdk-example",
37
+ "test": "jest",
38
+ "typecheck": "tsc",
39
+ "lint": "eslint \"**/*.{js,ts,tsx}\"",
40
+ "clean": "del-cli android/build example/android/build example/android/app/build example/ios/build lib",
41
+ "prepare": "bob build",
42
+ "release": "release-it --only-version"
43
+ },
44
+ "keywords": [
45
+ "react-native",
46
+ "ios",
47
+ "android",
48
+ "ads",
49
+ "admob",
50
+ "google-ads",
51
+ "native-ads",
52
+ "banner-ads",
53
+ "interstitial",
54
+ "rewarded-ads"
55
+ ],
56
+ "repository": {
57
+ "type": "git",
58
+ "url": "git+https://github.com/vynix-org/react-native-ads-sdk.git"
59
+ },
60
+ "author": "tienvt <v2tien@gmail.com> (https://github.com/v2tien)",
61
+ "license": "MIT",
62
+ "bugs": {
63
+ "url": "https://github.com/vynix-org/react-native-ads-sdk.git/issues"
64
+ },
65
+ "homepage": "https://github.com/vynix-org/react-native-ads-sdk.git#readme",
66
+ "publishConfig": {
67
+ "registry": "https://registry.npmjs.org/"
68
+ },
69
+ "devDependencies": {
70
+ "@commitlint/config-conventional": "^19.8.1",
71
+ "@eslint/compat": "^1.3.2",
72
+ "@eslint/eslintrc": "^3.3.1",
73
+ "@eslint/js": "^9.35.0",
74
+ "@evilmartians/lefthook": "^1.12.3",
75
+ "@react-native-community/cli": "20.0.1",
76
+ "@react-native/babel-preset": "0.81.1",
77
+ "@react-native/eslint-config": "^0.81.1",
78
+ "@release-it/conventional-changelog": "^10.0.1",
79
+ "@types/jest": "^29.5.14",
80
+ "@types/react": "^19.1.0",
81
+ "commitlint": "^19.8.1",
82
+ "del-cli": "^6.0.0",
83
+ "eslint": "^9.35.0",
84
+ "eslint-config-prettier": "^10.1.8",
85
+ "eslint-plugin-prettier": "^5.5.4",
86
+ "jest": "^29.7.0",
87
+ "prettier": "^3.6.2",
88
+ "react": "19.1.0",
89
+ "react-native": "0.81.1",
90
+ "react-native-builder-bob": "^0.40.13",
91
+ "react-native-google-mobile-ads": "^15.8.0",
92
+ "release-it": "^19.0.4",
93
+ "turbo": "^2.5.6",
94
+ "typescript": "^5.9.2"
95
+ },
96
+ "peerDependencies": {
97
+ "react": "*",
98
+ "react-native": "*",
99
+ "react-native-google-mobile-ads": "^15.8.0"
100
+ },
101
+ "workspaces": [
102
+ "example"
103
+ ],
104
+ "packageManager": "yarn@3.6.1",
105
+ "jest": {
106
+ "preset": "react-native",
107
+ "modulePathIgnorePatterns": [
108
+ "<rootDir>/example/node_modules",
109
+ "<rootDir>/lib/"
110
+ ]
111
+ },
112
+ "commitlint": {
113
+ "extends": [
114
+ "@commitlint/config-conventional"
115
+ ]
116
+ },
117
+ "release-it": {
118
+ "git": {
119
+ "commitMessage": "chore: release ${version}",
120
+ "tagName": "v${version}"
121
+ },
122
+ "npm": {
123
+ "publish": true
124
+ },
125
+ "github": {
126
+ "release": true
127
+ },
128
+ "plugins": {
129
+ "@release-it/conventional-changelog": {
130
+ "preset": {
131
+ "name": "angular"
132
+ }
133
+ }
134
+ }
135
+ },
136
+ "prettier": {
137
+ "quoteProps": "consistent",
138
+ "singleQuote": true,
139
+ "tabWidth": 2,
140
+ "trailingComma": "es5",
141
+ "useTabs": false
142
+ },
143
+ "react-native-builder-bob": {
144
+ "source": "src",
145
+ "output": "lib",
146
+ "targets": [
147
+ [
148
+ "module",
149
+ {
150
+ "esm": true
151
+ }
152
+ ],
153
+ [
154
+ "typescript",
155
+ {
156
+ "project": "tsconfig.build.json"
157
+ }
158
+ ]
159
+ ]
160
+ },
161
+ "codegenConfig": {
162
+ "name": "AdsSdkSpec",
163
+ "type": "modules",
164
+ "jsSrcsDir": "src",
165
+ "android": {
166
+ "javaPackageName": "com.adssdk"
167
+ }
168
+ },
169
+ "create-react-native-library": {
170
+ "languages": "kotlin-objc",
171
+ "type": "turbo-module",
172
+ "version": "0.54.3"
173
+ },
174
+ "dependencies": {
175
+ "zustand": "^5.0.8"
176
+ }
177
+ }
@@ -0,0 +1,155 @@
1
+ import { AppOpenAd, AdEventType } from 'react-native-google-mobile-ads';
2
+
3
+ interface AppOpenAdConfig {
4
+ adId: string;
5
+ timeout?: number;
6
+ }
7
+
8
+ type AppOpenAdListener = {
9
+ onAdLoaded?: () => void;
10
+ onAdFailedToLoad?: (error: Error) => void;
11
+ onAdOpened?: () => void;
12
+ onAdClosed?: () => void;
13
+ onAdFailedToShow?: (error: Error) => void;
14
+ };
15
+
16
+ class AppOpenAdsManager {
17
+ private appOpenAd: AppOpenAd | null = null;
18
+ private isLoading = false;
19
+ private isShowing = false;
20
+ private loadTime: number | null = null;
21
+ private config: AppOpenAdConfig | null = null;
22
+ private listeners: AppOpenAdListener = {};
23
+
24
+ /**
25
+ * Khởi tạo và load App Open Ad
26
+ */
27
+ async loadAd(
28
+ config: AppOpenAdConfig,
29
+ listeners?: AppOpenAdListener
30
+ ): Promise<void> {
31
+ if (this.isLoading) {
32
+ console.log('App Open Ad đang được load, bỏ qua request này');
33
+ return;
34
+ }
35
+
36
+ if (this.isAdAvailable()) {
37
+ console.log('App Open Ad đã được load sẵn');
38
+ return;
39
+ }
40
+
41
+ this.config = config;
42
+ this.listeners = listeners || {};
43
+ this.isLoading = true;
44
+
45
+ try {
46
+ this.appOpenAd = AppOpenAd.createForAdRequest(config.adId);
47
+
48
+ // Subscribe to ad events
49
+ this.appOpenAd.addAdEventListener(AdEventType.LOADED, () => {
50
+ this.loadTime = Date.now();
51
+ this.isLoading = false;
52
+ console.log('App Open Ad loaded successfully');
53
+ this.listeners.onAdLoaded?.();
54
+ });
55
+
56
+ this.appOpenAd.addAdEventListener(AdEventType.ERROR, (error) => {
57
+ this.isLoading = false;
58
+ this.appOpenAd = null;
59
+ console.error('App Open Ad failed to load:', error);
60
+ this.listeners.onAdFailedToLoad?.(error as Error);
61
+ });
62
+
63
+ this.appOpenAd.addAdEventListener(AdEventType.OPENED, () => {
64
+ this.isShowing = true;
65
+ console.log('App Open Ad opened');
66
+ this.listeners.onAdOpened?.();
67
+ });
68
+
69
+ this.appOpenAd.addAdEventListener(AdEventType.CLOSED, () => {
70
+ this.isShowing = false;
71
+ this.appOpenAd = null;
72
+ this.loadTime = null;
73
+ console.log('App Open Ad closed');
74
+ this.listeners.onAdClosed?.();
75
+
76
+ // Auto reload ad after close
77
+ if (this.config) {
78
+ this.loadAd(this.config, this.listeners);
79
+ }
80
+ });
81
+
82
+ // Load the ad
83
+ this.appOpenAd.load();
84
+ } catch (error) {
85
+ this.isLoading = false;
86
+ this.appOpenAd = null;
87
+ console.error('Error loading App Open Ad:', error);
88
+ this.listeners.onAdFailedToLoad?.(error as Error);
89
+ throw error;
90
+ }
91
+ }
92
+
93
+ /**
94
+ * Hiển thị App Open Ad nếu có sẵn
95
+ */
96
+ async showAd(): Promise<boolean> {
97
+ if (!this.isAdAvailable()) {
98
+ console.log('App Open Ad chưa sẵn sàng để hiển thị');
99
+ return false;
100
+ }
101
+
102
+ if (this.isShowing) {
103
+ console.log('App Open Ad đang được hiển thị');
104
+ return false;
105
+ }
106
+
107
+ try {
108
+ await this.appOpenAd?.show();
109
+ return true;
110
+ } catch (error) {
111
+ console.error('Error showing App Open Ad:', error);
112
+ this.listeners.onAdFailedToShow?.(error as Error);
113
+ this.appOpenAd = null;
114
+ this.loadTime = null;
115
+ return false;
116
+ }
117
+ }
118
+
119
+ /**
120
+ * Kiểm tra xem ad có sẵn sàng để hiển thị không
121
+ */
122
+ isAdAvailable(): boolean {
123
+ if (!this.appOpenAd || !this.loadTime) {
124
+ return false;
125
+ }
126
+
127
+ // Check if ad has expired (4 hours)
128
+ const AD_TIMEOUT = 4 * 60 * 60 * 1000; // 4 hours in milliseconds
129
+ const isExpired = Date.now() - this.loadTime > AD_TIMEOUT;
130
+
131
+ if (isExpired) {
132
+ console.log('App Open Ad đã hết hạn');
133
+ this.appOpenAd = null;
134
+ this.loadTime = null;
135
+ return false;
136
+ }
137
+
138
+ return true;
139
+ }
140
+
141
+ /**
142
+ * Cleanup
143
+ */
144
+ destroy(): void {
145
+ this.appOpenAd = null;
146
+ this.loadTime = null;
147
+ this.isLoading = false;
148
+ this.isShowing = false;
149
+ this.config = null;
150
+ this.listeners = {};
151
+ }
152
+ }
153
+
154
+ // Export singleton instance
155
+ export const appOpenAdsManager = new AppOpenAdsManager();