react-native-iap 15.4.0-rc.3 → 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
@@ -10,7 +10,17 @@
10
10
  #include <fbjni/fbjni.h>
11
11
  #include "DeveloperProvidedBillingDetailsAndroid.hpp"
12
12
 
13
+ #include "DeveloperProvidedBillingProductAndroid.hpp"
14
+ #include "JDeveloperProvidedBillingProductAndroid.hpp"
15
+ #include "JProductType.hpp"
16
+ #include "JVariant_NullType_String.hpp"
17
+ #include "ProductType.hpp"
18
+ #include <NitroModules/JNull.hpp>
19
+ #include <NitroModules/Null.hpp>
20
+ #include <optional>
13
21
  #include <string>
22
+ #include <variant>
23
+ #include <vector>
14
24
 
15
25
  namespace margelo::nitro::iap {
16
26
 
@@ -31,10 +41,28 @@ namespace margelo::nitro::iap {
31
41
  [[nodiscard]]
32
42
  DeveloperProvidedBillingDetailsAndroid toCpp() const {
33
43
  static const auto clazz = javaClassStatic();
34
- static const auto fieldExternalTransactionToken = clazz->getField<jni::JString>("externalTransactionToken");
35
- jni::local_ref<jni::JString> externalTransactionToken = this->getFieldValue(fieldExternalTransactionToken);
44
+ static const auto fieldExternalTransactionToken = clazz->getField<JVariant_NullType_String>("externalTransactionToken");
45
+ jni::local_ref<JVariant_NullType_String> externalTransactionToken = this->getFieldValue(fieldExternalTransactionToken);
46
+ static const auto fieldLinkUri = clazz->getField<JVariant_NullType_String>("linkUri");
47
+ jni::local_ref<JVariant_NullType_String> linkUri = this->getFieldValue(fieldLinkUri);
48
+ static const auto fieldOriginalExternalTransactionId = clazz->getField<JVariant_NullType_String>("originalExternalTransactionId");
49
+ jni::local_ref<JVariant_NullType_String> originalExternalTransactionId = this->getFieldValue(fieldOriginalExternalTransactionId);
50
+ static const auto fieldProducts = clazz->getField<jni::JArrayClass<JDeveloperProvidedBillingProductAndroid>>("products");
51
+ jni::local_ref<jni::JArrayClass<JDeveloperProvidedBillingProductAndroid>> products = this->getFieldValue(fieldProducts);
36
52
  return DeveloperProvidedBillingDetailsAndroid(
37
- externalTransactionToken->toStdString()
53
+ externalTransactionToken != nullptr ? std::make_optional(externalTransactionToken->toCpp()) : std::nullopt,
54
+ linkUri != nullptr ? std::make_optional(linkUri->toCpp()) : std::nullopt,
55
+ originalExternalTransactionId != nullptr ? std::make_optional(originalExternalTransactionId->toCpp()) : std::nullopt,
56
+ [&]() {
57
+ size_t __size = products->size();
58
+ std::vector<DeveloperProvidedBillingProductAndroid> __vector;
59
+ __vector.reserve(__size);
60
+ for (size_t __i = 0; __i < __size; __i++) {
61
+ auto __element = products->getElement(__i);
62
+ __vector.push_back(__element->toCpp());
63
+ }
64
+ return __vector;
65
+ }()
38
66
  );
39
67
  }
40
68
 
@@ -44,12 +72,24 @@ namespace margelo::nitro::iap {
44
72
  */
45
73
  [[maybe_unused]]
46
74
  static jni::local_ref<JDeveloperProvidedBillingDetailsAndroid::javaobject> fromCpp(const DeveloperProvidedBillingDetailsAndroid& value) {
47
- using JSignature = JDeveloperProvidedBillingDetailsAndroid(jni::alias_ref<jni::JString>);
75
+ using JSignature = JDeveloperProvidedBillingDetailsAndroid(jni::alias_ref<JVariant_NullType_String>, jni::alias_ref<JVariant_NullType_String>, jni::alias_ref<JVariant_NullType_String>, jni::alias_ref<jni::JArrayClass<JDeveloperProvidedBillingProductAndroid>>);
48
76
  static const auto clazz = javaClassStatic();
49
77
  static const auto create = clazz->getStaticMethod<JSignature>("fromCpp");
50
78
  return create(
51
79
  clazz,
52
- jni::make_jstring(value.externalTransactionToken)
80
+ value.externalTransactionToken.has_value() ? JVariant_NullType_String::fromCpp(value.externalTransactionToken.value()) : nullptr,
81
+ value.linkUri.has_value() ? JVariant_NullType_String::fromCpp(value.linkUri.value()) : nullptr,
82
+ value.originalExternalTransactionId.has_value() ? JVariant_NullType_String::fromCpp(value.originalExternalTransactionId.value()) : nullptr,
83
+ [&]() {
84
+ size_t __size = value.products.size();
85
+ jni::local_ref<jni::JArrayClass<JDeveloperProvidedBillingProductAndroid>> __array = jni::JArrayClass<JDeveloperProvidedBillingProductAndroid>::newArray(__size);
86
+ for (size_t __i = 0; __i < __size; __i++) {
87
+ const auto& __element = value.products[__i];
88
+ auto __elementJni = JDeveloperProvidedBillingProductAndroid::fromCpp(__element);
89
+ __array->setElement(__i, *__elementJni);
90
+ }
91
+ return __array;
92
+ }()
53
93
  );
54
94
  }
55
95
  };
@@ -0,0 +1,72 @@
1
+ ///
2
+ /// JDeveloperProvidedBillingProductAndroid.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
+ #include <fbjni/fbjni.h>
11
+ #include "DeveloperProvidedBillingProductAndroid.hpp"
12
+
13
+ #include "JProductType.hpp"
14
+ #include "JVariant_NullType_String.hpp"
15
+ #include "ProductType.hpp"
16
+ #include <NitroModules/JNull.hpp>
17
+ #include <NitroModules/Null.hpp>
18
+ #include <optional>
19
+ #include <string>
20
+ #include <variant>
21
+
22
+ namespace margelo::nitro::iap {
23
+
24
+ using namespace facebook;
25
+
26
+ /**
27
+ * The C++ JNI bridge between the C++ struct "DeveloperProvidedBillingProductAndroid" and the the Kotlin data class "DeveloperProvidedBillingProductAndroid".
28
+ */
29
+ struct JDeveloperProvidedBillingProductAndroid final: public jni::JavaClass<JDeveloperProvidedBillingProductAndroid> {
30
+ public:
31
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/iap/DeveloperProvidedBillingProductAndroid;";
32
+
33
+ public:
34
+ /**
35
+ * Convert this Java/Kotlin-based struct to the C++ struct DeveloperProvidedBillingProductAndroid by copying all values to C++.
36
+ */
37
+ [[maybe_unused]]
38
+ [[nodiscard]]
39
+ DeveloperProvidedBillingProductAndroid toCpp() const {
40
+ static const auto clazz = javaClassStatic();
41
+ static const auto fieldId = clazz->getField<jni::JString>("id");
42
+ jni::local_ref<jni::JString> id = this->getFieldValue(fieldId);
43
+ static const auto fieldOfferToken = clazz->getField<JVariant_NullType_String>("offerToken");
44
+ jni::local_ref<JVariant_NullType_String> offerToken = this->getFieldValue(fieldOfferToken);
45
+ static const auto fieldType = clazz->getField<JProductType>("type");
46
+ jni::local_ref<JProductType> type = this->getFieldValue(fieldType);
47
+ return DeveloperProvidedBillingProductAndroid(
48
+ id->toStdString(),
49
+ offerToken != nullptr ? std::make_optional(offerToken->toCpp()) : std::nullopt,
50
+ type->toCpp()
51
+ );
52
+ }
53
+
54
+ public:
55
+ /**
56
+ * Create a Java/Kotlin-based struct by copying all values from the given C++ struct to Java.
57
+ */
58
+ [[maybe_unused]]
59
+ static jni::local_ref<JDeveloperProvidedBillingProductAndroid::javaobject> fromCpp(const DeveloperProvidedBillingProductAndroid& value) {
60
+ using JSignature = JDeveloperProvidedBillingProductAndroid(jni::alias_ref<jni::JString>, jni::alias_ref<JVariant_NullType_String>, jni::alias_ref<JProductType>);
61
+ static const auto clazz = javaClassStatic();
62
+ static const auto create = clazz->getStaticMethod<JSignature>("fromCpp");
63
+ return create(
64
+ clazz,
65
+ jni::make_jstring(value.id),
66
+ value.offerToken.has_value() ? JVariant_NullType_String::fromCpp(value.offerToken.value()) : nullptr,
67
+ JProductType::fromCpp(value.type)
68
+ );
69
+ }
70
+ };
71
+
72
+ } // namespace margelo::nitro::iap
@@ -14,7 +14,17 @@
14
14
  #include <functional>
15
15
  #include <NitroModules/JNICallable.hpp>
16
16
  #include "JDeveloperProvidedBillingDetailsAndroid.hpp"
17
+ #include <NitroModules/Null.hpp>
17
18
  #include <string>
19
+ #include <variant>
20
+ #include <optional>
21
+ #include "JVariant_NullType_String.hpp"
22
+ #include <NitroModules/JNull.hpp>
23
+ #include "DeveloperProvidedBillingProductAndroid.hpp"
24
+ #include <vector>
25
+ #include "JDeveloperProvidedBillingProductAndroid.hpp"
26
+ #include "ProductType.hpp"
27
+ #include "JProductType.hpp"
18
28
 
19
29
  namespace margelo::nitro::iap {
20
30
 
@@ -85,8 +85,20 @@ namespace margelo::nitro::iap { enum class PurchaseVerificationProvider; }
85
85
  namespace margelo::nitro::iap { struct NitroBillingProgramAvailabilityResultAndroid; }
86
86
  // Forward declaration of `BillingProgramAndroid` to properly resolve imports.
87
87
  namespace margelo::nitro::iap { enum class BillingProgramAndroid; }
88
+ // Forward declaration of `BillingChoiceScreenTypeAndroid` to properly resolve imports.
89
+ namespace margelo::nitro::iap { enum class BillingChoiceScreenTypeAndroid; }
90
+ // Forward declaration of `NitroBillingChoiceInfoAndroid` to properly resolve imports.
91
+ namespace margelo::nitro::iap { struct NitroBillingChoiceInfoAndroid; }
88
92
  // Forward declaration of `NitroBillingProgramReportingDetailsAndroid` to properly resolve imports.
89
93
  namespace margelo::nitro::iap { struct NitroBillingProgramReportingDetailsAndroid; }
94
+ // Forward declaration of `NitroBillingResultAndroid` to properly resolve imports.
95
+ namespace margelo::nitro::iap { struct NitroBillingResultAndroid; }
96
+ // Forward declaration of `SubResponseCodeAndroid` to properly resolve imports.
97
+ namespace margelo::nitro::iap { enum class SubResponseCodeAndroid; }
98
+ // Forward declaration of `NitroInAppMessageResultAndroid` to properly resolve imports.
99
+ namespace margelo::nitro::iap { struct NitroInAppMessageResultAndroid; }
100
+ // Forward declaration of `InAppMessageResponseCodeAndroid` to properly resolve imports.
101
+ namespace margelo::nitro::iap { enum class InAppMessageResponseCodeAndroid; }
90
102
  // Forward declaration of `ExternalPurchaseNoticeResultIOS` to properly resolve imports.
91
103
  namespace margelo::nitro::iap { struct ExternalPurchaseNoticeResultIOS; }
92
104
  // Forward declaration of `ExternalPurchaseNoticeAction` to properly resolve imports.
@@ -113,6 +125,10 @@ namespace margelo::nitro::iap { struct WinBackOfferInputIOS; }
113
125
  namespace margelo::nitro::iap { struct NitroRequestPurchaseAndroid; }
114
126
  // Forward declaration of `AndroidSubscriptionOfferInput` to properly resolve imports.
115
127
  namespace margelo::nitro::iap { struct AndroidSubscriptionOfferInput; }
128
+ // Forward declaration of `DeveloperBillingOptionParamsAndroid` to properly resolve imports.
129
+ namespace margelo::nitro::iap { struct DeveloperBillingOptionParamsAndroid; }
130
+ // Forward declaration of `DeveloperBillingLaunchModeAndroid` to properly resolve imports.
131
+ namespace margelo::nitro::iap { enum class DeveloperBillingLaunchModeAndroid; }
116
132
  // Forward declaration of `SubscriptionProductReplacementParamsAndroid` to properly resolve imports.
117
133
  namespace margelo::nitro::iap { struct SubscriptionProductReplacementParamsAndroid; }
118
134
  // Forward declaration of `SubscriptionReplacementModeAndroid` to properly resolve imports.
@@ -157,6 +173,22 @@ namespace margelo::nitro::iap { struct NitroDeepLinkOptionsAndroid; }
157
173
  namespace margelo::nitro::iap { struct UserChoiceBillingDetails; }
158
174
  // Forward declaration of `DeveloperProvidedBillingDetailsAndroid` to properly resolve imports.
159
175
  namespace margelo::nitro::iap { struct DeveloperProvidedBillingDetailsAndroid; }
176
+ // Forward declaration of `DeveloperProvidedBillingProductAndroid` to properly resolve imports.
177
+ namespace margelo::nitro::iap { struct DeveloperProvidedBillingProductAndroid; }
178
+ // Forward declaration of `ProductType` to properly resolve imports.
179
+ namespace margelo::nitro::iap { enum class ProductType; }
180
+ // Forward declaration of `NitroGetBillingChoiceInfoParamsAndroid` to properly resolve imports.
181
+ namespace margelo::nitro::iap { struct NitroGetBillingChoiceInfoParamsAndroid; }
182
+ // Forward declaration of `BillingChoiceImageLayoutAndroid` to properly resolve imports.
183
+ namespace margelo::nitro::iap { enum class BillingChoiceImageLayoutAndroid; }
184
+ // Forward declaration of `DeveloperBillingTypeAndroid` to properly resolve imports.
185
+ namespace margelo::nitro::iap { enum class DeveloperBillingTypeAndroid; }
186
+ // Forward declaration of `NitroBillingProgramInformationDialogParamsAndroid` to properly resolve imports.
187
+ namespace margelo::nitro::iap { struct NitroBillingProgramInformationDialogParamsAndroid; }
188
+ // Forward declaration of `NitroInAppMessageParamsAndroid` to properly resolve imports.
189
+ namespace margelo::nitro::iap { struct NitroInAppMessageParamsAndroid; }
190
+ // Forward declaration of `InAppMessageCategoryAndroid` to properly resolve imports.
191
+ namespace margelo::nitro::iap { enum class InAppMessageCategoryAndroid; }
160
192
  // Forward declaration of `NitroLaunchExternalLinkParamsAndroid` to properly resolve imports.
161
193
  namespace margelo::nitro::iap { struct NitroLaunchExternalLinkParamsAndroid; }
162
194
  // Forward declaration of `ExternalLinkLaunchModeAndroid` to properly resolve imports.
@@ -285,8 +317,20 @@ namespace margelo::nitro::iap { enum class ExternalPurchaseCustomLinkNoticeTypeI
285
317
  #include "JNitroBillingProgramAvailabilityResultAndroid.hpp"
286
318
  #include "BillingProgramAndroid.hpp"
287
319
  #include "JBillingProgramAndroid.hpp"
320
+ #include "BillingChoiceScreenTypeAndroid.hpp"
321
+ #include "JBillingChoiceScreenTypeAndroid.hpp"
322
+ #include "NitroBillingChoiceInfoAndroid.hpp"
323
+ #include "JNitroBillingChoiceInfoAndroid.hpp"
288
324
  #include "NitroBillingProgramReportingDetailsAndroid.hpp"
289
325
  #include "JNitroBillingProgramReportingDetailsAndroid.hpp"
326
+ #include "NitroBillingResultAndroid.hpp"
327
+ #include "JNitroBillingResultAndroid.hpp"
328
+ #include "SubResponseCodeAndroid.hpp"
329
+ #include "JSubResponseCodeAndroid.hpp"
330
+ #include "NitroInAppMessageResultAndroid.hpp"
331
+ #include "JNitroInAppMessageResultAndroid.hpp"
332
+ #include "InAppMessageResponseCodeAndroid.hpp"
333
+ #include "JInAppMessageResponseCodeAndroid.hpp"
290
334
  #include "ExternalPurchaseNoticeResultIOS.hpp"
291
335
  #include "JExternalPurchaseNoticeResultIOS.hpp"
292
336
  #include "ExternalPurchaseNoticeAction.hpp"
@@ -321,6 +365,11 @@ namespace margelo::nitro::iap { enum class ExternalPurchaseCustomLinkNoticeTypeI
321
365
  #include "AndroidSubscriptionOfferInput.hpp"
322
366
  #include "JVariant_NullType_Array_AndroidSubscriptionOfferInput_.hpp"
323
367
  #include "JAndroidSubscriptionOfferInput.hpp"
368
+ #include "DeveloperBillingOptionParamsAndroid.hpp"
369
+ #include "JVariant_NullType_DeveloperBillingOptionParamsAndroid.hpp"
370
+ #include "JDeveloperBillingOptionParamsAndroid.hpp"
371
+ #include "DeveloperBillingLaunchModeAndroid.hpp"
372
+ #include "JDeveloperBillingLaunchModeAndroid.hpp"
324
373
  #include "SubscriptionProductReplacementParamsAndroid.hpp"
325
374
  #include "JVariant_NullType_SubscriptionProductReplacementParamsAndroid.hpp"
326
375
  #include "JSubscriptionProductReplacementParamsAndroid.hpp"
@@ -384,6 +433,24 @@ namespace margelo::nitro::iap { enum class ExternalPurchaseCustomLinkNoticeTypeI
384
433
  #include "DeveloperProvidedBillingDetailsAndroid.hpp"
385
434
  #include "JFunc_void_DeveloperProvidedBillingDetailsAndroid.hpp"
386
435
  #include "JDeveloperProvidedBillingDetailsAndroid.hpp"
436
+ #include "DeveloperProvidedBillingProductAndroid.hpp"
437
+ #include "JDeveloperProvidedBillingProductAndroid.hpp"
438
+ #include "ProductType.hpp"
439
+ #include "JProductType.hpp"
440
+ #include "NitroGetBillingChoiceInfoParamsAndroid.hpp"
441
+ #include "JNitroGetBillingChoiceInfoParamsAndroid.hpp"
442
+ #include "BillingChoiceImageLayoutAndroid.hpp"
443
+ #include "JBillingChoiceImageLayoutAndroid.hpp"
444
+ #include "DeveloperBillingTypeAndroid.hpp"
445
+ #include "JDeveloperBillingTypeAndroid.hpp"
446
+ #include "NitroBillingProgramInformationDialogParamsAndroid.hpp"
447
+ #include "JNitroBillingProgramInformationDialogParamsAndroid.hpp"
448
+ #include "NitroInAppMessageParamsAndroid.hpp"
449
+ #include "JVariant_NullType_NitroInAppMessageParamsAndroid.hpp"
450
+ #include "JNitroInAppMessageParamsAndroid.hpp"
451
+ #include "InAppMessageCategoryAndroid.hpp"
452
+ #include "JVariant_NullType_Array_InAppMessageCategoryAndroid_.hpp"
453
+ #include "JInAppMessageCategoryAndroid.hpp"
387
454
  #include "NitroLaunchExternalLinkParamsAndroid.hpp"
388
455
  #include "JNitroLaunchExternalLinkParamsAndroid.hpp"
389
456
  #include "ExternalLinkLaunchModeAndroid.hpp"
@@ -1167,9 +1234,25 @@ namespace margelo::nitro::iap {
1167
1234
  return __promise;
1168
1235
  }();
1169
1236
  }
1170
- std::shared_ptr<Promise<NitroBillingProgramReportingDetailsAndroid>> JHybridRnIapSpec::createBillingProgramReportingDetailsAndroid(BillingProgramAndroid program) {
1171
- static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<JBillingProgramAndroid> /* program */)>("createBillingProgramReportingDetailsAndroid");
1172
- auto __result = method(_javaPart, JBillingProgramAndroid::fromCpp(program));
1237
+ std::shared_ptr<Promise<NitroBillingChoiceInfoAndroid>> JHybridRnIapSpec::getBillingChoiceInfoAndroid(const NitroGetBillingChoiceInfoParamsAndroid& params) {
1238
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<JNitroGetBillingChoiceInfoParamsAndroid> /* params */)>("getBillingChoiceInfoAndroid");
1239
+ auto __result = method(_javaPart, JNitroGetBillingChoiceInfoParamsAndroid::fromCpp(params));
1240
+ return [&]() {
1241
+ auto __promise = Promise<NitroBillingChoiceInfoAndroid>::create();
1242
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
1243
+ auto __result = jni::static_ref_cast<JNitroBillingChoiceInfoAndroid>(__boxedResult);
1244
+ __promise->resolve(__result->toCpp());
1245
+ });
1246
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
1247
+ jni::JniException __jniError(__throwable);
1248
+ __promise->reject(std::make_exception_ptr(__jniError));
1249
+ });
1250
+ return __promise;
1251
+ }();
1252
+ }
1253
+ std::shared_ptr<Promise<NitroBillingProgramReportingDetailsAndroid>> JHybridRnIapSpec::createBillingProgramReportingDetailsAndroid(BillingProgramAndroid program, std::optional<DeveloperBillingTypeAndroid> developerBillingType) {
1254
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<JBillingProgramAndroid> /* program */, jni::alias_ref<JDeveloperBillingTypeAndroid> /* developerBillingType */)>("createBillingProgramReportingDetailsAndroid");
1255
+ auto __result = method(_javaPart, JBillingProgramAndroid::fromCpp(program), developerBillingType.has_value() ? JDeveloperBillingTypeAndroid::fromCpp(developerBillingType.value()) : nullptr);
1173
1256
  return [&]() {
1174
1257
  auto __promise = Promise<NitroBillingProgramReportingDetailsAndroid>::create();
1175
1258
  __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
@@ -1183,6 +1266,38 @@ namespace margelo::nitro::iap {
1183
1266
  return __promise;
1184
1267
  }();
1185
1268
  }
1269
+ std::shared_ptr<Promise<NitroBillingResultAndroid>> JHybridRnIapSpec::showBillingProgramInformationDialogAndroid(const NitroBillingProgramInformationDialogParamsAndroid& params) {
1270
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<JNitroBillingProgramInformationDialogParamsAndroid> /* params */)>("showBillingProgramInformationDialogAndroid");
1271
+ auto __result = method(_javaPart, JNitroBillingProgramInformationDialogParamsAndroid::fromCpp(params));
1272
+ return [&]() {
1273
+ auto __promise = Promise<NitroBillingResultAndroid>::create();
1274
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
1275
+ auto __result = jni::static_ref_cast<JNitroBillingResultAndroid>(__boxedResult);
1276
+ __promise->resolve(__result->toCpp());
1277
+ });
1278
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
1279
+ jni::JniException __jniError(__throwable);
1280
+ __promise->reject(std::make_exception_ptr(__jniError));
1281
+ });
1282
+ return __promise;
1283
+ }();
1284
+ }
1285
+ std::shared_ptr<Promise<NitroInAppMessageResultAndroid>> JHybridRnIapSpec::showInAppMessagesAndroid(const std::optional<std::variant<nitro::NullType, NitroInAppMessageParamsAndroid>>& params) {
1286
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<JVariant_NullType_NitroInAppMessageParamsAndroid> /* params */)>("showInAppMessagesAndroid");
1287
+ auto __result = method(_javaPart, params.has_value() ? JVariant_NullType_NitroInAppMessageParamsAndroid::fromCpp(params.value()) : nullptr);
1288
+ return [&]() {
1289
+ auto __promise = Promise<NitroInAppMessageResultAndroid>::create();
1290
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
1291
+ auto __result = jni::static_ref_cast<JNitroInAppMessageResultAndroid>(__boxedResult);
1292
+ __promise->resolve(__result->toCpp());
1293
+ });
1294
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
1295
+ jni::JniException __jniError(__throwable);
1296
+ __promise->reject(std::make_exception_ptr(__jniError));
1297
+ });
1298
+ return __promise;
1299
+ }();
1300
+ }
1186
1301
  std::shared_ptr<Promise<bool>> JHybridRnIapSpec::launchExternalLinkAndroid(const NitroLaunchExternalLinkParamsAndroid& params) {
1187
1302
  static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<JNitroLaunchExternalLinkParamsAndroid> /* params */)>("launchExternalLinkAndroid");
1188
1303
  auto __result = method(_javaPart, JNitroLaunchExternalLinkParamsAndroid::fromCpp(params));
@@ -105,7 +105,10 @@ namespace margelo::nitro::iap {
105
105
  void removeSubscriptionBillingIssueListener(const std::function<void(const NitroPurchase& /* purchase */)>& listener) override;
106
106
  void enableBillingProgramAndroid(BillingProgramAndroid program) override;
107
107
  std::shared_ptr<Promise<NitroBillingProgramAvailabilityResultAndroid>> isBillingProgramAvailableAndroid(BillingProgramAndroid program) override;
108
- std::shared_ptr<Promise<NitroBillingProgramReportingDetailsAndroid>> createBillingProgramReportingDetailsAndroid(BillingProgramAndroid program) override;
108
+ std::shared_ptr<Promise<NitroBillingChoiceInfoAndroid>> getBillingChoiceInfoAndroid(const NitroGetBillingChoiceInfoParamsAndroid& params) override;
109
+ std::shared_ptr<Promise<NitroBillingProgramReportingDetailsAndroid>> createBillingProgramReportingDetailsAndroid(BillingProgramAndroid program, std::optional<DeveloperBillingTypeAndroid> developerBillingType) override;
110
+ std::shared_ptr<Promise<NitroBillingResultAndroid>> showBillingProgramInformationDialogAndroid(const NitroBillingProgramInformationDialogParamsAndroid& params) override;
111
+ std::shared_ptr<Promise<NitroInAppMessageResultAndroid>> showInAppMessagesAndroid(const std::optional<std::variant<nitro::NullType, NitroInAppMessageParamsAndroid>>& params) override;
109
112
  std::shared_ptr<Promise<bool>> launchExternalLinkAndroid(const NitroLaunchExternalLinkParamsAndroid& params) override;
110
113
  std::shared_ptr<Promise<bool>> canPresentExternalPurchaseNoticeIOS() override;
111
114
  std::shared_ptr<Promise<ExternalPurchaseNoticeResultIOS>> presentExternalPurchaseNoticeSheetIOS() override;
@@ -0,0 +1,58 @@
1
+ ///
2
+ /// JInAppMessageCategoryAndroid.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
+ #include <fbjni/fbjni.h>
11
+ #include "InAppMessageCategoryAndroid.hpp"
12
+
13
+ namespace margelo::nitro::iap {
14
+
15
+ using namespace facebook;
16
+
17
+ /**
18
+ * The C++ JNI bridge between the C++ enum "InAppMessageCategoryAndroid" and the the Kotlin enum "InAppMessageCategoryAndroid".
19
+ */
20
+ struct JInAppMessageCategoryAndroid final: public jni::JavaClass<JInAppMessageCategoryAndroid> {
21
+ public:
22
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/iap/InAppMessageCategoryAndroid;";
23
+
24
+ public:
25
+ /**
26
+ * Convert this Java/Kotlin-based enum to the C++ enum InAppMessageCategoryAndroid.
27
+ */
28
+ [[maybe_unused]]
29
+ [[nodiscard]]
30
+ InAppMessageCategoryAndroid toCpp() const {
31
+ static const auto clazz = javaClassStatic();
32
+ static const auto fieldOrdinal = clazz->getField<int>("value");
33
+ int ordinal = this->getFieldValue(fieldOrdinal);
34
+ return static_cast<InAppMessageCategoryAndroid>(ordinal);
35
+ }
36
+
37
+ public:
38
+ /**
39
+ * Create a Java/Kotlin-based enum with the given C++ enum's value.
40
+ */
41
+ [[maybe_unused]]
42
+ static jni::alias_ref<JInAppMessageCategoryAndroid> fromCpp(InAppMessageCategoryAndroid value) {
43
+ static const auto clazz = javaClassStatic();
44
+ switch (value) {
45
+ case InAppMessageCategoryAndroid::UNKNOWN_IN_APP_MESSAGE_CATEGORY_ID:
46
+ static const auto fieldUNKNOWN_IN_APP_MESSAGE_CATEGORY_ID = clazz->getStaticField<JInAppMessageCategoryAndroid>("UNKNOWN_IN_APP_MESSAGE_CATEGORY_ID");
47
+ return clazz->getStaticFieldValue(fieldUNKNOWN_IN_APP_MESSAGE_CATEGORY_ID);
48
+ case InAppMessageCategoryAndroid::TRANSACTIONAL:
49
+ static const auto fieldTRANSACTIONAL = clazz->getStaticField<JInAppMessageCategoryAndroid>("TRANSACTIONAL");
50
+ return clazz->getStaticFieldValue(fieldTRANSACTIONAL);
51
+ default:
52
+ std::string stringValue = std::to_string(static_cast<int>(value));
53
+ throw std::invalid_argument("Invalid enum value (" + stringValue + "!");
54
+ }
55
+ }
56
+ };
57
+
58
+ } // namespace margelo::nitro::iap
@@ -0,0 +1,58 @@
1
+ ///
2
+ /// JInAppMessageResponseCodeAndroid.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
+ #include <fbjni/fbjni.h>
11
+ #include "InAppMessageResponseCodeAndroid.hpp"
12
+
13
+ namespace margelo::nitro::iap {
14
+
15
+ using namespace facebook;
16
+
17
+ /**
18
+ * The C++ JNI bridge between the C++ enum "InAppMessageResponseCodeAndroid" and the the Kotlin enum "InAppMessageResponseCodeAndroid".
19
+ */
20
+ struct JInAppMessageResponseCodeAndroid final: public jni::JavaClass<JInAppMessageResponseCodeAndroid> {
21
+ public:
22
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/iap/InAppMessageResponseCodeAndroid;";
23
+
24
+ public:
25
+ /**
26
+ * Convert this Java/Kotlin-based enum to the C++ enum InAppMessageResponseCodeAndroid.
27
+ */
28
+ [[maybe_unused]]
29
+ [[nodiscard]]
30
+ InAppMessageResponseCodeAndroid toCpp() const {
31
+ static const auto clazz = javaClassStatic();
32
+ static const auto fieldOrdinal = clazz->getField<int>("value");
33
+ int ordinal = this->getFieldValue(fieldOrdinal);
34
+ return static_cast<InAppMessageResponseCodeAndroid>(ordinal);
35
+ }
36
+
37
+ public:
38
+ /**
39
+ * Create a Java/Kotlin-based enum with the given C++ enum's value.
40
+ */
41
+ [[maybe_unused]]
42
+ static jni::alias_ref<JInAppMessageResponseCodeAndroid> fromCpp(InAppMessageResponseCodeAndroid value) {
43
+ static const auto clazz = javaClassStatic();
44
+ switch (value) {
45
+ case InAppMessageResponseCodeAndroid::NO_ACTION_NEEDED:
46
+ static const auto fieldNO_ACTION_NEEDED = clazz->getStaticField<JInAppMessageResponseCodeAndroid>("NO_ACTION_NEEDED");
47
+ return clazz->getStaticFieldValue(fieldNO_ACTION_NEEDED);
48
+ case InAppMessageResponseCodeAndroid::SUBSCRIPTION_STATUS_UPDATED:
49
+ static const auto fieldSUBSCRIPTION_STATUS_UPDATED = clazz->getStaticField<JInAppMessageResponseCodeAndroid>("SUBSCRIPTION_STATUS_UPDATED");
50
+ return clazz->getStaticFieldValue(fieldSUBSCRIPTION_STATUS_UPDATED);
51
+ default:
52
+ std::string stringValue = std::to_string(static_cast<int>(value));
53
+ throw std::invalid_argument("Invalid enum value (" + stringValue + "!");
54
+ }
55
+ }
56
+ };
57
+
58
+ } // namespace margelo::nitro::iap
@@ -11,8 +11,10 @@
11
11
  #include "InitConnectionConfig.hpp"
12
12
 
13
13
  #include "AlternativeBillingModeAndroid.hpp"
14
+ #include "BillingChoiceScreenTypeAndroid.hpp"
14
15
  #include "BillingProgramAndroid.hpp"
15
16
  #include "JAlternativeBillingModeAndroid.hpp"
17
+ #include "JBillingChoiceScreenTypeAndroid.hpp"
16
18
  #include "JBillingProgramAndroid.hpp"
17
19
  #include <optional>
18
20
 
@@ -37,10 +39,13 @@ namespace margelo::nitro::iap {
37
39
  static const auto clazz = javaClassStatic();
38
40
  static const auto fieldAlternativeBillingModeAndroid = clazz->getField<JAlternativeBillingModeAndroid>("alternativeBillingModeAndroid");
39
41
  jni::local_ref<JAlternativeBillingModeAndroid> alternativeBillingModeAndroid = this->getFieldValue(fieldAlternativeBillingModeAndroid);
42
+ static const auto fieldBillingChoiceScreenTypeAndroid = clazz->getField<JBillingChoiceScreenTypeAndroid>("billingChoiceScreenTypeAndroid");
43
+ jni::local_ref<JBillingChoiceScreenTypeAndroid> billingChoiceScreenTypeAndroid = this->getFieldValue(fieldBillingChoiceScreenTypeAndroid);
40
44
  static const auto fieldEnableBillingProgramAndroid = clazz->getField<JBillingProgramAndroid>("enableBillingProgramAndroid");
41
45
  jni::local_ref<JBillingProgramAndroid> enableBillingProgramAndroid = this->getFieldValue(fieldEnableBillingProgramAndroid);
42
46
  return InitConnectionConfig(
43
47
  alternativeBillingModeAndroid != nullptr ? std::make_optional(alternativeBillingModeAndroid->toCpp()) : std::nullopt,
48
+ billingChoiceScreenTypeAndroid != nullptr ? std::make_optional(billingChoiceScreenTypeAndroid->toCpp()) : std::nullopt,
44
49
  enableBillingProgramAndroid != nullptr ? std::make_optional(enableBillingProgramAndroid->toCpp()) : std::nullopt
45
50
  );
46
51
  }
@@ -51,12 +56,13 @@ namespace margelo::nitro::iap {
51
56
  */
52
57
  [[maybe_unused]]
53
58
  static jni::local_ref<JInitConnectionConfig::javaobject> fromCpp(const InitConnectionConfig& value) {
54
- using JSignature = JInitConnectionConfig(jni::alias_ref<JAlternativeBillingModeAndroid>, jni::alias_ref<JBillingProgramAndroid>);
59
+ using JSignature = JInitConnectionConfig(jni::alias_ref<JAlternativeBillingModeAndroid>, jni::alias_ref<JBillingChoiceScreenTypeAndroid>, jni::alias_ref<JBillingProgramAndroid>);
55
60
  static const auto clazz = javaClassStatic();
56
61
  static const auto create = clazz->getStaticMethod<JSignature>("fromCpp");
57
62
  return create(
58
63
  clazz,
59
64
  value.alternativeBillingModeAndroid.has_value() ? JAlternativeBillingModeAndroid::fromCpp(value.alternativeBillingModeAndroid.value()) : nullptr,
65
+ value.billingChoiceScreenTypeAndroid.has_value() ? JBillingChoiceScreenTypeAndroid::fromCpp(value.billingChoiceScreenTypeAndroid.value()) : nullptr,
60
66
  value.enableBillingProgramAndroid.has_value() ? JBillingProgramAndroid::fromCpp(value.enableBillingProgramAndroid.value()) : nullptr
61
67
  );
62
68
  }
@@ -0,0 +1,66 @@
1
+ ///
2
+ /// JNitroBillingChoiceInfoAndroid.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
+ #include <fbjni/fbjni.h>
11
+ #include "NitroBillingChoiceInfoAndroid.hpp"
12
+
13
+ #include "JVariant_NullType_String.hpp"
14
+ #include <NitroModules/JNull.hpp>
15
+ #include <NitroModules/Null.hpp>
16
+ #include <optional>
17
+ #include <string>
18
+ #include <variant>
19
+
20
+ namespace margelo::nitro::iap {
21
+
22
+ using namespace facebook;
23
+
24
+ /**
25
+ * The C++ JNI bridge between the C++ struct "NitroBillingChoiceInfoAndroid" and the the Kotlin data class "NitroBillingChoiceInfoAndroid".
26
+ */
27
+ struct JNitroBillingChoiceInfoAndroid final: public jni::JavaClass<JNitroBillingChoiceInfoAndroid> {
28
+ public:
29
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/iap/NitroBillingChoiceInfoAndroid;";
30
+
31
+ public:
32
+ /**
33
+ * Convert this Java/Kotlin-based struct to the C++ struct NitroBillingChoiceInfoAndroid by copying all values to C++.
34
+ */
35
+ [[maybe_unused]]
36
+ [[nodiscard]]
37
+ NitroBillingChoiceInfoAndroid toCpp() const {
38
+ static const auto clazz = javaClassStatic();
39
+ static const auto fieldPlayBillingChoiceImageUrl = clazz->getField<jni::JString>("playBillingChoiceImageUrl");
40
+ jni::local_ref<jni::JString> playBillingChoiceImageUrl = this->getFieldValue(fieldPlayBillingChoiceImageUrl);
41
+ static const auto fieldPlayBillingLoyaltyInfo = clazz->getField<JVariant_NullType_String>("playBillingLoyaltyInfo");
42
+ jni::local_ref<JVariant_NullType_String> playBillingLoyaltyInfo = this->getFieldValue(fieldPlayBillingLoyaltyInfo);
43
+ return NitroBillingChoiceInfoAndroid(
44
+ playBillingChoiceImageUrl->toStdString(),
45
+ playBillingLoyaltyInfo != nullptr ? std::make_optional(playBillingLoyaltyInfo->toCpp()) : std::nullopt
46
+ );
47
+ }
48
+
49
+ public:
50
+ /**
51
+ * Create a Java/Kotlin-based struct by copying all values from the given C++ struct to Java.
52
+ */
53
+ [[maybe_unused]]
54
+ static jni::local_ref<JNitroBillingChoiceInfoAndroid::javaobject> fromCpp(const NitroBillingChoiceInfoAndroid& value) {
55
+ using JSignature = JNitroBillingChoiceInfoAndroid(jni::alias_ref<jni::JString>, jni::alias_ref<JVariant_NullType_String>);
56
+ static const auto clazz = javaClassStatic();
57
+ static const auto create = clazz->getStaticMethod<JSignature>("fromCpp");
58
+ return create(
59
+ clazz,
60
+ jni::make_jstring(value.playBillingChoiceImageUrl),
61
+ value.playBillingLoyaltyInfo.has_value() ? JVariant_NullType_String::fromCpp(value.playBillingLoyaltyInfo.value()) : nullptr
62
+ );
63
+ }
64
+ };
65
+
66
+ } // namespace margelo::nitro::iap
@@ -10,8 +10,15 @@
10
10
  #include <fbjni/fbjni.h>
11
11
  #include "NitroBillingProgramAvailabilityResultAndroid.hpp"
12
12
 
13
+ #include "BillingChoiceScreenTypeAndroid.hpp"
13
14
  #include "BillingProgramAndroid.hpp"
15
+ #include "JBillingChoiceScreenTypeAndroid.hpp"
14
16
  #include "JBillingProgramAndroid.hpp"
17
+ #include "JVariant_NullType_Boolean.hpp"
18
+ #include <NitroModules/JNull.hpp>
19
+ #include <NitroModules/Null.hpp>
20
+ #include <optional>
21
+ #include <variant>
15
22
 
16
23
  namespace margelo::nitro::iap {
17
24
 
@@ -34,11 +41,17 @@ namespace margelo::nitro::iap {
34
41
  static const auto clazz = javaClassStatic();
35
42
  static const auto fieldBillingProgram = clazz->getField<JBillingProgramAndroid>("billingProgram");
36
43
  jni::local_ref<JBillingProgramAndroid> billingProgram = this->getFieldValue(fieldBillingProgram);
44
+ static const auto fieldChoiceScreenType = clazz->getField<JBillingChoiceScreenTypeAndroid>("choiceScreenType");
45
+ jni::local_ref<JBillingChoiceScreenTypeAndroid> choiceScreenType = this->getFieldValue(fieldChoiceScreenType);
37
46
  static const auto fieldIsAvailable = clazz->getField<jboolean>("isAvailable");
38
47
  jboolean isAvailable = this->getFieldValue(fieldIsAvailable);
48
+ static const auto fieldIsExternalLinkAvailable = clazz->getField<JVariant_NullType_Boolean>("isExternalLinkAvailable");
49
+ jni::local_ref<JVariant_NullType_Boolean> isExternalLinkAvailable = this->getFieldValue(fieldIsExternalLinkAvailable);
39
50
  return NitroBillingProgramAvailabilityResultAndroid(
40
51
  billingProgram->toCpp(),
41
- static_cast<bool>(isAvailable)
52
+ choiceScreenType != nullptr ? std::make_optional(choiceScreenType->toCpp()) : std::nullopt,
53
+ static_cast<bool>(isAvailable),
54
+ isExternalLinkAvailable != nullptr ? std::make_optional(isExternalLinkAvailable->toCpp()) : std::nullopt
42
55
  );
43
56
  }
44
57
 
@@ -48,13 +61,15 @@ namespace margelo::nitro::iap {
48
61
  */
49
62
  [[maybe_unused]]
50
63
  static jni::local_ref<JNitroBillingProgramAvailabilityResultAndroid::javaobject> fromCpp(const NitroBillingProgramAvailabilityResultAndroid& value) {
51
- using JSignature = JNitroBillingProgramAvailabilityResultAndroid(jni::alias_ref<JBillingProgramAndroid>, jboolean);
64
+ using JSignature = JNitroBillingProgramAvailabilityResultAndroid(jni::alias_ref<JBillingProgramAndroid>, jni::alias_ref<JBillingChoiceScreenTypeAndroid>, jboolean, jni::alias_ref<JVariant_NullType_Boolean>);
52
65
  static const auto clazz = javaClassStatic();
53
66
  static const auto create = clazz->getStaticMethod<JSignature>("fromCpp");
54
67
  return create(
55
68
  clazz,
56
69
  JBillingProgramAndroid::fromCpp(value.billingProgram),
57
- value.isAvailable
70
+ value.choiceScreenType.has_value() ? JBillingChoiceScreenTypeAndroid::fromCpp(value.choiceScreenType.value()) : nullptr,
71
+ value.isAvailable,
72
+ value.isExternalLinkAvailable.has_value() ? JVariant_NullType_Boolean::fromCpp(value.isExternalLinkAvailable.value()) : nullptr
58
73
  );
59
74
  }
60
75
  };