react-native-iap 15.4.0-rc.2 → 15.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/README.md +23 -25
  2. package/android/src/main/java/com/margelo/nitro/iap/HybridRnIap.kt +250 -168
  3. package/android/src/main/java/com/margelo/nitro/iap/ProductSerialization.kt +98 -0
  4. package/ios/HybridRnIap.swift +19 -1
  5. package/ios/RnIapHelper.swift +30 -2
  6. package/lib/module/hooks/useIAP.js +19 -3
  7. package/lib/module/hooks/useIAP.js.map +1 -1
  8. package/lib/module/index.js +104 -18
  9. package/lib/module/index.js.map +1 -1
  10. package/lib/module/index.kepler.js +3 -0
  11. package/lib/module/index.kepler.js.map +1 -1
  12. package/lib/module/types.js +67 -6
  13. package/lib/module/types.js.map +1 -1
  14. package/lib/module/utils/type-bridge.js +22 -3
  15. package/lib/module/utils/type-bridge.js.map +1 -1
  16. package/lib/module/vega-adapter.js +24 -2
  17. package/lib/module/vega-adapter.js.map +1 -1
  18. package/lib/typescript/src/hooks/useIAP.d.ts +25 -2
  19. package/lib/typescript/src/hooks/useIAP.d.ts.map +1 -1
  20. package/lib/typescript/src/index.d.ts +50 -10
  21. package/lib/typescript/src/index.d.ts.map +1 -1
  22. package/lib/typescript/src/index.kepler.d.ts +3 -0
  23. package/lib/typescript/src/index.kepler.d.ts.map +1 -1
  24. package/lib/typescript/src/specs/RnIap.nitro.d.ts +79 -9
  25. package/lib/typescript/src/specs/RnIap.nitro.d.ts.map +1 -1
  26. package/lib/typescript/src/types.d.ts +223 -35
  27. package/lib/typescript/src/types.d.ts.map +1 -1
  28. package/lib/typescript/src/utils/type-bridge.d.ts.map +1 -1
  29. package/lib/typescript/src/vega-adapter.d.ts.map +1 -1
  30. package/nitrogen/generated/android/NitroIap+autolinking.cmake +3 -0
  31. package/nitrogen/generated/android/c++/JBillingChoiceImageLayoutAndroid.hpp +61 -0
  32. package/nitrogen/generated/android/c++/JBillingChoiceScreenTypeAndroid.hpp +61 -0
  33. package/nitrogen/generated/android/c++/JBillingProgramAndroid.hpp +3 -0
  34. package/nitrogen/generated/android/c++/JDeveloperBillingLaunchModeAndroid.hpp +61 -0
  35. package/nitrogen/generated/android/c++/JDeveloperBillingOptionParamsAndroid.hpp +78 -0
  36. package/nitrogen/generated/android/c++/JDeveloperBillingTypeAndroid.hpp +61 -0
  37. package/nitrogen/generated/android/c++/JDeveloperProvidedBillingDetailsAndroid.hpp +45 -5
  38. package/nitrogen/generated/android/c++/JDeveloperProvidedBillingProductAndroid.hpp +72 -0
  39. package/nitrogen/generated/android/c++/JFunc_void_DeveloperProvidedBillingDetailsAndroid.hpp +10 -0
  40. package/nitrogen/generated/android/c++/JHybridRnIapSpec.cpp +118 -3
  41. package/nitrogen/generated/android/c++/JHybridRnIapSpec.hpp +4 -1
  42. package/nitrogen/generated/android/c++/JInAppMessageCategoryAndroid.hpp +58 -0
  43. package/nitrogen/generated/android/c++/JInAppMessageResponseCodeAndroid.hpp +58 -0
  44. package/nitrogen/generated/android/c++/JInitConnectionConfig.hpp +7 -1
  45. package/nitrogen/generated/android/c++/JNitroBillingChoiceInfoAndroid.hpp +66 -0
  46. package/nitrogen/generated/android/c++/JNitroBillingProgramAvailabilityResultAndroid.hpp +18 -3
  47. package/nitrogen/generated/android/c++/JNitroBillingProgramInformationDialogParamsAndroid.hpp +63 -0
  48. package/nitrogen/generated/android/c++/JNitroBillingResultAndroid.hpp +72 -0
  49. package/nitrogen/generated/android/c++/JNitroGetBillingChoiceInfoParamsAndroid.hpp +74 -0
  50. package/nitrogen/generated/android/c++/JNitroInAppMessageParamsAndroid.hpp +64 -0
  51. package/nitrogen/generated/android/c++/JNitroInAppMessageResultAndroid.hpp +68 -0
  52. package/nitrogen/generated/android/c++/JNitroLaunchExternalLinkParamsAndroid.hpp +10 -1
  53. package/nitrogen/generated/android/c++/JNitroOneTimePurchaseOfferDetail.hpp +5 -1
  54. package/nitrogen/generated/android/c++/JNitroProduct.hpp +13 -1
  55. package/nitrogen/generated/android/c++/JNitroPurchaseRequest.hpp +7 -0
  56. package/nitrogen/generated/android/c++/JNitroRequestPurchaseAndroid.hpp +16 -1
  57. package/nitrogen/generated/android/c++/JProductType.hpp +58 -0
  58. package/nitrogen/generated/android/c++/JSubResponseCodeAndroid.hpp +61 -0
  59. package/nitrogen/generated/android/c++/JVariant_NullType_Array_InAppMessageCategoryAndroid_.cpp +35 -0
  60. package/nitrogen/generated/android/c++/JVariant_NullType_Array_InAppMessageCategoryAndroid_.hpp +81 -0
  61. package/nitrogen/generated/android/c++/JVariant_NullType_DeveloperBillingOptionParamsAndroid.cpp +26 -0
  62. package/nitrogen/generated/android/c++/JVariant_NullType_DeveloperBillingOptionParamsAndroid.hpp +78 -0
  63. package/nitrogen/generated/android/c++/JVariant_NullType_InitConnectionConfig.hpp +2 -0
  64. package/nitrogen/generated/android/c++/JVariant_NullType_NitroInAppMessageParamsAndroid.cpp +26 -0
  65. package/nitrogen/generated/android/c++/JVariant_NullType_NitroInAppMessageParamsAndroid.hpp +76 -0
  66. package/nitrogen/generated/android/c++/JVariant_NullType_NitroRequestPurchaseAndroid.hpp +7 -0
  67. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/BillingChoiceImageLayoutAndroid.kt +24 -0
  68. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/BillingChoiceScreenTypeAndroid.kt +24 -0
  69. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/BillingProgramAndroid.kt +2 -1
  70. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/DeveloperBillingLaunchModeAndroid.kt +24 -0
  71. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/DeveloperBillingOptionParamsAndroid.kt +47 -0
  72. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/DeveloperBillingTypeAndroid.kt +24 -0
  73. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/DeveloperProvidedBillingDetailsAndroid.kt +13 -4
  74. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/DeveloperProvidedBillingProductAndroid.kt +44 -0
  75. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/HybridRnIapSpec.kt +13 -1
  76. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/InAppMessageCategoryAndroid.kt +23 -0
  77. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/InAppMessageResponseCodeAndroid.kt +23 -0
  78. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/InitConnectionConfig.kt +5 -2
  79. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroBillingChoiceInfoAndroid.kt +41 -0
  80. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroBillingProgramAvailabilityResultAndroid.kt +10 -4
  81. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroBillingProgramInformationDialogParamsAndroid.kt +41 -0
  82. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroBillingResultAndroid.kt +44 -0
  83. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroGetBillingChoiceInfoParamsAndroid.kt +44 -0
  84. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroInAppMessageParamsAndroid.kt +38 -0
  85. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroInAppMessageResultAndroid.kt +41 -0
  86. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroLaunchExternalLinkParamsAndroid.kt +6 -3
  87. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroOneTimePurchaseOfferDetail.kt +5 -2
  88. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroProduct.kt +11 -2
  89. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroRequestPurchaseAndroid.kt +8 -2
  90. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/ProductType.kt +23 -0
  91. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/SubResponseCodeAndroid.kt +24 -0
  92. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/Variant_NullType_Array_InAppMessageCategoryAndroid_.kt +53 -0
  93. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/Variant_NullType_DeveloperBillingOptionParamsAndroid.kt +53 -0
  94. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/Variant_NullType_NitroInAppMessageParamsAndroid.kt +53 -0
  95. package/nitrogen/generated/ios/NitroIap-Swift-Cxx-Bridge.cpp +24 -0
  96. package/nitrogen/generated/ios/NitroIap-Swift-Cxx-Bridge.hpp +382 -0
  97. package/nitrogen/generated/ios/NitroIap-Swift-Cxx-Umbrella.hpp +48 -0
  98. package/nitrogen/generated/ios/c++/HybridRnIapSpecSwift.hpp +74 -2
  99. package/nitrogen/generated/ios/swift/BillingChoiceImageLayoutAndroid.swift +44 -0
  100. package/nitrogen/generated/ios/swift/BillingChoiceScreenTypeAndroid.swift +44 -0
  101. package/nitrogen/generated/ios/swift/BillingProgramAndroid.swift +4 -0
  102. package/nitrogen/generated/ios/swift/DeveloperBillingLaunchModeAndroid.swift +44 -0
  103. package/nitrogen/generated/ios/swift/DeveloperBillingOptionParamsAndroid.swift +114 -0
  104. package/nitrogen/generated/ios/swift/DeveloperBillingTypeAndroid.swift +44 -0
  105. package/nitrogen/generated/ios/swift/DeveloperProvidedBillingDetailsAndroid.swift +121 -4
  106. package/nitrogen/generated/ios/swift/DeveloperProvidedBillingProductAndroid.swift +71 -0
  107. package/nitrogen/generated/ios/swift/Func_void_NitroBillingChoiceInfoAndroid.swift +46 -0
  108. package/nitrogen/generated/ios/swift/Func_void_NitroBillingResultAndroid.swift +46 -0
  109. package/nitrogen/generated/ios/swift/Func_void_NitroInAppMessageResultAndroid.swift +46 -0
  110. package/nitrogen/generated/ios/swift/HybridRnIapSpec.swift +4 -1
  111. package/nitrogen/generated/ios/swift/HybridRnIapSpec_cxx.swift +78 -2
  112. package/nitrogen/generated/ios/swift/InAppMessageCategoryAndroid.swift +40 -0
  113. package/nitrogen/generated/ios/swift/InAppMessageResponseCodeAndroid.swift +40 -0
  114. package/nitrogen/generated/ios/swift/InitConnectionConfig.swift +12 -1
  115. package/nitrogen/generated/ios/swift/NitroBillingChoiceInfoAndroid.swift +66 -0
  116. package/nitrogen/generated/ios/swift/NitroBillingProgramAvailabilityResultAndroid.swift +50 -2
  117. package/nitrogen/generated/ios/swift/NitroBillingProgramInformationDialogParamsAndroid.swift +34 -0
  118. package/nitrogen/generated/ios/swift/NitroBillingResultAndroid.swift +77 -0
  119. package/nitrogen/generated/ios/swift/NitroGetBillingChoiceInfoParamsAndroid.swift +71 -0
  120. package/nitrogen/generated/ios/swift/NitroInAppMessageParamsAndroid.swift +67 -0
  121. package/nitrogen/generated/ios/swift/NitroInAppMessageResultAndroid.swift +66 -0
  122. package/nitrogen/generated/ios/swift/NitroLaunchExternalLinkParamsAndroid.swift +39 -2
  123. package/nitrogen/generated/ios/swift/NitroOneTimePurchaseOfferDetail.swift +39 -2
  124. package/nitrogen/generated/ios/swift/NitroProduct.swift +113 -2
  125. package/nitrogen/generated/ios/swift/NitroRequestPurchaseAndroid.swift +75 -1
  126. package/nitrogen/generated/ios/swift/ProductType.swift +40 -0
  127. package/nitrogen/generated/ios/swift/SubResponseCodeAndroid.swift +44 -0
  128. package/nitrogen/generated/ios/swift/Variant_NullType_DeveloperBillingOptionParamsAndroid.swift +18 -0
  129. package/nitrogen/generated/ios/swift/Variant_NullType_NitroInAppMessageParamsAndroid.swift +18 -0
  130. package/nitrogen/generated/ios/swift/Variant_NullType__InAppMessageCategoryAndroid_.swift +18 -0
  131. package/nitrogen/generated/shared/c++/BillingChoiceImageLayoutAndroid.hpp +80 -0
  132. package/nitrogen/generated/shared/c++/BillingChoiceScreenTypeAndroid.hpp +80 -0
  133. package/nitrogen/generated/shared/c++/BillingProgramAndroid.hpp +4 -0
  134. package/nitrogen/generated/shared/c++/DeveloperBillingLaunchModeAndroid.hpp +80 -0
  135. package/nitrogen/generated/shared/c++/DeveloperBillingOptionParamsAndroid.hpp +103 -0
  136. package/nitrogen/generated/shared/c++/DeveloperBillingTypeAndroid.hpp +80 -0
  137. package/nitrogen/generated/shared/c++/DeveloperProvidedBillingDetailsAndroid.hpp +24 -6
  138. package/nitrogen/generated/shared/c++/DeveloperProvidedBillingProductAndroid.hpp +96 -0
  139. package/nitrogen/generated/shared/c++/HybridRnIapSpec.cpp +3 -0
  140. package/nitrogen/generated/shared/c++/HybridRnIapSpec.hpp +25 -1
  141. package/nitrogen/generated/shared/c++/InAppMessageCategoryAndroid.hpp +76 -0
  142. package/nitrogen/generated/shared/c++/InAppMessageResponseCodeAndroid.hpp +76 -0
  143. package/nitrogen/generated/shared/c++/InitConnectionConfig.hpp +8 -1
  144. package/nitrogen/generated/shared/c++/NitroBillingChoiceInfoAndroid.hpp +90 -0
  145. package/nitrogen/generated/shared/c++/NitroBillingProgramAvailabilityResultAndroid.hpp +16 -2
  146. package/nitrogen/generated/shared/c++/NitroBillingProgramInformationDialogParamsAndroid.hpp +89 -0
  147. package/nitrogen/generated/shared/c++/NitroBillingResultAndroid.hpp +96 -0
  148. package/nitrogen/generated/shared/c++/NitroGetBillingChoiceInfoParamsAndroid.hpp +99 -0
  149. package/nitrogen/generated/shared/c++/NitroInAppMessageParamsAndroid.hpp +88 -0
  150. package/nitrogen/generated/shared/c++/NitroInAppMessageResultAndroid.hpp +92 -0
  151. package/nitrogen/generated/shared/c++/NitroLaunchExternalLinkParamsAndroid.hpp +9 -2
  152. package/nitrogen/generated/shared/c++/NitroOneTimePurchaseOfferDetail.hpp +5 -1
  153. package/nitrogen/generated/shared/c++/NitroProduct.hpp +13 -1
  154. package/nitrogen/generated/shared/c++/NitroRequestPurchaseAndroid.hpp +12 -1
  155. package/nitrogen/generated/shared/c++/ProductType.hpp +76 -0
  156. package/nitrogen/generated/shared/c++/SubResponseCodeAndroid.hpp +80 -0
  157. package/openiap-versions.json +3 -3
  158. package/package.json +1 -1
  159. package/src/hooks/useIAP.ts +63 -0
  160. package/src/index.kepler.ts +9 -0
  161. package/src/index.ts +223 -95
  162. package/src/specs/RnIap.nitro.ts +116 -8
  163. package/src/types.ts +238 -35
  164. package/src/utils/type-bridge.ts +26 -2
  165. package/src/vega-adapter.ts +46 -11
@@ -54,6 +54,7 @@ namespace margelo::nitro::iap {
54
54
  std::string id SWIFT_PRIVATE;
55
55
  std::string title SWIFT_PRIVATE;
56
56
  std::string description SWIFT_PRIVATE;
57
+ std::optional<std::variant<nitro::NullType, std::string>> debugDescription SWIFT_PRIVATE;
57
58
  std::string type SWIFT_PRIVATE;
58
59
  std::optional<std::variant<nitro::NullType, std::string>> displayName SWIFT_PRIVATE;
59
60
  std::optional<std::string> displayPrice SWIFT_PRIVATE;
@@ -63,6 +64,8 @@ namespace margelo::nitro::iap {
63
64
  std::optional<std::variant<nitro::NullType, std::string>> typeIOS SWIFT_PRIVATE;
64
65
  std::optional<std::variant<nitro::NullType, bool>> isFamilyShareableIOS SWIFT_PRIVATE;
65
66
  std::optional<std::variant<nitro::NullType, std::string>> jsonRepresentationIOS SWIFT_PRIVATE;
67
+ std::optional<std::variant<nitro::NullType, std::string>> pricingTermsIOS SWIFT_PRIVATE;
68
+ std::optional<std::variant<nitro::NullType, std::string>> subscriptionInfoIOS SWIFT_PRIVATE;
66
69
  std::optional<std::variant<nitro::NullType, std::string>> discountsIOS SWIFT_PRIVATE;
67
70
  std::optional<std::variant<nitro::NullType, std::string>> introductoryPriceIOS SWIFT_PRIVATE;
68
71
  std::optional<std::variant<nitro::NullType, double>> introductoryPriceAsAmountIOS SWIFT_PRIVATE;
@@ -88,7 +91,7 @@ namespace margelo::nitro::iap {
88
91
 
89
92
  public:
90
93
  NitroProduct() = default;
91
- explicit NitroProduct(std::string id, std::string title, std::string description, std::string type, std::optional<std::variant<nitro::NullType, std::string>> displayName, std::optional<std::string> displayPrice, std::optional<std::string> currency, std::optional<std::variant<nitro::NullType, double>> price, IapPlatform platform, std::optional<std::variant<nitro::NullType, std::string>> typeIOS, std::optional<std::variant<nitro::NullType, bool>> isFamilyShareableIOS, std::optional<std::variant<nitro::NullType, std::string>> jsonRepresentationIOS, std::optional<std::variant<nitro::NullType, std::string>> discountsIOS, std::optional<std::variant<nitro::NullType, std::string>> introductoryPriceIOS, std::optional<std::variant<nitro::NullType, double>> introductoryPriceAsAmountIOS, std::optional<std::variant<nitro::NullType, double>> introductoryPriceNumberOfPeriodsIOS, PaymentModeIOS introductoryPricePaymentModeIOS, std::optional<std::variant<nitro::NullType, std::string>> introductoryPriceSubscriptionPeriodIOS, std::optional<std::variant<nitro::NullType, std::string>> subscriptionGroupIdIOS, std::optional<std::variant<nitro::NullType, double>> subscriptionPeriodNumberIOS, std::optional<std::variant<nitro::NullType, std::string>> subscriptionPeriodUnitIOS, std::optional<std::variant<nitro::NullType, std::string>> subscriptionOffers, std::optional<std::variant<nitro::NullType, std::string>> discountOffers, std::optional<std::variant<nitro::NullType, std::string>> nameAndroid, std::optional<std::variant<nitro::NullType, std::string>> originalPriceAndroid, std::optional<std::variant<nitro::NullType, double>> originalPriceAmountMicrosAndroid, std::optional<std::variant<nitro::NullType, double>> introductoryPriceCyclesAndroid, std::optional<std::variant<nitro::NullType, std::string>> introductoryPricePeriodAndroid, std::optional<std::variant<nitro::NullType, double>> introductoryPriceValueAndroid, std::optional<std::variant<nitro::NullType, std::string>> subscriptionPeriodAndroid, std::optional<std::variant<nitro::NullType, std::string>> freeTrialPeriodAndroid, std::optional<std::variant<nitro::NullType, std::string>> subscriptionOfferDetailsAndroid, std::optional<std::variant<nitro::NullType, std::vector<NitroOneTimePurchaseOfferDetail>>> oneTimePurchaseOfferDetailsAndroid, std::optional<std::variant<nitro::NullType, std::string>> productStatusAndroid): id(id), title(title), description(description), type(type), displayName(displayName), displayPrice(displayPrice), currency(currency), price(price), platform(platform), typeIOS(typeIOS), isFamilyShareableIOS(isFamilyShareableIOS), jsonRepresentationIOS(jsonRepresentationIOS), discountsIOS(discountsIOS), introductoryPriceIOS(introductoryPriceIOS), introductoryPriceAsAmountIOS(introductoryPriceAsAmountIOS), introductoryPriceNumberOfPeriodsIOS(introductoryPriceNumberOfPeriodsIOS), introductoryPricePaymentModeIOS(introductoryPricePaymentModeIOS), introductoryPriceSubscriptionPeriodIOS(introductoryPriceSubscriptionPeriodIOS), subscriptionGroupIdIOS(subscriptionGroupIdIOS), subscriptionPeriodNumberIOS(subscriptionPeriodNumberIOS), subscriptionPeriodUnitIOS(subscriptionPeriodUnitIOS), subscriptionOffers(subscriptionOffers), discountOffers(discountOffers), nameAndroid(nameAndroid), originalPriceAndroid(originalPriceAndroid), originalPriceAmountMicrosAndroid(originalPriceAmountMicrosAndroid), introductoryPriceCyclesAndroid(introductoryPriceCyclesAndroid), introductoryPricePeriodAndroid(introductoryPricePeriodAndroid), introductoryPriceValueAndroid(introductoryPriceValueAndroid), subscriptionPeriodAndroid(subscriptionPeriodAndroid), freeTrialPeriodAndroid(freeTrialPeriodAndroid), subscriptionOfferDetailsAndroid(subscriptionOfferDetailsAndroid), oneTimePurchaseOfferDetailsAndroid(oneTimePurchaseOfferDetailsAndroid), productStatusAndroid(productStatusAndroid) {}
94
+ explicit NitroProduct(std::string id, std::string title, std::string description, std::optional<std::variant<nitro::NullType, std::string>> debugDescription, std::string type, std::optional<std::variant<nitro::NullType, std::string>> displayName, std::optional<std::string> displayPrice, std::optional<std::string> currency, std::optional<std::variant<nitro::NullType, double>> price, IapPlatform platform, std::optional<std::variant<nitro::NullType, std::string>> typeIOS, std::optional<std::variant<nitro::NullType, bool>> isFamilyShareableIOS, std::optional<std::variant<nitro::NullType, std::string>> jsonRepresentationIOS, std::optional<std::variant<nitro::NullType, std::string>> pricingTermsIOS, std::optional<std::variant<nitro::NullType, std::string>> subscriptionInfoIOS, std::optional<std::variant<nitro::NullType, std::string>> discountsIOS, std::optional<std::variant<nitro::NullType, std::string>> introductoryPriceIOS, std::optional<std::variant<nitro::NullType, double>> introductoryPriceAsAmountIOS, std::optional<std::variant<nitro::NullType, double>> introductoryPriceNumberOfPeriodsIOS, PaymentModeIOS introductoryPricePaymentModeIOS, std::optional<std::variant<nitro::NullType, std::string>> introductoryPriceSubscriptionPeriodIOS, std::optional<std::variant<nitro::NullType, std::string>> subscriptionGroupIdIOS, std::optional<std::variant<nitro::NullType, double>> subscriptionPeriodNumberIOS, std::optional<std::variant<nitro::NullType, std::string>> subscriptionPeriodUnitIOS, std::optional<std::variant<nitro::NullType, std::string>> subscriptionOffers, std::optional<std::variant<nitro::NullType, std::string>> discountOffers, std::optional<std::variant<nitro::NullType, std::string>> nameAndroid, std::optional<std::variant<nitro::NullType, std::string>> originalPriceAndroid, std::optional<std::variant<nitro::NullType, double>> originalPriceAmountMicrosAndroid, std::optional<std::variant<nitro::NullType, double>> introductoryPriceCyclesAndroid, std::optional<std::variant<nitro::NullType, std::string>> introductoryPricePeriodAndroid, std::optional<std::variant<nitro::NullType, double>> introductoryPriceValueAndroid, std::optional<std::variant<nitro::NullType, std::string>> subscriptionPeriodAndroid, std::optional<std::variant<nitro::NullType, std::string>> freeTrialPeriodAndroid, std::optional<std::variant<nitro::NullType, std::string>> subscriptionOfferDetailsAndroid, std::optional<std::variant<nitro::NullType, std::vector<NitroOneTimePurchaseOfferDetail>>> oneTimePurchaseOfferDetailsAndroid, std::optional<std::variant<nitro::NullType, std::string>> productStatusAndroid): id(id), title(title), description(description), debugDescription(debugDescription), type(type), displayName(displayName), displayPrice(displayPrice), currency(currency), price(price), platform(platform), typeIOS(typeIOS), isFamilyShareableIOS(isFamilyShareableIOS), jsonRepresentationIOS(jsonRepresentationIOS), pricingTermsIOS(pricingTermsIOS), subscriptionInfoIOS(subscriptionInfoIOS), discountsIOS(discountsIOS), introductoryPriceIOS(introductoryPriceIOS), introductoryPriceAsAmountIOS(introductoryPriceAsAmountIOS), introductoryPriceNumberOfPeriodsIOS(introductoryPriceNumberOfPeriodsIOS), introductoryPricePaymentModeIOS(introductoryPricePaymentModeIOS), introductoryPriceSubscriptionPeriodIOS(introductoryPriceSubscriptionPeriodIOS), subscriptionGroupIdIOS(subscriptionGroupIdIOS), subscriptionPeriodNumberIOS(subscriptionPeriodNumberIOS), subscriptionPeriodUnitIOS(subscriptionPeriodUnitIOS), subscriptionOffers(subscriptionOffers), discountOffers(discountOffers), nameAndroid(nameAndroid), originalPriceAndroid(originalPriceAndroid), originalPriceAmountMicrosAndroid(originalPriceAmountMicrosAndroid), introductoryPriceCyclesAndroid(introductoryPriceCyclesAndroid), introductoryPricePeriodAndroid(introductoryPricePeriodAndroid), introductoryPriceValueAndroid(introductoryPriceValueAndroid), subscriptionPeriodAndroid(subscriptionPeriodAndroid), freeTrialPeriodAndroid(freeTrialPeriodAndroid), subscriptionOfferDetailsAndroid(subscriptionOfferDetailsAndroid), oneTimePurchaseOfferDetailsAndroid(oneTimePurchaseOfferDetailsAndroid), productStatusAndroid(productStatusAndroid) {}
92
95
 
93
96
  public:
94
97
  friend bool operator==(const NitroProduct& lhs, const NitroProduct& rhs) = default;
@@ -107,6 +110,7 @@ namespace margelo::nitro {
107
110
  JSIConverter<std::string>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "id"))),
108
111
  JSIConverter<std::string>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "title"))),
109
112
  JSIConverter<std::string>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "description"))),
113
+ JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "debugDescription"))),
110
114
  JSIConverter<std::string>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "type"))),
111
115
  JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "displayName"))),
112
116
  JSIConverter<std::optional<std::string>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "displayPrice"))),
@@ -116,6 +120,8 @@ namespace margelo::nitro {
116
120
  JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "typeIOS"))),
117
121
  JSIConverter<std::optional<std::variant<nitro::NullType, bool>>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "isFamilyShareableIOS"))),
118
122
  JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "jsonRepresentationIOS"))),
123
+ JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "pricingTermsIOS"))),
124
+ JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "subscriptionInfoIOS"))),
119
125
  JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "discountsIOS"))),
120
126
  JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "introductoryPriceIOS"))),
121
127
  JSIConverter<std::optional<std::variant<nitro::NullType, double>>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "introductoryPriceAsAmountIOS"))),
@@ -145,6 +151,7 @@ namespace margelo::nitro {
145
151
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "id"), JSIConverter<std::string>::toJSI(runtime, arg.id));
146
152
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "title"), JSIConverter<std::string>::toJSI(runtime, arg.title));
147
153
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "description"), JSIConverter<std::string>::toJSI(runtime, arg.description));
154
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "debugDescription"), JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::toJSI(runtime, arg.debugDescription));
148
155
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "type"), JSIConverter<std::string>::toJSI(runtime, arg.type));
149
156
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "displayName"), JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::toJSI(runtime, arg.displayName));
150
157
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "displayPrice"), JSIConverter<std::optional<std::string>>::toJSI(runtime, arg.displayPrice));
@@ -154,6 +161,8 @@ namespace margelo::nitro {
154
161
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "typeIOS"), JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::toJSI(runtime, arg.typeIOS));
155
162
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "isFamilyShareableIOS"), JSIConverter<std::optional<std::variant<nitro::NullType, bool>>>::toJSI(runtime, arg.isFamilyShareableIOS));
156
163
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "jsonRepresentationIOS"), JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::toJSI(runtime, arg.jsonRepresentationIOS));
164
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "pricingTermsIOS"), JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::toJSI(runtime, arg.pricingTermsIOS));
165
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "subscriptionInfoIOS"), JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::toJSI(runtime, arg.subscriptionInfoIOS));
157
166
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "discountsIOS"), JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::toJSI(runtime, arg.discountsIOS));
158
167
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "introductoryPriceIOS"), JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::toJSI(runtime, arg.introductoryPriceIOS));
159
168
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "introductoryPriceAsAmountIOS"), JSIConverter<std::optional<std::variant<nitro::NullType, double>>>::toJSI(runtime, arg.introductoryPriceAsAmountIOS));
@@ -189,6 +198,7 @@ namespace margelo::nitro {
189
198
  if (!JSIConverter<std::string>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "id")))) return false;
190
199
  if (!JSIConverter<std::string>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "title")))) return false;
191
200
  if (!JSIConverter<std::string>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "description")))) return false;
201
+ if (!JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "debugDescription")))) return false;
192
202
  if (!JSIConverter<std::string>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "type")))) return false;
193
203
  if (!JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "displayName")))) return false;
194
204
  if (!JSIConverter<std::optional<std::string>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "displayPrice")))) return false;
@@ -198,6 +208,8 @@ namespace margelo::nitro {
198
208
  if (!JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "typeIOS")))) return false;
199
209
  if (!JSIConverter<std::optional<std::variant<nitro::NullType, bool>>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "isFamilyShareableIOS")))) return false;
200
210
  if (!JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "jsonRepresentationIOS")))) return false;
211
+ if (!JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "pricingTermsIOS")))) return false;
212
+ if (!JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "subscriptionInfoIOS")))) return false;
201
213
  if (!JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "discountsIOS")))) return false;
202
214
  if (!JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "introductoryPriceIOS")))) return false;
203
215
  if (!JSIConverter<std::optional<std::variant<nitro::NullType, double>>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "introductoryPriceAsAmountIOS")))) return false;
@@ -30,6 +30,8 @@
30
30
 
31
31
  // Forward declaration of `AndroidSubscriptionOfferInput` to properly resolve imports.
32
32
  namespace margelo::nitro::iap { struct AndroidSubscriptionOfferInput; }
33
+ // Forward declaration of `DeveloperBillingOptionParamsAndroid` to properly resolve imports.
34
+ namespace margelo::nitro::iap { struct DeveloperBillingOptionParamsAndroid; }
33
35
  // Forward declaration of `SubscriptionProductReplacementParamsAndroid` to properly resolve imports.
34
36
  namespace margelo::nitro::iap { struct SubscriptionProductReplacementParamsAndroid; }
35
37
 
@@ -39,6 +41,7 @@ namespace margelo::nitro::iap { struct SubscriptionProductReplacementParamsAndro
39
41
  #include <variant>
40
42
  #include <optional>
41
43
  #include "AndroidSubscriptionOfferInput.hpp"
44
+ #include "DeveloperBillingOptionParamsAndroid.hpp"
42
45
  #include "SubscriptionProductReplacementParamsAndroid.hpp"
43
46
 
44
47
  namespace margelo::nitro::iap {
@@ -56,11 +59,13 @@ namespace margelo::nitro::iap {
56
59
  std::optional<std::variant<nitro::NullType, std::vector<AndroidSubscriptionOfferInput>>> subscriptionOffers SWIFT_PRIVATE;
57
60
  std::optional<std::variant<nitro::NullType, double>> replacementMode SWIFT_PRIVATE;
58
61
  std::optional<std::variant<nitro::NullType, std::string>> purchaseToken SWIFT_PRIVATE;
62
+ std::optional<std::variant<nitro::NullType, std::string>> originalExternalTransactionId SWIFT_PRIVATE;
63
+ std::optional<std::variant<nitro::NullType, DeveloperBillingOptionParamsAndroid>> developerBillingOption SWIFT_PRIVATE;
59
64
  std::optional<std::variant<nitro::NullType, SubscriptionProductReplacementParamsAndroid>> subscriptionProductReplacementParams SWIFT_PRIVATE;
60
65
 
61
66
  public:
62
67
  NitroRequestPurchaseAndroid() = default;
63
- explicit NitroRequestPurchaseAndroid(std::vector<std::string> skus, std::optional<std::variant<nitro::NullType, std::string>> obfuscatedAccountId, std::optional<std::variant<nitro::NullType, std::string>> obfuscatedProfileId, std::optional<std::variant<nitro::NullType, bool>> isOfferPersonalized, std::optional<std::variant<nitro::NullType, std::string>> offerToken, std::optional<std::variant<nitro::NullType, std::vector<AndroidSubscriptionOfferInput>>> subscriptionOffers, std::optional<std::variant<nitro::NullType, double>> replacementMode, std::optional<std::variant<nitro::NullType, std::string>> purchaseToken, std::optional<std::variant<nitro::NullType, SubscriptionProductReplacementParamsAndroid>> subscriptionProductReplacementParams): skus(skus), obfuscatedAccountId(obfuscatedAccountId), obfuscatedProfileId(obfuscatedProfileId), isOfferPersonalized(isOfferPersonalized), offerToken(offerToken), subscriptionOffers(subscriptionOffers), replacementMode(replacementMode), purchaseToken(purchaseToken), subscriptionProductReplacementParams(subscriptionProductReplacementParams) {}
68
+ explicit NitroRequestPurchaseAndroid(std::vector<std::string> skus, std::optional<std::variant<nitro::NullType, std::string>> obfuscatedAccountId, std::optional<std::variant<nitro::NullType, std::string>> obfuscatedProfileId, std::optional<std::variant<nitro::NullType, bool>> isOfferPersonalized, std::optional<std::variant<nitro::NullType, std::string>> offerToken, std::optional<std::variant<nitro::NullType, std::vector<AndroidSubscriptionOfferInput>>> subscriptionOffers, std::optional<std::variant<nitro::NullType, double>> replacementMode, std::optional<std::variant<nitro::NullType, std::string>> purchaseToken, std::optional<std::variant<nitro::NullType, std::string>> originalExternalTransactionId, std::optional<std::variant<nitro::NullType, DeveloperBillingOptionParamsAndroid>> developerBillingOption, std::optional<std::variant<nitro::NullType, SubscriptionProductReplacementParamsAndroid>> subscriptionProductReplacementParams): skus(skus), obfuscatedAccountId(obfuscatedAccountId), obfuscatedProfileId(obfuscatedProfileId), isOfferPersonalized(isOfferPersonalized), offerToken(offerToken), subscriptionOffers(subscriptionOffers), replacementMode(replacementMode), purchaseToken(purchaseToken), originalExternalTransactionId(originalExternalTransactionId), developerBillingOption(developerBillingOption), subscriptionProductReplacementParams(subscriptionProductReplacementParams) {}
64
69
 
65
70
  public:
66
71
  friend bool operator==(const NitroRequestPurchaseAndroid& lhs, const NitroRequestPurchaseAndroid& rhs) = default;
@@ -84,6 +89,8 @@ namespace margelo::nitro {
84
89
  JSIConverter<std::optional<std::variant<nitro::NullType, std::vector<margelo::nitro::iap::AndroidSubscriptionOfferInput>>>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "subscriptionOffers"))),
85
90
  JSIConverter<std::optional<std::variant<nitro::NullType, double>>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "replacementMode"))),
86
91
  JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "purchaseToken"))),
92
+ JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "originalExternalTransactionId"))),
93
+ JSIConverter<std::optional<std::variant<nitro::NullType, margelo::nitro::iap::DeveloperBillingOptionParamsAndroid>>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "developerBillingOption"))),
87
94
  JSIConverter<std::optional<std::variant<nitro::NullType, margelo::nitro::iap::SubscriptionProductReplacementParamsAndroid>>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "subscriptionProductReplacementParams")))
88
95
  );
89
96
  }
@@ -97,6 +104,8 @@ namespace margelo::nitro {
97
104
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "subscriptionOffers"), JSIConverter<std::optional<std::variant<nitro::NullType, std::vector<margelo::nitro::iap::AndroidSubscriptionOfferInput>>>>::toJSI(runtime, arg.subscriptionOffers));
98
105
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "replacementMode"), JSIConverter<std::optional<std::variant<nitro::NullType, double>>>::toJSI(runtime, arg.replacementMode));
99
106
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "purchaseToken"), JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::toJSI(runtime, arg.purchaseToken));
107
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "originalExternalTransactionId"), JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::toJSI(runtime, arg.originalExternalTransactionId));
108
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "developerBillingOption"), JSIConverter<std::optional<std::variant<nitro::NullType, margelo::nitro::iap::DeveloperBillingOptionParamsAndroid>>>::toJSI(runtime, arg.developerBillingOption));
100
109
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "subscriptionProductReplacementParams"), JSIConverter<std::optional<std::variant<nitro::NullType, margelo::nitro::iap::SubscriptionProductReplacementParamsAndroid>>>::toJSI(runtime, arg.subscriptionProductReplacementParams));
101
110
  return obj;
102
111
  }
@@ -116,6 +125,8 @@ namespace margelo::nitro {
116
125
  if (!JSIConverter<std::optional<std::variant<nitro::NullType, std::vector<margelo::nitro::iap::AndroidSubscriptionOfferInput>>>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "subscriptionOffers")))) return false;
117
126
  if (!JSIConverter<std::optional<std::variant<nitro::NullType, double>>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "replacementMode")))) return false;
118
127
  if (!JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "purchaseToken")))) return false;
128
+ if (!JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "originalExternalTransactionId")))) return false;
129
+ if (!JSIConverter<std::optional<std::variant<nitro::NullType, margelo::nitro::iap::DeveloperBillingOptionParamsAndroid>>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "developerBillingOption")))) return false;
119
130
  if (!JSIConverter<std::optional<std::variant<nitro::NullType, margelo::nitro::iap::SubscriptionProductReplacementParamsAndroid>>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "subscriptionProductReplacementParams")))) return false;
120
131
  return true;
121
132
  }
@@ -0,0 +1,76 @@
1
+ ///
2
+ /// ProductType.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #if __has_include(<NitroModules/NitroHash.hpp>)
11
+ #include <NitroModules/NitroHash.hpp>
12
+ #else
13
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
14
+ #endif
15
+ #if __has_include(<NitroModules/JSIConverter.hpp>)
16
+ #include <NitroModules/JSIConverter.hpp>
17
+ #else
18
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
19
+ #endif
20
+ #if __has_include(<NitroModules/NitroDefines.hpp>)
21
+ #include <NitroModules/NitroDefines.hpp>
22
+ #else
23
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
24
+ #endif
25
+
26
+ namespace margelo::nitro::iap {
27
+
28
+ /**
29
+ * An enum which can be represented as a JavaScript union (ProductType).
30
+ */
31
+ enum class ProductType {
32
+ SUBS SWIFT_NAME(subs) = 0,
33
+ IN_APP SWIFT_NAME(inApp) = 1,
34
+ } CLOSED_ENUM;
35
+
36
+ } // namespace margelo::nitro::iap
37
+
38
+ namespace margelo::nitro {
39
+
40
+ // C++ ProductType <> JS ProductType (union)
41
+ template <>
42
+ struct JSIConverter<margelo::nitro::iap::ProductType> final {
43
+ static inline margelo::nitro::iap::ProductType fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
44
+ std::string unionValue = JSIConverter<std::string>::fromJSI(runtime, arg);
45
+ switch (hashString(unionValue.c_str(), unionValue.size())) {
46
+ case hashString("subs"): return margelo::nitro::iap::ProductType::SUBS;
47
+ case hashString("in-app"): return margelo::nitro::iap::ProductType::IN_APP;
48
+ default: [[unlikely]]
49
+ throw std::invalid_argument("Cannot convert \"" + unionValue + "\" to enum ProductType - invalid value!");
50
+ }
51
+ }
52
+ static inline jsi::Value toJSI(jsi::Runtime& runtime, margelo::nitro::iap::ProductType arg) {
53
+ switch (arg) {
54
+ case margelo::nitro::iap::ProductType::SUBS: return JSIConverter<std::string>::toJSI(runtime, "subs");
55
+ case margelo::nitro::iap::ProductType::IN_APP: return JSIConverter<std::string>::toJSI(runtime, "in-app");
56
+ default: [[unlikely]]
57
+ throw std::invalid_argument("Cannot convert ProductType to JS - invalid value: "
58
+ + std::to_string(static_cast<int>(arg)) + "!");
59
+ }
60
+ }
61
+ static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) {
62
+ if (!value.isString()) {
63
+ return false;
64
+ }
65
+ std::string unionValue = JSIConverter<std::string>::fromJSI(runtime, value);
66
+ switch (hashString(unionValue.c_str(), unionValue.size())) {
67
+ case hashString("subs"):
68
+ case hashString("in-app"):
69
+ return true;
70
+ default:
71
+ return false;
72
+ }
73
+ }
74
+ };
75
+
76
+ } // namespace margelo::nitro
@@ -0,0 +1,80 @@
1
+ ///
2
+ /// SubResponseCodeAndroid.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #if __has_include(<NitroModules/NitroHash.hpp>)
11
+ #include <NitroModules/NitroHash.hpp>
12
+ #else
13
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
14
+ #endif
15
+ #if __has_include(<NitroModules/JSIConverter.hpp>)
16
+ #include <NitroModules/JSIConverter.hpp>
17
+ #else
18
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
19
+ #endif
20
+ #if __has_include(<NitroModules/NitroDefines.hpp>)
21
+ #include <NitroModules/NitroDefines.hpp>
22
+ #else
23
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
24
+ #endif
25
+
26
+ namespace margelo::nitro::iap {
27
+
28
+ /**
29
+ * An enum which can be represented as a JavaScript union (SubResponseCodeAndroid).
30
+ */
31
+ enum class SubResponseCodeAndroid {
32
+ NO_APPLICABLE_SUB_RESPONSE_CODE SWIFT_NAME(noApplicableSubResponseCode) = 0,
33
+ PAYMENT_DECLINED_DUE_TO_INSUFFICIENT_FUNDS SWIFT_NAME(paymentDeclinedDueToInsufficientFunds) = 1,
34
+ USER_INELIGIBLE SWIFT_NAME(userIneligible) = 2,
35
+ } CLOSED_ENUM;
36
+
37
+ } // namespace margelo::nitro::iap
38
+
39
+ namespace margelo::nitro {
40
+
41
+ // C++ SubResponseCodeAndroid <> JS SubResponseCodeAndroid (union)
42
+ template <>
43
+ struct JSIConverter<margelo::nitro::iap::SubResponseCodeAndroid> final {
44
+ static inline margelo::nitro::iap::SubResponseCodeAndroid fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
45
+ std::string unionValue = JSIConverter<std::string>::fromJSI(runtime, arg);
46
+ switch (hashString(unionValue.c_str(), unionValue.size())) {
47
+ case hashString("no-applicable-sub-response-code"): return margelo::nitro::iap::SubResponseCodeAndroid::NO_APPLICABLE_SUB_RESPONSE_CODE;
48
+ case hashString("payment-declined-due-to-insufficient-funds"): return margelo::nitro::iap::SubResponseCodeAndroid::PAYMENT_DECLINED_DUE_TO_INSUFFICIENT_FUNDS;
49
+ case hashString("user-ineligible"): return margelo::nitro::iap::SubResponseCodeAndroid::USER_INELIGIBLE;
50
+ default: [[unlikely]]
51
+ throw std::invalid_argument("Cannot convert \"" + unionValue + "\" to enum SubResponseCodeAndroid - invalid value!");
52
+ }
53
+ }
54
+ static inline jsi::Value toJSI(jsi::Runtime& runtime, margelo::nitro::iap::SubResponseCodeAndroid arg) {
55
+ switch (arg) {
56
+ case margelo::nitro::iap::SubResponseCodeAndroid::NO_APPLICABLE_SUB_RESPONSE_CODE: return JSIConverter<std::string>::toJSI(runtime, "no-applicable-sub-response-code");
57
+ case margelo::nitro::iap::SubResponseCodeAndroid::PAYMENT_DECLINED_DUE_TO_INSUFFICIENT_FUNDS: return JSIConverter<std::string>::toJSI(runtime, "payment-declined-due-to-insufficient-funds");
58
+ case margelo::nitro::iap::SubResponseCodeAndroid::USER_INELIGIBLE: return JSIConverter<std::string>::toJSI(runtime, "user-ineligible");
59
+ default: [[unlikely]]
60
+ throw std::invalid_argument("Cannot convert SubResponseCodeAndroid to JS - invalid value: "
61
+ + std::to_string(static_cast<int>(arg)) + "!");
62
+ }
63
+ }
64
+ static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) {
65
+ if (!value.isString()) {
66
+ return false;
67
+ }
68
+ std::string unionValue = JSIConverter<std::string>::fromJSI(runtime, value);
69
+ switch (hashString(unionValue.c_str(), unionValue.size())) {
70
+ case hashString("no-applicable-sub-response-code"):
71
+ case hashString("payment-declined-due-to-insufficient-funds"):
72
+ case hashString("user-ineligible"):
73
+ return true;
74
+ default:
75
+ return false;
76
+ }
77
+ }
78
+ };
79
+
80
+ } // namespace margelo::nitro
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "2.0.3",
3
- "google": "2.3.0-rc.1",
4
- "apple": "2.2.5-rc.1"
2
+ "spec": "2.1.0",
3
+ "google": "2.3.0",
4
+ "apple": "2.2.5"
5
5
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-iap",
3
- "version": "15.4.0-rc.2",
3
+ "version": "15.4.0",
4
4
  "description": "React Native In-App Purchases module for iOS and Android using Nitro",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -24,7 +24,14 @@ import {
24
24
  checkAlternativeBillingAvailabilityAndroid,
25
25
  showAlternativeBillingDialogAndroid,
26
26
  createAlternativeBillingTokenAndroid,
27
+ getBillingChoiceInfoAndroid,
28
+ isBillingProgramAvailableAndroid,
29
+ createBillingProgramReportingDetailsAndroid,
30
+ launchExternalLinkAndroid,
31
+ showBillingProgramInformationDialogAndroid,
32
+ showInAppMessagesAndroid,
27
33
  userChoiceBillingListenerAndroid,
34
+ developerProvidedBillingListenerAndroid,
28
35
  subscriptionBillingIssueListener,
29
36
  isStandardIOS,
30
37
  } from '../';
@@ -35,7 +42,9 @@ import type {
35
42
  ProductQueryType,
36
43
  RequestPurchaseProps,
37
44
  AlternativeBillingModeAndroid,
45
+ BillingChoiceScreenTypeAndroid,
38
46
  BillingProgramAndroid,
47
+ DeveloperProvidedBillingDetailsAndroid,
39
48
  UserChoiceBillingDetails,
40
49
  VerifyPurchaseProps,
41
50
  VerifyPurchaseResult,
@@ -50,6 +59,8 @@ import type {
50
59
  PurchaseError,
51
60
  PurchaseUpdatedListenerOptions,
52
61
  ProductSubscription,
62
+ MutationField,
63
+ QueryField,
53
64
  } from '../types';
54
65
  import type {MutationFinishTransactionArgs} from '../types';
55
66
 
@@ -265,6 +276,18 @@ type UseIap = {
265
276
  createAlternativeBillingTokenAndroid?: (
266
277
  sku?: string,
267
278
  ) => Promise<string | null>;
279
+ /** Fetch assets and loyalty text for a developer-rendered Billing Choice screen. */
280
+ getBillingChoiceInfoAndroid?: QueryField<'getBillingChoiceInfoAndroid'>;
281
+ /** Check Billing Program availability and the configured choice renderer. */
282
+ isBillingProgramAvailableAndroid?: MutationField<'isBillingProgramAvailableAndroid'>;
283
+ /** Create Google Play reporting details for a developer billing transaction. */
284
+ createBillingProgramReportingDetailsAndroid?: MutationField<'createBillingProgramReportingDetailsAndroid'>;
285
+ /** Launch a supported Billing Program external link. */
286
+ launchExternalLinkAndroid?: MutationField<'launchExternalLinkAndroid'>;
287
+ /** Show the required Billing Choice information dialog. */
288
+ showBillingProgramInformationDialogAndroid?: MutationField<'showBillingProgramInformationDialogAndroid'>;
289
+ /** Show Play billing in-app messages. */
290
+ showInAppMessagesAndroid?: MutationField<'showInAppMessagesAndroid'>;
268
291
  };
269
292
 
270
293
  export interface UseIapOptions {
@@ -280,6 +303,13 @@ export interface UseIapOptions {
280
303
  onError?: (error: Error) => void;
281
304
  onPromotedProductIOS?: (product: Product) => void;
282
305
  onUserChoiceBillingAndroid?: (details: UserChoiceBillingDetails) => void;
306
+ /**
307
+ * Fires when the user selects developer-provided billing in an External
308
+ * Payments or Google-rendered Billing Choice flow.
309
+ */
310
+ onDeveloperProvidedBillingAndroid?: (
311
+ details: DeveloperProvidedBillingDetailsAndroid,
312
+ ) => void;
283
313
  /**
284
314
  * Fires when an active subscription enters a billing-issue state
285
315
  * (StoreKit 2 Message.billingIssue on iOS 18+, Purchase.isSuspended on
@@ -301,8 +331,14 @@ export interface UseIapOptions {
301
331
  * Use 'user-choice-billing' for User Choice Billing (7.0+).
302
332
  * Use 'external-offer' for External Offer program.
303
333
  * Use 'external-payments' for Developer Provided Billing (Japan only, 8.3.0+).
334
+ * Use 'billing-choice' for Billing Choice (9.1.0+).
304
335
  */
305
336
  enableBillingProgramAndroid?: BillingProgramAndroid;
337
+ /**
338
+ * Select who renders the Billing Choice screen (9.1.0+). Must match the
339
+ * choiceScreenType returned by isBillingProgramAvailableAndroid.
340
+ */
341
+ billingChoiceScreenTypeAndroid?: BillingChoiceScreenTypeAndroid;
306
342
  }
307
343
 
308
344
  /**
@@ -356,6 +392,7 @@ export function useIAP(options?: UseIapOptions): UseIap {
356
392
  purchaseError?: EventSubscription;
357
393
  promotedProductIOS?: EventSubscription;
358
394
  userChoiceBillingAndroid?: EventSubscription;
395
+ developerProvidedBillingAndroid?: EventSubscription;
359
396
  subscriptionBillingIssue?: EventSubscription;
360
397
  }>({});
361
398
 
@@ -565,6 +602,7 @@ export function useIAP(options?: UseIapOptions): UseIap {
565
602
  | {
566
603
  enableBillingProgramAndroid?: BillingProgramAndroid;
567
604
  alternativeBillingModeAndroid?: AlternativeBillingModeAndroid;
605
+ billingChoiceScreenTypeAndroid?: BillingChoiceScreenTypeAndroid;
568
606
  }
569
607
  | undefined;
570
608
 
@@ -573,6 +611,12 @@ export function useIAP(options?: UseIapOptions): UseIap {
573
611
  config = {
574
612
  enableBillingProgramAndroid:
575
613
  optionsRef.current.enableBillingProgramAndroid,
614
+ ...(optionsRef.current.billingChoiceScreenTypeAndroid
615
+ ? {
616
+ billingChoiceScreenTypeAndroid:
617
+ optionsRef.current.billingChoiceScreenTypeAndroid,
618
+ }
619
+ : {}),
576
620
  };
577
621
  } else if (optionsRef.current?.alternativeBillingModeAndroid) {
578
622
  config = {
@@ -644,6 +688,17 @@ export function useIAP(options?: UseIapOptions): UseIap {
644
688
  });
645
689
  }
646
690
 
691
+ if (
692
+ Platform.OS === 'android' &&
693
+ optionsRef.current?.onDeveloperProvidedBillingAndroid &&
694
+ !subscriptionsRef.current.developerProvidedBillingAndroid
695
+ ) {
696
+ subscriptionsRef.current.developerProvidedBillingAndroid =
697
+ developerProvidedBillingListenerAndroid((details) => {
698
+ optionsRef.current?.onDeveloperProvidedBillingAndroid?.(details);
699
+ });
700
+ }
701
+
647
702
  // Always attach so callers that supply `onSubscriptionBillingIssue` later
648
703
  // (after the hook has already set up listeners) still receive events.
649
704
  if (!subscriptionsRef.current.subscriptionBillingIssue) {
@@ -660,11 +715,13 @@ export function useIAP(options?: UseIapOptions): UseIap {
660
715
  subscriptionsRef.current.purchaseError?.remove();
661
716
  subscriptionsRef.current.promotedProductIOS?.remove();
662
717
  subscriptionsRef.current.userChoiceBillingAndroid?.remove();
718
+ subscriptionsRef.current.developerProvidedBillingAndroid?.remove();
663
719
  subscriptionsRef.current.subscriptionBillingIssue?.remove();
664
720
  subscriptionsRef.current.purchaseUpdate = undefined;
665
721
  subscriptionsRef.current.purchaseError = undefined;
666
722
  subscriptionsRef.current.promotedProductIOS = undefined;
667
723
  subscriptionsRef.current.userChoiceBillingAndroid = undefined;
724
+ subscriptionsRef.current.developerProvidedBillingAndroid = undefined;
668
725
  subscriptionsRef.current.subscriptionBillingIssue = undefined;
669
726
  }, []);
670
727
 
@@ -763,6 +820,12 @@ export function useIAP(options?: UseIapOptions): UseIap {
763
820
  checkAlternativeBillingAvailabilityAndroid,
764
821
  showAlternativeBillingDialogAndroid,
765
822
  createAlternativeBillingTokenAndroid,
823
+ getBillingChoiceInfoAndroid,
824
+ isBillingProgramAvailableAndroid,
825
+ createBillingProgramReportingDetailsAndroid,
826
+ launchExternalLinkAndroid,
827
+ showBillingProgramInformationDialogAndroid,
828
+ showInAppMessagesAndroid,
766
829
  }
767
830
  : {}),
768
831
  };
@@ -293,12 +293,21 @@ export const createAlternativeBillingTokenAndroid: MutationField<
293
293
  export const isBillingProgramAvailableAndroid: MutationField<
294
294
  'isBillingProgramAvailableAndroid'
295
295
  > = async () => unsupported('isBillingProgramAvailableAndroid');
296
+ export const getBillingChoiceInfoAndroid: QueryField<
297
+ 'getBillingChoiceInfoAndroid'
298
+ > = async () => unsupported('getBillingChoiceInfoAndroid');
296
299
  export const launchExternalLinkAndroid: MutationField<
297
300
  'launchExternalLinkAndroid'
298
301
  > = async () => unsupported('launchExternalLinkAndroid');
299
302
  export const createBillingProgramReportingDetailsAndroid: MutationField<
300
303
  'createBillingProgramReportingDetailsAndroid'
301
304
  > = async () => unsupported('createBillingProgramReportingDetailsAndroid');
305
+ export const showBillingProgramInformationDialogAndroid: MutationField<
306
+ 'showBillingProgramInformationDialogAndroid'
307
+ > = async () => unsupported('showBillingProgramInformationDialogAndroid');
308
+ export const showInAppMessagesAndroid: MutationField<
309
+ 'showInAppMessagesAndroid'
310
+ > = async () => unsupported('showInAppMessagesAndroid');
302
311
  export const userChoiceBillingListenerAndroid = (): EventSubscription => ({
303
312
  remove: () => {},
304
313
  });