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

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 +144 -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,97 @@
1
+ /**
2
+ * Error utilities for parsing platform-specific error responses
3
+ */
4
+
5
+ import {ErrorCode} from '../types';
6
+
7
+ export interface IapError {
8
+ code: string;
9
+ message: string;
10
+ responseCode?: number;
11
+ debugMessage?: string;
12
+ productId?: string;
13
+ [key: string]: any; // Allow additional platform-specific fields
14
+ }
15
+
16
+ /**
17
+ * Parses error string from native modules into a structured error object
18
+ *
19
+ * Native modules return errors in different formats:
20
+ * - Android: JSON string like '{"code":"E_USER_CANCELLED","message":"User cancelled the purchase","responseCode":1}'
21
+ * - iOS: JSON string or plain message
22
+ * - Legacy: "CODE: message" format
23
+ *
24
+ * @param errorString - The error string from native module
25
+ * @returns Parsed error object with code and message
26
+ */
27
+ export function parseErrorStringToJsonObj(
28
+ errorString: string | Error | unknown,
29
+ ): IapError {
30
+ // Handle Error objects
31
+ if (errorString instanceof Error) {
32
+ errorString = errorString.message;
33
+ }
34
+
35
+ // Handle non-string inputs
36
+ if (typeof errorString !== 'string') {
37
+ return {
38
+ code: ErrorCode.E_UNKNOWN,
39
+ message: 'Unknown error occurred',
40
+ };
41
+ }
42
+
43
+ // Try to parse as JSON first
44
+ try {
45
+ const parsed = JSON.parse(errorString);
46
+ if (typeof parsed === 'object' && parsed !== null) {
47
+ // Ensure it has at least code and message
48
+ return {
49
+ code: parsed.code || ErrorCode.E_UNKNOWN,
50
+ message: parsed.message || errorString,
51
+ ...parsed,
52
+ };
53
+ }
54
+ } catch {
55
+ // Not JSON, continue with other formats
56
+ }
57
+
58
+ // Try to parse "CODE: message" format
59
+ const colonIndex = errorString.indexOf(':');
60
+ if (colonIndex > 0 && colonIndex < 50) {
61
+ // Reasonable position for error code
62
+ const potentialCode = errorString.substring(0, colonIndex).trim();
63
+ // Check if it looks like an error code (starts with E_ or contains uppercase)
64
+ if (potentialCode.startsWith('E_') || /^[A-Z_]+$/.test(potentialCode)) {
65
+ return {
66
+ code: potentialCode,
67
+ message: errorString.substring(colonIndex + 1).trim(),
68
+ };
69
+ }
70
+ }
71
+
72
+ // Fallback: treat entire string as message
73
+ return {
74
+ code: ErrorCode.E_UNKNOWN,
75
+ message: errorString,
76
+ };
77
+ }
78
+
79
+ /**
80
+ * Checks if an error code indicates user cancellation
81
+ * @param error - Error object or string
82
+ * @returns true if the error is a user cancellation
83
+ */
84
+ export function isUserCancelledError(
85
+ error: IapError | string | Error | unknown,
86
+ ): boolean {
87
+ const errorObj =
88
+ typeof error === 'object' && error !== null && 'code' in error
89
+ ? (error as IapError)
90
+ : parseErrorStringToJsonObj(error);
91
+
92
+ return (
93
+ errorObj.code === ErrorCode.E_USER_CANCELLED ||
94
+ errorObj.code === 'E_USER_CANCELED' || // Alternative spelling
95
+ errorObj.responseCode === 1
96
+ ); // Android BillingClient.BillingResponseCode.USER_CANCELED
97
+ }
@@ -0,0 +1,209 @@
1
+ /**
2
+ * Type Bridge Utilities
3
+ *
4
+ * This file provides conversion utilities between Nitro types (simple primitives)
5
+ * and TypeScript union types (complex types.ts definitions).
6
+ *
7
+ * Purpose: Prevent type fragmentation between native (Nitro) and TypeScript sides
8
+ */
9
+
10
+ import type {NitroProduct, NitroPurchase} from '../specs/RnIap.nitro';
11
+ import type {Product, Purchase, SubscriptionProduct} from '../types';
12
+ import {Platform} from 'react-native';
13
+
14
+ // ============================================================================
15
+ // PRODUCT CONVERSION
16
+ // ============================================================================
17
+
18
+ /**
19
+ * Convert NitroProduct (from native) to TypeScript Product (for library consumers)
20
+ * This ensures all fields are properly mapped and accessible
21
+ */
22
+ export function convertNitroProductToProduct(nitroProduct: NitroProduct): Product {
23
+ // Create base product with common fields, handling platform casting
24
+ const product: any = {
25
+ id: nitroProduct.id,
26
+ title: nitroProduct.title,
27
+ description: nitroProduct.description,
28
+ type: nitroProduct.type as 'inapp' | 'subs',
29
+ displayName: nitroProduct.displayName,
30
+ displayPrice: nitroProduct.displayPrice || '',
31
+ currency: nitroProduct.currency || '',
32
+ price: nitroProduct.price,
33
+ platform: nitroProduct.platform as 'ios' | 'android',
34
+ };
35
+
36
+ // Add platform-specific fields based on current platform
37
+ if (Platform.OS === 'ios') {
38
+ // Map iOS fields from Nitro to TypeScript types
39
+ const iosProduct = product as any; // Temporarily cast to access iOS fields
40
+ iosProduct.isFamilyShareable = nitroProduct.isFamilyShareable;
41
+ iosProduct.jsonRepresentation = nitroProduct.jsonRepresentation;
42
+ iosProduct.subscriptionPeriodUnitIOS = nitroProduct.subscriptionPeriodUnitIOS;
43
+ iosProduct.subscriptionPeriodNumberIOS = nitroProduct.subscriptionPeriodNumberIOS;
44
+ iosProduct.introductoryPriceIOS = nitroProduct.introductoryPriceIOS;
45
+ iosProduct.introductoryPriceAsAmountIOS = nitroProduct.introductoryPriceAsAmountIOS;
46
+ iosProduct.introductoryPricePaymentModeIOS = nitroProduct.introductoryPricePaymentModeIOS;
47
+ iosProduct.introductoryPriceNumberOfPeriodsIOS = nitroProduct.introductoryPriceNumberOfPeriodsIOS;
48
+ iosProduct.introductoryPriceSubscriptionPeriodIOS = nitroProduct.introductoryPriceSubscriptionPeriodIOS;
49
+ } else if (Platform.OS === 'android') {
50
+ // Map Android fields from Nitro to TypeScript types
51
+ const androidProduct = product as any; // Temporarily cast to access Android fields
52
+ androidProduct.originalPrice = nitroProduct.originalPrice;
53
+ androidProduct.originalPriceAmountMicros = nitroProduct.originalPriceAmountMicros;
54
+ androidProduct.introductoryPriceValue = nitroProduct.introductoryPriceValue;
55
+ androidProduct.introductoryPriceCycles = nitroProduct.introductoryPriceCycles;
56
+ androidProduct.introductoryPricePeriod = nitroProduct.introductoryPricePeriod;
57
+ androidProduct.subscriptionPeriod = nitroProduct.subscriptionPeriod;
58
+ androidProduct.freeTrialPeriod = nitroProduct.freeTrialPeriod;
59
+
60
+ // Map subscription offer details (parse from JSON string)
61
+ if (nitroProduct.subscriptionOfferDetailsAndroid) {
62
+ try {
63
+ androidProduct.subscriptionOfferDetailsAndroid = JSON.parse(nitroProduct.subscriptionOfferDetailsAndroid);
64
+ } catch (e) {
65
+ console.warn('Failed to parse subscription offer details:', e);
66
+ androidProduct.subscriptionOfferDetailsAndroid = null;
67
+ }
68
+ }
69
+
70
+ // Create flattened offer fields for easier access in example code
71
+ androidProduct.oneTimePurchaseOfferFormattedPrice = nitroProduct.displayPrice;
72
+ androidProduct.oneTimePurchaseOfferPriceAmountMicros = nitroProduct.originalPriceAmountMicros;
73
+ androidProduct.oneTimePurchaseOfferPriceCurrencyCode = nitroProduct.currency;
74
+ }
75
+
76
+ return product as Product;
77
+ }
78
+
79
+ // Note: Use nitroProducts.map(convertNitroProductToProduct) instead of a separate function
80
+
81
+ /**
82
+ * Convert Product to SubscriptionProduct (type-safe casting)
83
+ */
84
+ export function convertProductToSubscriptionProduct(product: Product): SubscriptionProduct {
85
+ if (product.type !== 'subs') {
86
+ console.warn('Converting non-subscription product to SubscriptionProduct:', product.id);
87
+ }
88
+ // Since SubscriptionProduct is now an intersection type, we need to cast properly
89
+ return {
90
+ ...product,
91
+ type: 'subs' as const,
92
+ } as SubscriptionProduct;
93
+ }
94
+
95
+ // ============================================================================
96
+ // PURCHASE CONVERSION
97
+ // ============================================================================
98
+
99
+ /**
100
+ * Convert NitroPurchase (from native) to TypeScript Purchase (for library consumers)
101
+ */
102
+ export function convertNitroPurchaseToPurchase(nitroPurchase: NitroPurchase): Purchase {
103
+ // Create base purchase with common fields
104
+ const purchase: any = {
105
+ id: nitroPurchase.id,
106
+ productId: nitroPurchase.productId,
107
+ transactionDate: nitroPurchase.transactionDate,
108
+ transactionReceipt: '', // Will be set by native layer
109
+ purchaseToken: nitroPurchase.purchaseToken,
110
+ platform: nitroPurchase.platform as 'ios' | 'android',
111
+ };
112
+
113
+ // Add platform-specific fields
114
+ if (Platform.OS === 'ios') {
115
+ const iosPurchase = purchase as any;
116
+ iosPurchase.quantityIOS = nitroPurchase.quantityIOS;
117
+ iosPurchase.originalTransactionDateIOS = nitroPurchase.originalTransactionDateIOS;
118
+ iosPurchase.originalTransactionIdentifierIOS = nitroPurchase.originalTransactionIdentifierIOS;
119
+ iosPurchase.appAccountToken = nitroPurchase.appAccountToken;
120
+ } else if (Platform.OS === 'android') {
121
+ const androidPurchase = purchase as any;
122
+ androidPurchase.purchaseTokenAndroid = nitroPurchase.purchaseTokenAndroid;
123
+ androidPurchase.dataAndroid = nitroPurchase.dataAndroid;
124
+ androidPurchase.signatureAndroid = nitroPurchase.signatureAndroid;
125
+ androidPurchase.autoRenewingAndroid = nitroPurchase.autoRenewingAndroid;
126
+ androidPurchase.purchaseStateAndroid = nitroPurchase.purchaseStateAndroid;
127
+ androidPurchase.isAcknowledgedAndroid = nitroPurchase.isAcknowledgedAndroid;
128
+ androidPurchase.packageNameAndroid = nitroPurchase.packageNameAndroid;
129
+ androidPurchase.obfuscatedAccountIdAndroid = nitroPurchase.obfuscatedAccountIdAndroid;
130
+ androidPurchase.obfuscatedProfileIdAndroid = nitroPurchase.obfuscatedProfileIdAndroid;
131
+ }
132
+
133
+ return purchase as Purchase;
134
+ }
135
+
136
+ // Note: Use nitroPurchases.map(convertNitroPurchaseToPurchase) instead of a separate function
137
+
138
+ // ============================================================================
139
+ // TYPE VALIDATION
140
+ // ============================================================================
141
+
142
+ /**
143
+ * Validate that a NitroProduct has all required fields for conversion
144
+ */
145
+ export function validateNitroProduct(nitroProduct: NitroProduct): boolean {
146
+ const required = ['id', 'title', 'description', 'type', 'platform'];
147
+ for (const field of required) {
148
+ if (!(field in nitroProduct) || nitroProduct[field as keyof NitroProduct] == null) {
149
+ console.error(`NitroProduct missing required field: ${field}`, nitroProduct);
150
+ return false;
151
+ }
152
+ }
153
+ return true;
154
+ }
155
+
156
+ /**
157
+ * Validate that a NitroPurchase has all required fields for conversion
158
+ */
159
+ export function validateNitroPurchase(nitroPurchase: NitroPurchase): boolean {
160
+ const required = ['id', 'productId', 'transactionDate', 'platform'];
161
+ for (const field of required) {
162
+ if (!(field in nitroPurchase) || nitroPurchase[field as keyof NitroPurchase] == null) {
163
+ console.error(`NitroPurchase missing required field: ${field}`, nitroPurchase);
164
+ return false;
165
+ }
166
+ }
167
+ return true;
168
+ }
169
+
170
+ // ============================================================================
171
+ // TYPE SYNCHRONIZATION HELPERS
172
+ // ============================================================================
173
+
174
+ /**
175
+ * Check if Nitro types and TypeScript types are synchronized
176
+ * This function can be run in development to detect type mismatches
177
+ */
178
+ export function checkTypeSynchronization(): {
179
+ isSync: boolean;
180
+ issues: string[];
181
+ } {
182
+ const issues: string[] = [];
183
+
184
+ try {
185
+ // Simple test: can we convert between types?
186
+ const testNitroProduct: NitroProduct = {
187
+ id: 'test',
188
+ title: 'Test',
189
+ description: 'Test',
190
+ type: 'inapp',
191
+ platform: 'ios',
192
+ displayPrice: '$1.00',
193
+ currency: 'USD',
194
+ };
195
+
196
+ const converted = convertNitroProductToProduct(testNitroProduct);
197
+
198
+ if (!converted.id || !converted.title) {
199
+ issues.push('Type conversion failed');
200
+ }
201
+ } catch (error) {
202
+ issues.push(`Type conversion error: ${error}`);
203
+ }
204
+
205
+ return {
206
+ isSync: issues.length === 0,
207
+ issues,
208
+ };
209
+ }
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2024 hyochan
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
package/RNIap.podspec DELETED
@@ -1,36 +0,0 @@
1
- require "json"
2
-
3
- package = JSON.parse(File.read(File.join(__dir__, "package.json")))
4
- folly_compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32'
5
-
6
- Pod::Spec.new do |s|
7
- s.name = "RNIap"
8
- s.version = package["version"]
9
- s.summary = package["description"]
10
- s.homepage = package["homepage"]
11
- s.license = package["license"]
12
- s.authors = package["author"]
13
-
14
- s.platforms = { :ios => "10.0" , :tvos => "10.0", :visionos => "1.0" }
15
- s.source = { :git => "https://github.com/hyochan/react-native-iap.git", :tag => "#{s.version}" }
16
-
17
- s.source_files = "ios/*.{h,m,mm,swift}"
18
-
19
- s.requires_arc = true
20
-
21
- s.dependency "React-Core"
22
-
23
- # Don't install the dependencies when we run `pod install` in the old architecture.
24
- if ENV['RCT_NEW_ARCH_ENABLED'] == '1' then
25
- s.compiler_flags = folly_compiler_flags + " -DRCT_NEW_ARCH_ENABLED=1"
26
- s.pod_target_xcconfig = {
27
- "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\"",
28
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++17"
29
- }
30
-
31
- s.dependency "RCT-Folly"
32
- s.dependency "RCTRequired"
33
- s.dependency "RCTTypeSafety"
34
- s.dependency "ReactCommon/turbomodule/core"
35
- end
36
- end
@@ -1,14 +0,0 @@
1
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
2
- package="com.dooboolab.rniap">
3
-
4
- <application android:exported="true">
5
- <receiver android:name="com.amazon.device.iap.ResponseReceiver" android:exported="true"
6
- >
7
- <intent-filter>
8
- <action
9
- android:name="com.amazon.inapp.purchasing.NOTIFY"
10
- android:permission="com.amazon.inapp.purchasing.Permission.NOTIFY" />
11
- </intent-filter>
12
- </receiver>
13
- </application>
14
- </manifest>
@@ -1,10 +0,0 @@
1
- package com.dooboolab.rniap
2
-
3
- import com.facebook.react.bridge.WritableMap
4
-
5
- interface EventSender {
6
- fun sendEvent(
7
- eventName: String,
8
- params: WritableMap?,
9
- )
10
- }
@@ -1,29 +0,0 @@
1
- package com.dooboolab.rniap
2
-
3
- import android.content.Context
4
- import com.amazon.device.iap.PurchasingListener
5
- import com.amazon.device.iap.model.FulfillmentResult
6
- import com.amazon.device.iap.model.ProrationMode
7
- import com.amazon.device.iap.model.RequestId
8
-
9
- interface PurchasingServiceProxy {
10
- fun registerListener(
11
- var0: Context?,
12
- var1: PurchasingListener?,
13
- )
14
-
15
- fun getUserData(): RequestId
16
-
17
- fun purchase(var0: String?): RequestId
18
-
19
- fun getProductData(var0: Set<String?>?): RequestId
20
-
21
- fun getPurchaseUpdates(var0: Boolean): RequestId
22
-
23
- fun notifyFulfillment(
24
- var0: String?,
25
- var1: FulfillmentResult?,
26
- )
27
-
28
- fun modifySubscription(var0: String?, var1: ProrationMode): RequestId
29
- }
@@ -1,31 +0,0 @@
1
- package com.dooboolab.rniap
2
-
3
- import android.content.Context
4
- import com.amazon.device.iap.PurchasingListener
5
- import com.amazon.device.iap.PurchasingService
6
- import com.amazon.device.iap.model.FulfillmentResult
7
- import com.amazon.device.iap.model.ProrationMode
8
- import com.amazon.device.iap.model.RequestId
9
-
10
- class PurchasingServiceProxyAmazonImpl : PurchasingServiceProxy {
11
- override fun registerListener(
12
- var0: Context?,
13
- var1: PurchasingListener?,
14
- ) = PurchasingService.registerListener(var0, var1)
15
-
16
- override fun getUserData(): RequestId = PurchasingService.getUserData()
17
-
18
- override fun purchase(var0: String?): RequestId = PurchasingService.purchase(var0)
19
-
20
- override fun getProductData(var0: Set<String?>?): RequestId = PurchasingService.getProductData(var0)
21
-
22
- override fun getPurchaseUpdates(var0: Boolean): RequestId = PurchasingService.getPurchaseUpdates(var0)
23
-
24
- override fun notifyFulfillment(
25
- var0: String?,
26
- var1: FulfillmentResult?,
27
- ) = PurchasingService.notifyFulfillment(var0, var1)
28
-
29
- override fun modifySubscription(var0: String?, var1: ProrationMode): RequestId =
30
- PurchasingService.modifySubscription(var0, var1)
31
- }
@@ -1,55 +0,0 @@
1
- package com.dooboolab.rniap
2
-
3
- import android.app.Activity
4
- import android.util.Log
5
- import com.amazon.device.iap.PurchasingService
6
- import com.dooboolab.rniap.modifysubscription.RNIapAmazonModifySubscriptionListener
7
-
8
- /**
9
- * In order of the IAP process to show correctly, AmazonPurchasingService must be registered on Activity.onCreate
10
- * registering it in on Application.onCreate will not throw an error but it will now show the Native purchasing screen
11
- */
12
- class RNIapActivityListener {
13
- companion object {
14
- @JvmStatic
15
- var hasListener = false
16
-
17
- @JvmStatic
18
- var amazonListener: RNIapAmazonListener? = null
19
-
20
- @JvmStatic
21
- var amazonModifySubscriptionListener: RNIapAmazonModifySubscriptionListener? = null
22
-
23
- @JvmStatic
24
- fun initListeners(eventSender: EventSender?, purchasingService: PurchasingServiceProxy?) {
25
- if (amazonListener == null || amazonModifySubscriptionListener == null) {
26
- Log.e(
27
- RNIapAmazonModule.TAG,
28
- "registerActivity should be called on Activity.onCreate ",
29
- )
30
- }
31
-
32
- amazonListener?.eventSender = eventSender
33
- amazonListener?.purchasingService = purchasingService
34
- amazonModifySubscriptionListener?.eventSender = eventSender
35
- }
36
-
37
- @JvmStatic
38
- fun registerActivity(activity: Activity) {
39
- amazonListener = RNIapAmazonListener(null, null)
40
- amazonModifySubscriptionListener = RNIapAmazonModifySubscriptionListener(null)
41
-
42
- try {
43
- PurchasingService.registerListener(activity, amazonListener)
44
- PurchasingService.registerListener(activity, amazonModifySubscriptionListener)
45
- hasListener = true
46
-
47
- // Prefetch user and purchases as per Amazon SDK documentation:
48
- PurchasingService.getUserData()
49
- PurchasingService.getPurchaseUpdates(false)
50
- } catch (e: Exception) {
51
- Log.e(RNIapAmazonModule.TAG, "Error initializing Amazon appstore sdk", e)
52
- }
53
- }
54
- }
55
- }