react-native-iap 13.0.4 → 14.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (381) hide show
  1. package/NitroIap.podspec +33 -0
  2. package/README.md +163 -51
  3. package/android/CMakeLists.txt +32 -0
  4. package/android/build.gradle +107 -138
  5. package/android/fix-prefab.gradle +51 -0
  6. package/android/gradle.properties +5 -13
  7. package/android/src/main/AndroidManifest.xml +1 -4
  8. package/android/src/main/cpp/cpp-adapter.cpp +6 -0
  9. package/android/src/main/java/com/margelo/nitro/iap/HybridRnIap.kt +843 -0
  10. package/android/src/main/java/com/margelo/nitro/iap/NitroIapPackage.java +33 -0
  11. package/android/src/main/java/com/margelo/nitro/iap/Types.kt +173 -0
  12. package/ios/Bridge.h +8 -0
  13. package/ios/ErrorUtils.swift +153 -0
  14. package/ios/HybridRnIap.swift +1326 -0
  15. package/ios/ProductStore.swift +33 -0
  16. package/ios/reactnativeiap.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  17. package/ios/reactnativeiap.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  18. package/lib/module/helpers/subscription.js +56 -0
  19. package/lib/module/helpers/subscription.js.map +1 -0
  20. package/lib/module/hooks/useIAP.js +175 -123
  21. package/lib/module/hooks/useIAP.js.map +1 -1
  22. package/lib/module/index.js +1015 -9
  23. package/lib/module/index.js.map +1 -1
  24. package/lib/module/package.json +1 -0
  25. package/lib/module/specs/RnIap.nitro.js +4 -0
  26. package/lib/{commonjs/modules/common.js.map → module/specs/RnIap.nitro.js.map} +1 -1
  27. package/lib/module/types.js +187 -0
  28. package/lib/module/types.js.map +1 -0
  29. package/lib/module/utils/error.js +80 -0
  30. package/lib/module/utils/error.js.map +1 -0
  31. package/lib/module/utils/type-bridge.js +202 -0
  32. package/lib/module/utils/type-bridge.js.map +1 -0
  33. package/lib/typescript/package.json +1 -0
  34. package/lib/typescript/plugin/src/withIAP.d.ts +2 -7
  35. package/lib/typescript/plugin/src/withIAP.d.ts.map +1 -1
  36. package/lib/typescript/scripts/check-nitro-versions.d.ts +3 -0
  37. package/lib/typescript/scripts/check-nitro-versions.d.ts.map +1 -0
  38. package/lib/typescript/src/helpers/subscription.d.ts +14 -0
  39. package/lib/typescript/src/helpers/subscription.d.ts.map +1 -0
  40. package/lib/typescript/src/hooks/useIAP.d.ts +42 -26
  41. package/lib/typescript/src/hooks/useIAP.d.ts.map +1 -1
  42. package/lib/typescript/src/index.d.ts +356 -8
  43. package/lib/typescript/src/index.d.ts.map +1 -1
  44. package/lib/typescript/src/specs/RnIap.nitro.d.ts +404 -0
  45. package/lib/typescript/src/specs/RnIap.nitro.d.ts.map +1 -0
  46. package/lib/typescript/src/types.d.ts +544 -0
  47. package/lib/typescript/src/types.d.ts.map +1 -0
  48. package/lib/typescript/src/utils/error.d.ts +30 -0
  49. package/lib/typescript/src/utils/error.d.ts.map +1 -0
  50. package/lib/typescript/src/utils/type-bridge.d.ts +40 -0
  51. package/lib/typescript/src/utils/type-bridge.d.ts.map +1 -0
  52. package/nitro.json +17 -0
  53. package/nitrogen/generated/android/NitroIap+autolinking.cmake +80 -0
  54. package/nitrogen/generated/android/NitroIap+autolinking.gradle +27 -0
  55. package/nitrogen/generated/android/NitroIapOnLoad.cpp +50 -0
  56. package/nitrogen/generated/android/NitroIapOnLoad.hpp +25 -0
  57. package/nitrogen/generated/android/c++/JFunc_void_NitroProduct.hpp +78 -0
  58. package/nitrogen/generated/android/c++/JFunc_void_NitroPurchase.hpp +78 -0
  59. package/nitrogen/generated/android/c++/JFunc_void_NitroPurchaseResult.hpp +78 -0
  60. package/nitrogen/generated/android/c++/JHybridRnIapSpec.cpp +577 -0
  61. package/nitrogen/generated/android/c++/JHybridRnIapSpec.hpp +93 -0
  62. package/nitrogen/generated/android/c++/JNitroAndroidReceiptValidationOptions.hpp +66 -0
  63. package/nitrogen/generated/android/c++/JNitroAvailablePurchasesAndroidOptions.hpp +54 -0
  64. package/nitrogen/generated/android/c++/JNitroAvailablePurchasesIosOptions.hpp +65 -0
  65. package/nitrogen/generated/android/c++/JNitroAvailablePurchasesOptions.hpp +62 -0
  66. package/nitrogen/generated/android/c++/JNitroFinishTransactionAndroidParams.hpp +58 -0
  67. package/nitrogen/generated/android/c++/JNitroFinishTransactionIosParams.hpp +53 -0
  68. package/nitrogen/generated/android/c++/JNitroFinishTransactionParams.hpp +62 -0
  69. package/nitrogen/generated/android/c++/JNitroProduct.hpp +154 -0
  70. package/nitrogen/generated/android/c++/JNitroPurchase.hpp +122 -0
  71. package/nitrogen/generated/android/c++/JNitroPurchaseRequest.hpp +66 -0
  72. package/nitrogen/generated/android/c++/JNitroPurchaseResult.hpp +70 -0
  73. package/nitrogen/generated/android/c++/JNitroReceiptValidationParams.hpp +60 -0
  74. package/nitrogen/generated/android/c++/JNitroReceiptValidationResultAndroid.hpp +122 -0
  75. package/nitrogen/generated/android/c++/JNitroReceiptValidationResultIOS.hpp +68 -0
  76. package/nitrogen/generated/android/c++/JNitroRequestPurchaseAndroid.hpp +115 -0
  77. package/nitrogen/generated/android/c++/JNitroRequestPurchaseIos.hpp +84 -0
  78. package/nitrogen/generated/android/c++/JNitroSubscriptionOffer.hpp +57 -0
  79. package/nitrogen/generated/android/c++/JNitroSubscriptionRenewalInfo.hpp +74 -0
  80. package/nitrogen/generated/android/c++/JNitroSubscriptionStatus.hpp +64 -0
  81. package/nitrogen/generated/android/c++/JVariant_Boolean_NitroPurchaseResult.cpp +26 -0
  82. package/nitrogen/generated/android/c++/JVariant_Boolean_NitroPurchaseResult.hpp +71 -0
  83. package/nitrogen/generated/android/c++/JVariant_NitroReceiptValidationResultIOS_NitroReceiptValidationResultAndroid.cpp +26 -0
  84. package/nitrogen/generated/android/c++/JVariant_NitroReceiptValidationResultIOS_NitroReceiptValidationResultAndroid.hpp +75 -0
  85. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/Func_void_NitroProduct.kt +81 -0
  86. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/Func_void_NitroPurchase.kt +81 -0
  87. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/Func_void_NitroPurchaseResult.kt +81 -0
  88. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/HybridRnIapSpec.kt +198 -0
  89. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroAndroidReceiptValidationOptions.kt +38 -0
  90. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroAvailablePurchasesAndroidOptions.kt +29 -0
  91. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroAvailablePurchasesIosOptions.kt +38 -0
  92. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroAvailablePurchasesOptions.kt +32 -0
  93. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroFinishTransactionAndroidParams.kt +32 -0
  94. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroFinishTransactionIosParams.kt +29 -0
  95. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroFinishTransactionParams.kt +32 -0
  96. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroIapOnLoad.kt +35 -0
  97. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroProduct.kt +104 -0
  98. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroPurchase.kt +80 -0
  99. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroPurchaseRequest.kt +32 -0
  100. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroPurchaseResult.kt +41 -0
  101. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroReceiptValidationParams.kt +32 -0
  102. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroReceiptValidationResultAndroid.kt +80 -0
  103. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroReceiptValidationResultIOS.kt +38 -0
  104. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroRequestPurchaseAndroid.kt +47 -0
  105. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroRequestPurchaseIos.kt +41 -0
  106. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroSubscriptionOffer.kt +32 -0
  107. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroSubscriptionRenewalInfo.kt +44 -0
  108. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroSubscriptionStatus.kt +35 -0
  109. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/Variant_Boolean_NitroPurchaseResult.kt +42 -0
  110. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/Variant_NitroReceiptValidationResultIOS_NitroReceiptValidationResultAndroid.kt +42 -0
  111. package/nitrogen/generated/ios/NitroIap+autolinking.rb +60 -0
  112. package/nitrogen/generated/ios/NitroIap-Swift-Cxx-Bridge.cpp +152 -0
  113. package/nitrogen/generated/ios/NitroIap-Swift-Cxx-Bridge.hpp +1061 -0
  114. package/nitrogen/generated/ios/NitroIap-Swift-Cxx-Umbrella.hpp +107 -0
  115. package/nitrogen/generated/ios/NitroIapAutolinking.mm +33 -0
  116. package/nitrogen/generated/ios/NitroIapAutolinking.swift +25 -0
  117. package/nitrogen/generated/ios/c++/HybridRnIapSpecSwift.cpp +11 -0
  118. package/nitrogen/generated/ios/c++/HybridRnIapSpecSwift.hpp +355 -0
  119. package/nitrogen/generated/ios/swift/Func_void.swift +47 -0
  120. package/nitrogen/generated/ios/swift/Func_void_NitroProduct.swift +47 -0
  121. package/nitrogen/generated/ios/swift/Func_void_NitroPurchase.swift +47 -0
  122. package/nitrogen/generated/ios/swift/Func_void_NitroPurchaseResult.swift +47 -0
  123. package/nitrogen/generated/ios/swift/Func_void_bool.swift +47 -0
  124. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +47 -0
  125. package/nitrogen/generated/ios/swift/Func_void_std__optional_NitroProduct_.swift +54 -0
  126. package/nitrogen/generated/ios/swift/Func_void_std__optional_NitroPurchase_.swift +54 -0
  127. package/nitrogen/generated/ios/swift/Func_void_std__optional_std__string_.swift +54 -0
  128. package/nitrogen/generated/ios/swift/Func_void_std__optional_std__vector_NitroSubscriptionStatus__.swift +54 -0
  129. package/nitrogen/generated/ios/swift/Func_void_std__string.swift +47 -0
  130. package/nitrogen/generated/ios/swift/Func_void_std__variant_NitroReceiptValidationResultIOS__NitroReceiptValidationResultAndroid_.swift +59 -0
  131. package/nitrogen/generated/ios/swift/Func_void_std__variant_bool__NitroPurchaseResult_.swift +59 -0
  132. package/nitrogen/generated/ios/swift/Func_void_std__vector_NitroProduct_.swift +47 -0
  133. package/nitrogen/generated/ios/swift/Func_void_std__vector_NitroPurchase_.swift +47 -0
  134. package/nitrogen/generated/ios/swift/HybridRnIapSpec.swift +78 -0
  135. package/nitrogen/generated/ios/swift/HybridRnIapSpec_cxx.swift +750 -0
  136. package/nitrogen/generated/ios/swift/NitroAndroidReceiptValidationOptions.swift +80 -0
  137. package/nitrogen/generated/ios/swift/NitroAvailablePurchasesAndroidOptions.swift +54 -0
  138. package/nitrogen/generated/ios/swift/NitroAvailablePurchasesIosOptions.swift +116 -0
  139. package/nitrogen/generated/ios/swift/NitroAvailablePurchasesOptions.swift +84 -0
  140. package/nitrogen/generated/ios/swift/NitroFinishTransactionAndroidParams.swift +58 -0
  141. package/nitrogen/generated/ios/swift/NitroFinishTransactionIosParams.swift +35 -0
  142. package/nitrogen/generated/ios/swift/NitroFinishTransactionParams.swift +84 -0
  143. package/nitrogen/generated/ios/swift/NitroProduct.swift +653 -0
  144. package/nitrogen/generated/ios/swift/NitroPurchase.swift +453 -0
  145. package/nitrogen/generated/ios/swift/NitroPurchaseRequest.swift +84 -0
  146. package/nitrogen/generated/ios/swift/NitroPurchaseResult.swift +117 -0
  147. package/nitrogen/generated/ios/swift/NitroReceiptValidationParams.swift +65 -0
  148. package/nitrogen/generated/ios/swift/NitroReceiptValidationResultAndroid.swift +258 -0
  149. package/nitrogen/generated/ios/swift/NitroReceiptValidationResultIOS.swift +87 -0
  150. package/nitrogen/generated/ios/swift/NitroRequestPurchaseAndroid.swift +225 -0
  151. package/nitrogen/generated/ios/swift/NitroRequestPurchaseIos.swift +161 -0
  152. package/nitrogen/generated/ios/swift/NitroSubscriptionOffer.swift +46 -0
  153. package/nitrogen/generated/ios/swift/NitroSubscriptionRenewalInfo.swift +152 -0
  154. package/nitrogen/generated/ios/swift/NitroSubscriptionStatus.swift +76 -0
  155. package/nitrogen/generated/ios/swift/Variant_Bool_NitroPurchaseResult.swift +18 -0
  156. package/nitrogen/generated/ios/swift/Variant_NitroReceiptValidationResultIOS_NitroReceiptValidationResultAndroid.swift +18 -0
  157. package/nitrogen/generated/shared/c++/HybridRnIapSpec.cpp +50 -0
  158. package/nitrogen/generated/shared/c++/HybridRnIapSpec.hpp +125 -0
  159. package/nitrogen/generated/shared/c++/NitroAndroidReceiptValidationOptions.hpp +80 -0
  160. package/nitrogen/generated/shared/c++/NitroAvailablePurchasesAndroidOptions.hpp +68 -0
  161. package/nitrogen/generated/shared/c++/NitroAvailablePurchasesIosOptions.hpp +79 -0
  162. package/nitrogen/generated/shared/c++/NitroAvailablePurchasesOptions.hpp +76 -0
  163. package/nitrogen/generated/shared/c++/NitroFinishTransactionAndroidParams.hpp +72 -0
  164. package/nitrogen/generated/shared/c++/NitroFinishTransactionIosParams.hpp +67 -0
  165. package/nitrogen/generated/shared/c++/NitroFinishTransactionParams.hpp +76 -0
  166. package/nitrogen/generated/shared/c++/NitroProduct.hpp +168 -0
  167. package/nitrogen/generated/shared/c++/NitroPurchase.hpp +136 -0
  168. package/nitrogen/generated/shared/c++/NitroPurchaseRequest.hpp +76 -0
  169. package/nitrogen/generated/shared/c++/NitroPurchaseResult.hpp +84 -0
  170. package/nitrogen/generated/shared/c++/NitroReceiptValidationParams.hpp +74 -0
  171. package/nitrogen/generated/shared/c++/NitroReceiptValidationResultAndroid.hpp +136 -0
  172. package/nitrogen/generated/shared/c++/NitroReceiptValidationResultIOS.hpp +82 -0
  173. package/nitrogen/generated/shared/c++/NitroRequestPurchaseAndroid.hpp +95 -0
  174. package/nitrogen/generated/shared/c++/NitroRequestPurchaseIos.hpp +85 -0
  175. package/nitrogen/generated/shared/c++/NitroSubscriptionOffer.hpp +71 -0
  176. package/nitrogen/generated/shared/c++/NitroSubscriptionRenewalInfo.hpp +88 -0
  177. package/nitrogen/generated/shared/c++/NitroSubscriptionStatus.hpp +78 -0
  178. package/package.json +145 -104
  179. package/plugin/build/src/withIAP.d.ts +3 -0
  180. package/plugin/build/src/withIAP.js +81 -0
  181. package/plugin/build/tsconfig.tsbuildinfo +1 -0
  182. package/plugin/build/withIAP.d.ts +2 -7
  183. package/plugin/build/withIAP.js +62 -51
  184. package/plugin/src/withIAP.ts +119 -0
  185. package/plugin/tsconfig.json +18 -0
  186. package/plugin/tsconfig.tsbuildinfo +1 -0
  187. package/src/helpers/subscription.ts +65 -0
  188. package/src/hooks/useIAP.ts +361 -222
  189. package/src/index.ts +1194 -9
  190. package/src/specs/RnIap.nitro.ts +501 -0
  191. package/src/types.ts +680 -0
  192. package/src/utils/error.ts +97 -0
  193. package/src/utils/type-bridge.ts +209 -0
  194. package/LICENSE +0 -21
  195. package/RNIap.podspec +0 -36
  196. package/android/src/amazon/AndroidManifest.xml +0 -14
  197. package/android/src/amazon/java/com/dooboolab/rniap/EventSender.kt +0 -10
  198. package/android/src/amazon/java/com/dooboolab/rniap/PurchasingServiceProxy.kt +0 -29
  199. package/android/src/amazon/java/com/dooboolab/rniap/PurchasingServiceProxyAmazonImpl.kt +0 -31
  200. package/android/src/amazon/java/com/dooboolab/rniap/RNIapActivityListener.kt +0 -55
  201. package/android/src/amazon/java/com/dooboolab/rniap/RNIapAmazonListener.kt +0 -325
  202. package/android/src/amazon/java/com/dooboolab/rniap/RNIapAmazonModule.kt +0 -244
  203. package/android/src/amazon/java/com/dooboolab/rniap/RNIapPackage.kt +0 -17
  204. package/android/src/amazon/java/com/dooboolab/rniap/modifysubscription/RNIapAmazonModifySubscriptionListener.kt +0 -88
  205. package/android/src/amazon/java/com/dooboolab/rniap/utils/Extensions.kt +0 -22
  206. package/android/src/main/java/com/dooboolab/rniap/PromiseUtils.kt +0 -62
  207. package/android/src/main/java/com/dooboolab/rniap/PromiseUtlis.kt +0 -43
  208. package/android/src/play/java/com/dooboolab/rniap/PlayUtils.kt +0 -114
  209. package/android/src/play/java/com/dooboolab/rniap/RNIapActivityListener.kt +0 -15
  210. package/android/src/play/java/com/dooboolab/rniap/RNIapModule.kt +0 -911
  211. package/android/src/play/java/com/dooboolab/rniap/RNIapPackage.kt +0 -17
  212. package/android/src/testAmazon/java/com/dooboolab/rniap/RNIapAmazonModuleTest.kt +0 -170
  213. package/app.plugin.js +0 -1
  214. package/ios/IapSerializationUtils.swift +0 -290
  215. package/ios/IapTypes.swift +0 -56
  216. package/ios/IapUtils.swift +0 -40
  217. package/ios/LatestPromiseKeeper.swift +0 -52
  218. package/ios/RNIapIos-Bridging-Header.h +0 -2
  219. package/ios/RNIapIos.m +0 -69
  220. package/ios/RNIapIos.swift +0 -868
  221. package/ios/RNIapIos.xcodeproj/project.pbxproj +0 -289
  222. package/ios/RNIapIosSk2.m +0 -126
  223. package/ios/RNIapIosSk2.swift +0 -1413
  224. package/ios/ThreadSafe.swift +0 -18
  225. package/lib/commonjs/eventEmitter.js +0 -195
  226. package/lib/commonjs/eventEmitter.js.map +0 -1
  227. package/lib/commonjs/hooks/index.js +0 -17
  228. package/lib/commonjs/hooks/index.js.map +0 -1
  229. package/lib/commonjs/hooks/useIAP.js +0 -203
  230. package/lib/commonjs/hooks/useIAP.js.map +0 -1
  231. package/lib/commonjs/hooks/withIAPContext.js +0 -95
  232. package/lib/commonjs/hooks/withIAPContext.js.map +0 -1
  233. package/lib/commonjs/iap.js +0 -836
  234. package/lib/commonjs/iap.js.map +0 -1
  235. package/lib/commonjs/index.js +0 -105
  236. package/lib/commonjs/index.js.map +0 -1
  237. package/lib/commonjs/internal/enhancedFetch.js +0 -26
  238. package/lib/commonjs/internal/enhancedFetch.js.map +0 -1
  239. package/lib/commonjs/internal/fillProductsWithAdditionalData.js +0 -50
  240. package/lib/commonjs/internal/fillProductsWithAdditionalData.js.map +0 -1
  241. package/lib/commonjs/internal/index.js +0 -39
  242. package/lib/commonjs/internal/index.js.map +0 -1
  243. package/lib/commonjs/internal/platform.js +0 -119
  244. package/lib/commonjs/internal/platform.js.map +0 -1
  245. package/lib/commonjs/modules/amazon.js +0 -50
  246. package/lib/commonjs/modules/amazon.js.map +0 -1
  247. package/lib/commonjs/modules/android.js +0 -92
  248. package/lib/commonjs/modules/android.js.map +0 -1
  249. package/lib/commonjs/modules/common.js +0 -2
  250. package/lib/commonjs/modules/index.js +0 -50
  251. package/lib/commonjs/modules/index.js.map +0 -1
  252. package/lib/commonjs/modules/ios.js +0 -160
  253. package/lib/commonjs/modules/ios.js.map +0 -1
  254. package/lib/commonjs/modules/iosSk2.js +0 -113
  255. package/lib/commonjs/modules/iosSk2.js.map +0 -1
  256. package/lib/commonjs/purchaseError.js +0 -170
  257. package/lib/commonjs/purchaseError.js.map +0 -1
  258. package/lib/commonjs/types/amazon.js +0 -2
  259. package/lib/commonjs/types/amazon.js.map +0 -1
  260. package/lib/commonjs/types/android.js +0 -67
  261. package/lib/commonjs/types/android.js.map +0 -1
  262. package/lib/commonjs/types/apple.js +0 -24
  263. package/lib/commonjs/types/apple.js.map +0 -1
  264. package/lib/commonjs/types/appleSk2.js +0 -137
  265. package/lib/commonjs/types/appleSk2.js.map +0 -1
  266. package/lib/commonjs/types/index.js +0 -67
  267. package/lib/commonjs/types/index.js.map +0 -1
  268. package/lib/commonjs/utils/errorMapping.js +0 -83
  269. package/lib/commonjs/utils/errorMapping.js.map +0 -1
  270. package/lib/commonjs/utils/typeGuards.js +0 -74
  271. package/lib/commonjs/utils/typeGuards.js.map +0 -1
  272. package/lib/module/eventEmitter.js +0 -185
  273. package/lib/module/eventEmitter.js.map +0 -1
  274. package/lib/module/hooks/index.js +0 -2
  275. package/lib/module/hooks/index.js.map +0 -1
  276. package/lib/module/hooks/withIAPContext.js +0 -86
  277. package/lib/module/hooks/withIAPContext.js.map +0 -1
  278. package/lib/module/iap.js +0 -805
  279. package/lib/module/iap.js.map +0 -1
  280. package/lib/module/internal/enhancedFetch.js +0 -19
  281. package/lib/module/internal/enhancedFetch.js.map +0 -1
  282. package/lib/module/internal/fillProductsWithAdditionalData.js +0 -43
  283. package/lib/module/internal/fillProductsWithAdditionalData.js.map +0 -1
  284. package/lib/module/internal/index.js +0 -4
  285. package/lib/module/internal/index.js.map +0 -1
  286. package/lib/module/internal/platform.js +0 -102
  287. package/lib/module/internal/platform.js.map +0 -1
  288. package/lib/module/modules/amazon.js +0 -42
  289. package/lib/module/modules/amazon.js.map +0 -1
  290. package/lib/module/modules/android.js +0 -81
  291. package/lib/module/modules/android.js.map +0 -1
  292. package/lib/module/modules/common.js +0 -2
  293. package/lib/module/modules/common.js.map +0 -1
  294. package/lib/module/modules/index.js +0 -5
  295. package/lib/module/modules/index.js.map +0 -1
  296. package/lib/module/modules/ios.js +0 -145
  297. package/lib/module/modules/ios.js.map +0 -1
  298. package/lib/module/modules/iosSk2.js +0 -96
  299. package/lib/module/modules/iosSk2.js.map +0 -1
  300. package/lib/module/purchaseError.js +0 -164
  301. package/lib/module/purchaseError.js.map +0 -1
  302. package/lib/module/types/amazon.js +0 -2
  303. package/lib/module/types/amazon.js.map +0 -1
  304. package/lib/module/types/android.js +0 -63
  305. package/lib/module/types/android.js.map +0 -1
  306. package/lib/module/types/apple.js +0 -17
  307. package/lib/module/types/apple.js.map +0 -1
  308. package/lib/module/types/appleSk2.js +0 -129
  309. package/lib/module/types/appleSk2.js.map +0 -1
  310. package/lib/module/types/index.js +0 -75
  311. package/lib/module/types/index.js.map +0 -1
  312. package/lib/module/utils/errorMapping.js +0 -75
  313. package/lib/module/utils/errorMapping.js.map +0 -1
  314. package/lib/module/utils/typeGuards.js +0 -61
  315. package/lib/module/utils/typeGuards.js.map +0 -1
  316. package/lib/typescript/src/eventEmitter.d.ts +0 -151
  317. package/lib/typescript/src/eventEmitter.d.ts.map +0 -1
  318. package/lib/typescript/src/hooks/index.d.ts +0 -2
  319. package/lib/typescript/src/hooks/index.d.ts.map +0 -1
  320. package/lib/typescript/src/hooks/withIAPContext.d.ts +0 -27
  321. package/lib/typescript/src/hooks/withIAPContext.d.ts.map +0 -1
  322. package/lib/typescript/src/iap.d.ts +0 -503
  323. package/lib/typescript/src/iap.d.ts.map +0 -1
  324. package/lib/typescript/src/internal/enhancedFetch.d.ts +0 -6
  325. package/lib/typescript/src/internal/enhancedFetch.d.ts.map +0 -1
  326. package/lib/typescript/src/internal/fillProductsWithAdditionalData.d.ts +0 -7
  327. package/lib/typescript/src/internal/fillProductsWithAdditionalData.d.ts.map +0 -1
  328. package/lib/typescript/src/internal/index.d.ts +0 -4
  329. package/lib/typescript/src/internal/index.d.ts.map +0 -1
  330. package/lib/typescript/src/internal/platform.d.ts +0 -27
  331. package/lib/typescript/src/internal/platform.d.ts.map +0 -1
  332. package/lib/typescript/src/modules/amazon.d.ts +0 -55
  333. package/lib/typescript/src/modules/amazon.d.ts.map +0 -1
  334. package/lib/typescript/src/modules/android.d.ts +0 -74
  335. package/lib/typescript/src/modules/android.d.ts.map +0 -1
  336. package/lib/typescript/src/modules/common.d.ts +0 -14
  337. package/lib/typescript/src/modules/common.d.ts.map +0 -1
  338. package/lib/typescript/src/modules/index.d.ts +0 -5
  339. package/lib/typescript/src/modules/index.d.ts.map +0 -1
  340. package/lib/typescript/src/modules/ios.d.ts +0 -117
  341. package/lib/typescript/src/modules/ios.d.ts.map +0 -1
  342. package/lib/typescript/src/modules/iosSk2.d.ts +0 -140
  343. package/lib/typescript/src/modules/iosSk2.d.ts.map +0 -1
  344. package/lib/typescript/src/purchaseError.d.ts +0 -133
  345. package/lib/typescript/src/purchaseError.d.ts.map +0 -1
  346. package/lib/typescript/src/types/amazon.d.ts +0 -33
  347. package/lib/typescript/src/types/amazon.d.ts.map +0 -1
  348. package/lib/typescript/src/types/android.d.ts +0 -66
  349. package/lib/typescript/src/types/android.d.ts.map +0 -1
  350. package/lib/typescript/src/types/apple.d.ts +0 -27
  351. package/lib/typescript/src/types/apple.d.ts.map +0 -1
  352. package/lib/typescript/src/types/appleSk2.d.ts +0 -129
  353. package/lib/typescript/src/types/appleSk2.d.ts.map +0 -1
  354. package/lib/typescript/src/types/index.d.ts +0 -302
  355. package/lib/typescript/src/types/index.d.ts.map +0 -1
  356. package/lib/typescript/src/utils/errorMapping.d.ts +0 -29
  357. package/lib/typescript/src/utils/errorMapping.d.ts.map +0 -1
  358. package/lib/typescript/src/utils/typeGuards.d.ts +0 -53
  359. package/lib/typescript/src/utils/typeGuards.d.ts.map +0 -1
  360. package/src/eventEmitter.ts +0 -212
  361. package/src/hooks/index.ts +0 -1
  362. package/src/hooks/withIAPContext.tsx +0 -179
  363. package/src/iap.ts +0 -1046
  364. package/src/internal/enhancedFetch.ts +0 -25
  365. package/src/internal/fillProductsWithAdditionalData.ts +0 -47
  366. package/src/internal/index.ts +0 -3
  367. package/src/internal/platform.ts +0 -135
  368. package/src/modules/amazon.ts +0 -94
  369. package/src/modules/android.ts +0 -179
  370. package/src/modules/common.ts +0 -16
  371. package/src/modules/index.ts +0 -4
  372. package/src/modules/ios.ts +0 -229
  373. package/src/modules/iosSk2.ts +0 -194
  374. package/src/purchaseError.ts +0 -196
  375. package/src/types/amazon.ts +0 -40
  376. package/src/types/android.ts +0 -89
  377. package/src/types/apple.ts +0 -44
  378. package/src/types/appleSk2.ts +0 -275
  379. package/src/types/index.ts +0 -379
  380. package/src/utils/errorMapping.ts +0 -88
  381. package/src/utils/typeGuards.ts +0 -90
@@ -0,0 +1,33 @@
1
+ import Foundation
2
+ import StoreKit
3
+
4
+ @available(iOS 15.0, *)
5
+ actor ProductStore {
6
+ private(set) var products: [String: Product] = [:]
7
+
8
+ func addProduct(_ product: Product) {
9
+ self.products[product.id] = product
10
+ }
11
+
12
+ func addProducts(_ products: [Product]) {
13
+ for product in products {
14
+ self.products[product.id] = product
15
+ }
16
+ }
17
+
18
+ func getAllProducts() -> [Product] {
19
+ return Array(self.products.values)
20
+ }
21
+
22
+ func getProduct(productID: String) -> Product? {
23
+ return self.products[productID]
24
+ }
25
+
26
+ func removeAll() {
27
+ products.removeAll()
28
+ }
29
+
30
+ func performOnActor(_ action: @escaping (isolated ProductStore) -> Void) async {
31
+ action(self)
32
+ }
33
+ }
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <Workspace
3
+ version = "1.0">
4
+ <FileRef
5
+ location = "self:">
6
+ </FileRef>
7
+ </Workspace>
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>IDEDidComputeMac32BitWarning</key>
6
+ <true/>
7
+ </dict>
8
+ </plist>
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+
3
+ import { getAvailablePurchases } from "../index.js";
4
+ /**
5
+ * Get active subscriptions
6
+ * @param subscriptionIds - Optional array of subscription IDs to filter by
7
+ * @returns Promise<ActiveSubscription[]> - Array of active subscriptions
8
+ */
9
+ export const getActiveSubscriptions = async subscriptionIds => {
10
+ try {
11
+ // Get available purchases and filter for subscriptions
12
+ const purchases = await getAvailablePurchases();
13
+
14
+ // Filter for subscriptions and map to ActiveSubscription format
15
+ const subscriptions = purchases.filter(purchase => {
16
+ // Filter by subscription IDs if provided
17
+ if (subscriptionIds && subscriptionIds.length > 0) {
18
+ return subscriptionIds.includes(purchase.productId);
19
+ }
20
+ return true;
21
+ }).map(purchase => {
22
+ const iosPurchase = purchase;
23
+ return {
24
+ productId: purchase.productId,
25
+ isActive: true,
26
+ // If it's in availablePurchases, it's active
27
+ expirationDateIOS: iosPurchase.expirationDateIOS ? new Date(iosPurchase.expirationDateIOS) : undefined,
28
+ autoRenewingAndroid: purchase.autoRenewingAndroid,
29
+ environmentIOS: iosPurchase.environmentIOS,
30
+ willExpireSoon: false,
31
+ // Would need to calculate based on expiration date
32
+ daysUntilExpirationIOS: iosPurchase.expirationDateIOS ? Math.ceil((iosPurchase.expirationDateIOS - Date.now()) / (1000 * 60 * 60 * 24)) : undefined
33
+ };
34
+ });
35
+ return subscriptions;
36
+ } catch (error) {
37
+ console.error('Failed to get active subscriptions:', error);
38
+ throw error;
39
+ }
40
+ };
41
+
42
+ /**
43
+ * Check if there are any active subscriptions
44
+ * @param subscriptionIds - Optional array of subscription IDs to check
45
+ * @returns Promise<boolean> - True if there are active subscriptions
46
+ */
47
+ export const hasActiveSubscriptions = async subscriptionIds => {
48
+ try {
49
+ const activeSubscriptions = await getActiveSubscriptions(subscriptionIds);
50
+ return activeSubscriptions.length > 0;
51
+ } catch (error) {
52
+ console.error('Failed to check active subscriptions:', error);
53
+ return false;
54
+ }
55
+ };
56
+ //# sourceMappingURL=subscription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getAvailablePurchases","getActiveSubscriptions","subscriptionIds","purchases","subscriptions","filter","purchase","length","includes","productId","map","iosPurchase","isActive","expirationDateIOS","Date","undefined","autoRenewingAndroid","environmentIOS","willExpireSoon","daysUntilExpirationIOS","Math","ceil","now","error","console","hasActiveSubscriptions","activeSubscriptions"],"sourceRoot":"../../../src","sources":["helpers/subscription.ts"],"mappings":";;AAAA,SAAQA,qBAAqB,QAAO,aAAK;AAOzC;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,sBAAsB,GAAG,MACpCC,eAA0B,IACQ;EAClC,IAAI;IACF;IACA,MAAMC,SAAS,GAAG,MAAMH,qBAAqB,CAAC,CAAC;;IAE/C;IACA,MAAMI,aAAa,GAAGD,SAAS,CAC5BE,MAAM,CAAEC,QAAQ,IAAK;MACpB;MACA,IAAIJ,eAAe,IAAIA,eAAe,CAACK,MAAM,GAAG,CAAC,EAAE;QACjD,OAAOL,eAAe,CAACM,QAAQ,CAACF,QAAQ,CAACG,SAAS,CAAC;MACrD;MACA,OAAO,IAAI;IACb,CAAC,CAAC,CACDC,GAAG,CAAEJ,QAAQ,IAAyB;MACrC,MAAMK,WAAW,GAAGL,QAAuB;MAC3C,OAAO;QACLG,SAAS,EAAEH,QAAQ,CAACG,SAAS;QAC7BG,QAAQ,EAAE,IAAI;QAAE;QAChBC,iBAAiB,EAAEF,WAAW,CAACE,iBAAiB,GAAG,IAAIC,IAAI,CAACH,WAAW,CAACE,iBAAiB,CAAC,GAAGE,SAAS;QACtGC,mBAAmB,EAAGV,QAAQ,CAAqBU,mBAAmB;QACtEC,cAAc,EAAEN,WAAW,CAACM,cAAc;QAC1CC,cAAc,EAAE,KAAK;QAAE;QACvBC,sBAAsB,EAAER,WAAW,CAACE,iBAAiB,GACnDO,IAAI,CAACC,IAAI,CAAC,CAACV,WAAW,CAACE,iBAAiB,GAAGC,IAAI,CAACQ,GAAG,CAAC,CAAC,KAAK,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAGP;MACtF,CAAC;IACH,CAAC,CAAC;IAEJ,OAAOX,aAAa;EACtB,CAAC,CAAC,OAAOmB,KAAK,EAAE;IACdC,OAAO,CAACD,KAAK,CAAC,qCAAqC,EAAEA,KAAK,CAAC;IAC3D,MAAMA,KAAK;EACb;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,MAAME,sBAAsB,GAAG,MACpCvB,eAA0B,IACL;EACrB,IAAI;IACF,MAAMwB,mBAAmB,GAAG,MAAMzB,sBAAsB,CAACC,eAAe,CAAC;IACzE,OAAOwB,mBAAmB,CAACnB,MAAM,GAAG,CAAC;EACvC,CAAC,CAAC,OAAOgB,KAAK,EAAE;IACdC,OAAO,CAACD,KAAK,CAAC,uCAAuC,EAAEA,KAAK,CAAC;IAC7D,OAAO,KAAK;EACd;AACF,CAAC","ignoreList":[]}
@@ -1,31 +1,33 @@
1
- import { useCallback, useEffect, useRef } from 'react';
1
+ "use strict";
2
+
3
+ // External dependencies
4
+ import { useCallback, useEffect, useState, useRef } from 'react';
2
5
  import { Platform } from 'react-native';
3
- import { finishTransaction as iapFinishTransaction, getAvailablePurchases as iapGetAvailablePurchases, getProducts as iapGetProducts, getPurchaseHistory as iapGetPurchaseHistory, getSubscriptions as iapGetSubscriptions, requestPurchase as iapRequestPurchase, requestSubscription as iapRequestSubscription } from '../iap';
4
- import { sync, validateReceiptIos } from '../modules/iosSk2';
5
- import { useIAPContext } from './withIAPContext';
6
- export const useIAP = options => {
7
- const {
8
- connected,
9
- products,
10
- promotedProductsIOS,
11
- subscriptions,
12
- purchaseHistory,
13
- availablePurchases,
14
- currentPurchase,
15
- currentPurchaseError,
16
- initConnectionError,
17
- setConnected,
18
- setProducts,
19
- setSubscriptions,
20
- setAvailablePurchases,
21
- setPurchaseHistory,
22
- setCurrentPurchase,
23
- setCurrentPurchaseError
24
- } = useIAPContext();
6
+
7
+ // Internal modules
8
+ import { endConnection, initConnection, purchaseErrorListener, purchaseUpdatedListener, promotedProductListenerIOS, getAvailablePurchases, finishTransaction as finishTransactionInternal, requestPurchase as requestPurchaseInternal, fetchProducts, validateReceipt as validateReceiptInternal, getActiveSubscriptions, hasActiveSubscriptions } from "../index.js";
9
+ import { syncIOS, requestPromotedProductIOS, buyPromotedProductIOS } from "../index.js";
10
+
11
+ // Types
12
+
13
+ // Types for event subscriptions
14
+
15
+ /**
16
+ * React Hook for managing In-App Purchases.
17
+ * See documentation at https://expo-iap.hyo.dev/docs/hooks/useIAP
18
+ */
19
+ export function useIAP(options) {
20
+ const [connected, setConnected] = useState(false);
21
+ const [products, setProducts] = useState([]);
22
+ const [promotedProductsIOS] = useState([]);
23
+ const [subscriptions, setSubscriptions] = useState([]);
24
+ const [availablePurchases, setAvailablePurchases] = useState([]);
25
+ const [currentPurchase, setCurrentPurchase] = useState();
26
+ const [promotedProductIOS, setPromotedProductIOS] = useState();
27
+ const [currentPurchaseError, setCurrentPurchaseError] = useState();
28
+ const [promotedProductIdIOS] = useState();
29
+ const [activeSubscriptions, setActiveSubscriptions] = useState([]);
25
30
  const optionsRef = useRef(options);
26
- useEffect(() => {
27
- optionsRef.current = options;
28
- }, [options]);
29
31
 
30
32
  // Helper function to merge arrays with duplicate checking
31
33
  const mergeWithDuplicateCheck = useCallback((existingItems, newItems, getKey) => {
@@ -38,159 +40,209 @@ export const useIAP = options => {
38
40
  });
39
41
  return merged;
40
42
  }, []);
43
+ useEffect(() => {
44
+ optionsRef.current = options;
45
+ }, [options]);
46
+ const subscriptionsRef = useRef({});
47
+ const subscriptionsRefState = useRef([]);
48
+ useEffect(() => {
49
+ subscriptionsRefState.current = subscriptions;
50
+ }, [subscriptions]);
41
51
  const clearCurrentPurchase = useCallback(() => {
42
52
  setCurrentPurchase(undefined);
43
- }, [setCurrentPurchase]);
53
+ }, []);
44
54
  const clearCurrentPurchaseError = useCallback(() => {
45
55
  setCurrentPurchaseError(undefined);
46
- }, [setCurrentPurchaseError]);
47
- const getProducts = useCallback(async ({
48
- skus
49
- }) => {
56
+ }, []);
57
+ const getProductsInternal = useCallback(async skus => {
50
58
  try {
51
- const result = await iapGetProducts({
52
- skus
59
+ const result = await fetchProducts({
60
+ skus,
61
+ type: 'inapp'
53
62
  });
54
- setProducts(mergeWithDuplicateCheck(products, result, product => product.productId || ''));
63
+ setProducts(prevProducts => mergeWithDuplicateCheck(prevProducts, result, product => product.id));
55
64
  } catch (error) {
56
- console.error('Error getting products:', error);
65
+ console.error('Error fetching products:', error);
57
66
  }
58
- }, [setProducts, mergeWithDuplicateCheck, products]);
59
- const getSubscriptions = useCallback(async ({
60
- skus
61
- }) => {
67
+ }, [mergeWithDuplicateCheck]);
68
+ const getSubscriptionsInternal = useCallback(async skus => {
62
69
  try {
63
- const result = await iapGetSubscriptions({
64
- skus
70
+ const result = await fetchProducts({
71
+ skus,
72
+ type: 'subs'
65
73
  });
66
- setSubscriptions(mergeWithDuplicateCheck(subscriptions, result, subscription => subscription.productId || ''));
74
+ setSubscriptions(prevSubscriptions => mergeWithDuplicateCheck(prevSubscriptions, result, subscription => subscription.id));
75
+ } catch (error) {
76
+ console.error('Error fetching subscriptions:', error);
77
+ }
78
+ }, [mergeWithDuplicateCheck]);
79
+ const fetchProductsInternal = useCallback(async params => {
80
+ try {
81
+ const result = await fetchProducts(params);
82
+ if (params.type === 'subs') {
83
+ setSubscriptions(prevSubscriptions => mergeWithDuplicateCheck(prevSubscriptions, result, subscription => subscription.id));
84
+ } else {
85
+ setProducts(prevProducts => mergeWithDuplicateCheck(prevProducts, result, product => product.id));
86
+ }
67
87
  } catch (error) {
68
- console.error('Error getting subscriptions:', error);
88
+ console.error('Error fetching products:', error);
69
89
  }
70
- }, [setSubscriptions, mergeWithDuplicateCheck, subscriptions]);
71
- const getAvailablePurchases = useCallback(async () => {
90
+ }, [mergeWithDuplicateCheck]);
91
+ const getAvailablePurchasesInternal = useCallback(async () => {
72
92
  try {
73
- const result = await iapGetAvailablePurchases();
93
+ const result = await getAvailablePurchases();
74
94
  setAvailablePurchases(result);
75
95
  } catch (error) {
76
- console.error('Error getting available purchases:', error);
96
+ console.error('Error fetching available purchases:', error);
97
+ }
98
+ }, []);
99
+ const getActiveSubscriptionsInternal = useCallback(async subscriptionIds => {
100
+ try {
101
+ const result = await getActiveSubscriptions(subscriptionIds);
102
+ setActiveSubscriptions(result);
103
+ return result;
104
+ } catch (error) {
105
+ console.error('Error getting active subscriptions:', error);
106
+ // Don't clear existing activeSubscriptions on error - preserve current state
107
+ // This prevents the UI from showing empty state when there are temporary network issues
108
+ return [];
77
109
  }
78
- }, [setAvailablePurchases]);
79
- const getPurchaseHistory = useCallback(async () => {
110
+ }, []);
111
+ const hasActiveSubscriptionsInternal = useCallback(async subscriptionIds => {
80
112
  try {
81
- const result = await iapGetPurchaseHistory();
82
- setPurchaseHistory(result);
113
+ return await hasActiveSubscriptions(subscriptionIds);
83
114
  } catch (error) {
84
- console.error('Error getting purchase history:', error);
115
+ console.error('Error checking active subscriptions:', error);
116
+ return false;
85
117
  }
86
- }, [setPurchaseHistory]);
118
+ }, []);
87
119
  const finishTransaction = useCallback(async ({
88
120
  purchase,
89
- isConsumable,
90
- developerPayloadAndroid
121
+ isConsumable
91
122
  }) => {
92
123
  try {
93
- return await iapFinishTransaction({
124
+ return await finishTransactionInternal({
94
125
  purchase,
95
- isConsumable,
96
- developerPayloadAndroid
126
+ isConsumable
97
127
  });
98
128
  } catch (err) {
99
129
  throw err;
100
130
  } finally {
101
- if (purchase.productId === (currentPurchase === null || currentPurchase === void 0 ? void 0 : currentPurchase.productId)) {
102
- setCurrentPurchase(undefined);
131
+ if (purchase.id === currentPurchase?.id) {
132
+ clearCurrentPurchase();
103
133
  }
104
- if (purchase.productId === (currentPurchaseError === null || currentPurchaseError === void 0 ? void 0 : currentPurchaseError.productId)) {
105
- setCurrentPurchaseError(undefined);
134
+ if (purchase.id === currentPurchaseError?.productId) {
135
+ clearCurrentPurchaseError();
106
136
  }
107
137
  }
108
- }, [currentPurchase === null || currentPurchase === void 0 ? void 0 : currentPurchase.productId, currentPurchaseError === null || currentPurchaseError === void 0 ? void 0 : currentPurchaseError.productId, setCurrentPurchase, setCurrentPurchaseError]);
109
- const restorePurchases = useCallback(async () => {
138
+ }, [currentPurchase?.id, currentPurchaseError?.productId, clearCurrentPurchase, clearCurrentPurchaseError]);
139
+ const requestPurchaseWithReset = useCallback(async requestObj => {
140
+ clearCurrentPurchase();
141
+ clearCurrentPurchaseError();
110
142
  try {
111
- var _optionsRef$current;
112
- // Try to sync with store on iOS
113
- if (Platform.OS === 'ios' && ((_optionsRef$current = optionsRef.current) === null || _optionsRef$current === void 0 ? void 0 : _optionsRef$current.shouldAutoSyncPurchases) !== false) {
114
- try {
115
- await sync();
116
- } catch (syncError) {
117
- var _optionsRef$current2, _optionsRef$current2$;
118
- console.error('Sync error:', syncError);
119
- (_optionsRef$current2 = optionsRef.current) === null || _optionsRef$current2 === void 0 || (_optionsRef$current2$ = _optionsRef$current2.onSyncError) === null || _optionsRef$current2$ === void 0 || _optionsRef$current2$.call(_optionsRef$current2, syncError);
120
- }
121
- }
122
-
123
- // Get available purchases
124
- await getAvailablePurchases();
143
+ return await requestPurchaseInternal(requestObj);
125
144
  } catch (error) {
126
- console.error('Error restoring purchases:', error);
127
145
  throw error;
128
146
  }
129
- }, [getAvailablePurchases]);
130
- const validateReceipt = useCallback(async (sku, androidOptions) => {
147
+ }, [clearCurrentPurchase, clearCurrentPurchaseError]);
148
+ const refreshSubscriptionStatus = useCallback(async productId => {
149
+ try {
150
+ if (subscriptionsRefState.current.some(sub => sub.id === productId)) {
151
+ await getSubscriptionsInternal([productId]);
152
+ await getAvailablePurchasesInternal();
153
+ }
154
+ } catch (error) {
155
+ console.warn('Failed to refresh subscription status:', error);
156
+ }
157
+ }, [getAvailablePurchasesInternal, getSubscriptionsInternal]);
158
+ const restorePurchases = useCallback(async () => {
131
159
  try {
132
160
  if (Platform.OS === 'ios') {
133
- // For iOS, use the new validateReceiptIos function
134
- const result = await validateReceiptIos(sku);
135
- return result;
136
- } else if (Platform.OS === 'android' && androidOptions) {
137
- // For Android, you would need to implement server-side validation
138
- // This is a placeholder - Android validation should be done server-side
139
- console.warn('Android receipt validation should be performed server-side');
140
- return {
141
- isValid: false,
142
- message: 'Android receipt validation should be performed server-side'
143
- };
161
+ await syncIOS().catch(error => {
162
+ if (optionsRef.current?.onSyncError) {
163
+ optionsRef.current.onSyncError(error);
164
+ } else {
165
+ console.warn('Error restoring purchases:', error);
166
+ }
167
+ });
144
168
  }
145
- throw new Error('Invalid platform or missing options for receipt validation');
169
+ await getAvailablePurchasesInternal();
146
170
  } catch (error) {
147
- console.error('Error validating receipt:', error);
148
- throw error;
171
+ console.warn('Failed to restore purchases:', error);
149
172
  }
173
+ }, [getAvailablePurchasesInternal]);
174
+ const validateReceipt = useCallback(async (sku, androidOptions) => {
175
+ return validateReceiptInternal(sku, androidOptions);
150
176
  }, []);
151
-
152
- // Listen for purchase events and trigger callbacks
153
- useEffect(() => {
154
- var _optionsRef$current3;
155
- if (currentPurchase && (_optionsRef$current3 = optionsRef.current) !== null && _optionsRef$current3 !== void 0 && _optionsRef$current3.onPurchaseSuccess) {
156
- optionsRef.current.onPurchaseSuccess(currentPurchase);
157
- }
158
- }, [currentPurchase]);
159
- useEffect(() => {
160
- var _optionsRef$current4;
161
- if (currentPurchaseError && (_optionsRef$current4 = optionsRef.current) !== null && _optionsRef$current4 !== void 0 && _optionsRef$current4.onPurchaseError) {
162
- optionsRef.current.onPurchaseError(currentPurchaseError);
177
+ const initIapWithSubscriptions = useCallback(async () => {
178
+ const result = await initConnection();
179
+ setConnected(result);
180
+ if (result) {
181
+ subscriptionsRef.current.purchaseUpdate = purchaseUpdatedListener(async purchase => {
182
+ setCurrentPurchaseError(undefined);
183
+ setCurrentPurchase(purchase);
184
+ if ('expirationDateIOS' in purchase) {
185
+ await refreshSubscriptionStatus(purchase.id);
186
+ }
187
+ if (optionsRef.current?.onPurchaseSuccess) {
188
+ optionsRef.current.onPurchaseSuccess(purchase);
189
+ }
190
+ });
191
+ subscriptionsRef.current.purchaseError = purchaseErrorListener(error => {
192
+ setCurrentPurchase(undefined);
193
+ setCurrentPurchaseError(error);
194
+ if (optionsRef.current?.onPurchaseError) {
195
+ optionsRef.current.onPurchaseError(error);
196
+ }
197
+ });
198
+ if (Platform.OS === 'ios') {
199
+ // iOS promoted products listener
200
+ subscriptionsRef.current.promotedProductsIOS = promotedProductListenerIOS(product => {
201
+ setPromotedProductIOS(product);
202
+ if (optionsRef.current?.onPromotedProductIOS) {
203
+ optionsRef.current.onPromotedProductIOS(product);
204
+ }
205
+ });
206
+ }
163
207
  }
164
- }, [currentPurchaseError]);
208
+ }, [refreshSubscriptionStatus]);
165
209
  useEffect(() => {
166
- setConnected(true);
210
+ initIapWithSubscriptions();
211
+ const currentSubscriptions = subscriptionsRef.current;
167
212
  return () => {
213
+ currentSubscriptions.purchaseUpdate?.remove();
214
+ currentSubscriptions.purchaseError?.remove();
215
+ currentSubscriptions.promotedProductsIOS?.remove();
216
+ currentSubscriptions.promotedProductIOS?.remove();
217
+ endConnection();
168
218
  setConnected(false);
169
- setCurrentPurchaseError(undefined);
170
219
  };
171
- // eslint-disable-next-line react-hooks/exhaustive-deps
172
- }, []);
220
+ }, [initIapWithSubscriptions]);
173
221
  return {
174
222
  connected,
175
223
  products,
176
224
  promotedProductsIOS,
225
+ promotedProductIdIOS,
177
226
  subscriptions,
178
- purchaseHistory,
227
+ finishTransaction,
179
228
  availablePurchases,
180
229
  currentPurchase,
181
230
  currentPurchaseError,
182
- initConnectionError,
231
+ promotedProductIOS,
232
+ activeSubscriptions,
183
233
  clearCurrentPurchase,
184
234
  clearCurrentPurchaseError,
185
- finishTransaction,
186
- getProducts,
187
- getSubscriptions,
188
- getAvailablePurchases,
189
- getPurchaseHistory,
190
- requestPurchase: iapRequestPurchase,
191
- requestSubscription: iapRequestSubscription,
235
+ getAvailablePurchases: getAvailablePurchasesInternal,
236
+ fetchProducts: fetchProductsInternal,
237
+ requestPurchase: requestPurchaseWithReset,
238
+ validateReceipt,
192
239
  restorePurchases,
193
- validateReceipt
240
+ getProducts: getProductsInternal,
241
+ getSubscriptions: getSubscriptionsInternal,
242
+ requestPromotedProductIOS,
243
+ buyPromotedProductIOS,
244
+ getActiveSubscriptions: getActiveSubscriptionsInternal,
245
+ hasActiveSubscriptions: hasActiveSubscriptionsInternal
194
246
  };
195
- };
247
+ }
196
248
  //# sourceMappingURL=useIAP.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useEffect","useRef","Platform","finishTransaction","iapFinishTransaction","getAvailablePurchases","iapGetAvailablePurchases","getProducts","iapGetProducts","getPurchaseHistory","iapGetPurchaseHistory","getSubscriptions","iapGetSubscriptions","requestPurchase","iapRequestPurchase","requestSubscription","iapRequestSubscription","sync","validateReceiptIos","useIAPContext","useIAP","options","connected","products","promotedProductsIOS","subscriptions","purchaseHistory","availablePurchases","currentPurchase","currentPurchaseError","initConnectionError","setConnected","setProducts","setSubscriptions","setAvailablePurchases","setPurchaseHistory","setCurrentPurchase","setCurrentPurchaseError","optionsRef","current","mergeWithDuplicateCheck","existingItems","newItems","getKey","merged","forEach","newItem","isDuplicate","some","existingItem","push","clearCurrentPurchase","undefined","clearCurrentPurchaseError","skus","result","product","productId","error","console","subscription","purchase","isConsumable","developerPayloadAndroid","err","restorePurchases","_optionsRef$current","OS","shouldAutoSyncPurchases","syncError","_optionsRef$current2","_optionsRef$current2$","onSyncError","call","validateReceipt","sku","androidOptions","warn","isValid","message","Error","_optionsRef$current3","onPurchaseSuccess","_optionsRef$current4","onPurchaseError"],"sourceRoot":"../../../src","sources":["hooks/useIAP.ts"],"mappings":"AAAA,SAAQA,WAAW,EAAEC,SAAS,EAAEC,MAAM,QAAO,OAAO;AACpD,SAAQC,QAAQ,QAAO,cAAc;AAErC,SACEC,iBAAiB,IAAIC,oBAAoB,EACzCC,qBAAqB,IAAIC,wBAAwB,EACjDC,WAAW,IAAIC,cAAc,EAC7BC,kBAAkB,IAAIC,qBAAqB,EAC3CC,gBAAgB,IAAIC,mBAAmB,EACvCC,eAAe,IAAIC,kBAAkB,EACrCC,mBAAmB,IAAIC,sBAAsB,QACxC,QAAQ;AACf,SAAQC,IAAI,EAAEC,kBAAkB,QAAO,mBAAmB;AAI1D,SAAQC,aAAa,QAAO,kBAAkB;AAgD9C,OAAO,MAAMC,MAAM,GAAIC,OAAuB,IAAiB;EAC7D,MAAM;IACJC,SAAS;IACTC,QAAQ;IACRC,mBAAmB;IACnBC,aAAa;IACbC,eAAe;IACfC,kBAAkB;IAClBC,eAAe;IACfC,oBAAoB;IACpBC,mBAAmB;IACnBC,YAAY;IACZC,WAAW;IACXC,gBAAgB;IAChBC,qBAAqB;IACrBC,kBAAkB;IAClBC,kBAAkB;IAClBC;EACF,CAAC,GAAGlB,aAAa,CAAC,CAAC;EAEnB,MAAMmB,UAAU,GAAGrC,MAAM,CAA4BoB,OAAO,CAAC;EAE7DrB,SAAS,CAAC,MAAM;IACdsC,UAAU,CAACC,OAAO,GAAGlB,OAAO;EAC9B,CAAC,EAAE,CAACA,OAAO,CAAC,CAAC;;EAEb;EACA,MAAMmB,uBAAuB,GAAGzC,WAAW,CACzC,CACE0C,aAAkB,EAClBC,QAAa,EACbC,MAA2B,KACnB;IACR,MAAMC,MAAM,GAAG,CAAC,GAAGH,aAAa,CAAC;IACjCC,QAAQ,CAACG,OAAO,CAAEC,OAAO,IAAK;MAC5B,MAAMC,WAAW,GAAGH,MAAM,CAACI,IAAI,CAC5BC,YAAY,IAAKN,MAAM,CAACM,YAAY,CAAC,KAAKN,MAAM,CAACG,OAAO,CAC3D,CAAC;MACD,IAAI,CAACC,WAAW,EAAE;QAChBH,MAAM,CAACM,IAAI,CAACJ,OAAO,CAAC;MACtB;IACF,CAAC,CAAC;IACF,OAAOF,MAAM;EACf,CAAC,EACD,EACF,CAAC;EAED,MAAMO,oBAAoB,GAAGpD,WAAW,CAAC,MAAM;IAC7CqC,kBAAkB,CAACgB,SAAS,CAAC;EAC/B,CAAC,EAAE,CAAChB,kBAAkB,CAAC,CAAC;EAExB,MAAMiB,yBAAyB,GAAGtD,WAAW,CAAC,MAAM;IAClDsC,uBAAuB,CAACe,SAAS,CAAC;EACpC,CAAC,EAAE,CAACf,uBAAuB,CAAC,CAAC;EAE7B,MAAM9B,WAAW,GAAGR,WAAW,CAC7B,OAAO;IAACuD;EAAsB,CAAC,KAAoB;IACjD,IAAI;MACF,MAAMC,MAAM,GAAG,MAAM/C,cAAc,CAAC;QAAC8C;MAAI,CAAC,CAAC;MAC3CtB,WAAW,CACTQ,uBAAuB,CACrBjB,QAAQ,EACRgC,MAAM,EACLC,OAAO,IAAMA,OAAO,CAAaC,SAAS,IAAI,EACjD,CACF,CAAC;IACH,CAAC,CAAC,OAAOC,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,yBAAyB,EAAEA,KAAK,CAAC;IACjD;EACF,CAAC,EACD,CAAC1B,WAAW,EAAEQ,uBAAuB,EAAEjB,QAAQ,CACjD,CAAC;EAED,MAAMZ,gBAAgB,GAAGZ,WAAW,CAClC,OAAO;IAACuD;EAAsB,CAAC,KAAoB;IACjD,IAAI;MACF,MAAMC,MAAM,GAAG,MAAM3C,mBAAmB,CAAC;QAAC0C;MAAI,CAAC,CAAC;MAChDrB,gBAAgB,CACdO,uBAAuB,CACrBf,aAAa,EACb8B,MAAM,EACLK,YAAY,IAAMA,YAAY,CAAkBH,SAAS,IAAI,EAChE,CACF,CAAC;IACH,CAAC,CAAC,OAAOC,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,8BAA8B,EAAEA,KAAK,CAAC;IACtD;EACF,CAAC,EACD,CAACzB,gBAAgB,EAAEO,uBAAuB,EAAEf,aAAa,CAC3D,CAAC;EAED,MAAMpB,qBAAqB,GAAGN,WAAW,CAAC,YAA2B;IACnE,IAAI;MACF,MAAMwD,MAAM,GAAG,MAAMjD,wBAAwB,CAAC,CAAC;MAC/C4B,qBAAqB,CAACqB,MAAM,CAAC;IAC/B,CAAC,CAAC,OAAOG,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,oCAAoC,EAAEA,KAAK,CAAC;IAC5D;EACF,CAAC,EAAE,CAACxB,qBAAqB,CAAC,CAAC;EAE3B,MAAMzB,kBAAkB,GAAGV,WAAW,CAAC,YAA2B;IAChE,IAAI;MACF,MAAMwD,MAAM,GAAG,MAAM7C,qBAAqB,CAAC,CAAC;MAC5CyB,kBAAkB,CAACoB,MAAM,CAAC;IAC5B,CAAC,CAAC,OAAOG,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,iCAAiC,EAAEA,KAAK,CAAC;IACzD;EACF,CAAC,EAAE,CAACvB,kBAAkB,CAAC,CAAC;EAExB,MAAMhC,iBAAiB,GAAGJ,WAAW,CACnC,OAAO;IACL8D,QAAQ;IACRC,YAAY;IACZC;EAKF,CAAC,KAAwD;IACvD,IAAI;MACF,OAAO,MAAM3D,oBAAoB,CAAC;QAChCyD,QAAQ;QACRC,YAAY;QACZC;MACF,CAAC,CAAC;IACJ,CAAC,CAAC,OAAOC,GAAG,EAAE;MACZ,MAAMA,GAAG;IACX,CAAC,SAAS;MACR,IAAIH,QAAQ,CAACJ,SAAS,MAAK7B,eAAe,aAAfA,eAAe,uBAAfA,eAAe,CAAE6B,SAAS,GAAE;QACrDrB,kBAAkB,CAACgB,SAAS,CAAC;MAC/B;MAEA,IAAIS,QAAQ,CAACJ,SAAS,MAAK5B,oBAAoB,aAApBA,oBAAoB,uBAApBA,oBAAoB,CAAE4B,SAAS,GAAE;QAC1DpB,uBAAuB,CAACe,SAAS,CAAC;MACpC;IACF;EACF,CAAC,EACD,CACExB,eAAe,aAAfA,eAAe,uBAAfA,eAAe,CAAE6B,SAAS,EAC1B5B,oBAAoB,aAApBA,oBAAoB,uBAApBA,oBAAoB,CAAE4B,SAAS,EAC/BrB,kBAAkB,EAClBC,uBAAuB,CAE3B,CAAC;EAED,MAAM4B,gBAAgB,GAAGlE,WAAW,CAAC,YAA2B;IAC9D,IAAI;MAAA,IAAAmE,mBAAA;MACF;MACA,IACEhE,QAAQ,CAACiE,EAAE,KAAK,KAAK,IACrB,EAAAD,mBAAA,GAAA5B,UAAU,CAACC,OAAO,cAAA2B,mBAAA,uBAAlBA,mBAAA,CAAoBE,uBAAuB,MAAK,KAAK,EACrD;QACA,IAAI;UACF,MAAMnD,IAAI,CAAC,CAAC;QACd,CAAC,CAAC,OAAOoD,SAAS,EAAE;UAAA,IAAAC,oBAAA,EAAAC,qBAAA;UAClBZ,OAAO,CAACD,KAAK,CAAC,aAAa,EAAEW,SAAS,CAAC;UACvC,CAAAC,oBAAA,GAAAhC,UAAU,CAACC,OAAO,cAAA+B,oBAAA,gBAAAC,qBAAA,GAAlBD,oBAAA,CAAoBE,WAAW,cAAAD,qBAAA,eAA/BA,qBAAA,CAAAE,IAAA,CAAAH,oBAAA,EAAkCD,SAAkB,CAAC;QACvD;MACF;;MAEA;MACA,MAAMhE,qBAAqB,CAAC,CAAC;IAC/B,CAAC,CAAC,OAAOqD,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,4BAA4B,EAAEA,KAAK,CAAC;MAClD,MAAMA,KAAK;IACb;EACF,CAAC,EAAE,CAACrD,qBAAqB,CAAC,CAAC;EAE3B,MAAMqE,eAAe,GAAG3E,WAAW,CACjC,OACE4E,GAAW,EACXC,cAKC,KACgB;IACjB,IAAI;MACF,IAAI1E,QAAQ,CAACiE,EAAE,KAAK,KAAK,EAAE;QACzB;QACA,MAAMZ,MAAM,GAAG,MAAMrC,kBAAkB,CAACyD,GAAG,CAAC;QAC5C,OAAOpB,MAAM;MACf,CAAC,MAAM,IAAIrD,QAAQ,CAACiE,EAAE,KAAK,SAAS,IAAIS,cAAc,EAAE;QACtD;QACA;QACAjB,OAAO,CAACkB,IAAI,CACV,4DACF,CAAC;QACD,OAAO;UACLC,OAAO,EAAE,KAAK;UACdC,OAAO,EACL;QACJ,CAAC;MACH;MAEA,MAAM,IAAIC,KAAK,CACb,4DACF,CAAC;IACH,CAAC,CAAC,OAAOtB,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,2BAA2B,EAAEA,KAAK,CAAC;MACjD,MAAMA,KAAK;IACb;EACF,CAAC,EACD,EACF,CAAC;;EAED;EACA1D,SAAS,CAAC,MAAM;IAAA,IAAAiF,oBAAA;IACd,IAAIrD,eAAe,KAAAqD,oBAAA,GAAI3C,UAAU,CAACC,OAAO,cAAA0C,oBAAA,eAAlBA,oBAAA,CAAoBC,iBAAiB,EAAE;MAC5D5C,UAAU,CAACC,OAAO,CAAC2C,iBAAiB,CAACtD,eAAe,CAAC;IACvD;EACF,CAAC,EAAE,CAACA,eAAe,CAAC,CAAC;EAErB5B,SAAS,CAAC,MAAM;IAAA,IAAAmF,oBAAA;IACd,IAAItD,oBAAoB,KAAAsD,oBAAA,GAAI7C,UAAU,CAACC,OAAO,cAAA4C,oBAAA,eAAlBA,oBAAA,CAAoBC,eAAe,EAAE;MAC/D9C,UAAU,CAACC,OAAO,CAAC6C,eAAe,CAACvD,oBAAoB,CAAC;IAC1D;EACF,CAAC,EAAE,CAACA,oBAAoB,CAAC,CAAC;EAE1B7B,SAAS,CAAC,MAAM;IACd+B,YAAY,CAAC,IAAI,CAAC;IAElB,OAAO,MAAM;MACXA,YAAY,CAAC,KAAK,CAAC;MACnBM,uBAAuB,CAACe,SAAS,CAAC;IACpC,CAAC;IACD;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,OAAO;IACL9B,SAAS;IACTC,QAAQ;IACRC,mBAAmB;IACnBC,aAAa;IACbC,eAAe;IACfC,kBAAkB;IAClBC,eAAe;IACfC,oBAAoB;IACpBC,mBAAmB;IACnBqB,oBAAoB;IACpBE,yBAAyB;IACzBlD,iBAAiB;IACjBI,WAAW;IACXI,gBAAgB;IAChBN,qBAAqB;IACrBI,kBAAkB;IAClBI,eAAe,EAAEC,kBAAkB;IACnCC,mBAAmB,EAAEC,sBAAsB;IAC3CiD,gBAAgB;IAChBS;EACF,CAAC;AACH,CAAC"}
1
+ {"version":3,"names":["useCallback","useEffect","useState","useRef","Platform","endConnection","initConnection","purchaseErrorListener","purchaseUpdatedListener","promotedProductListenerIOS","getAvailablePurchases","finishTransaction","finishTransactionInternal","requestPurchase","requestPurchaseInternal","fetchProducts","validateReceipt","validateReceiptInternal","getActiveSubscriptions","hasActiveSubscriptions","syncIOS","requestPromotedProductIOS","buyPromotedProductIOS","useIAP","options","connected","setConnected","products","setProducts","promotedProductsIOS","subscriptions","setSubscriptions","availablePurchases","setAvailablePurchases","currentPurchase","setCurrentPurchase","promotedProductIOS","setPromotedProductIOS","currentPurchaseError","setCurrentPurchaseError","promotedProductIdIOS","activeSubscriptions","setActiveSubscriptions","optionsRef","mergeWithDuplicateCheck","existingItems","newItems","getKey","merged","forEach","newItem","isDuplicate","some","existingItem","push","current","subscriptionsRef","subscriptionsRefState","clearCurrentPurchase","undefined","clearCurrentPurchaseError","getProductsInternal","skus","result","type","prevProducts","product","id","error","console","getSubscriptionsInternal","prevSubscriptions","subscription","fetchProductsInternal","params","getAvailablePurchasesInternal","getActiveSubscriptionsInternal","subscriptionIds","hasActiveSubscriptionsInternal","purchase","isConsumable","err","productId","requestPurchaseWithReset","requestObj","refreshSubscriptionStatus","sub","warn","restorePurchases","OS","catch","onSyncError","sku","androidOptions","initIapWithSubscriptions","purchaseUpdate","onPurchaseSuccess","purchaseError","onPurchaseError","onPromotedProductIOS","currentSubscriptions","remove","getProducts","getSubscriptions"],"sourceRoot":"../../../src","sources":["hooks/useIAP.ts"],"mappings":"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","ignoreList":[]}