@gmisoftware/react-native-pay 0.0.4

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 (203) hide show
  1. package/NitroPay.podspec +31 -0
  2. package/README.md +455 -0
  3. package/android/CMakeLists.txt +29 -0
  4. package/android/build.gradle +144 -0
  5. package/android/fix-prefab.gradle +51 -0
  6. package/android/gradle.properties +8 -0
  7. package/android/src/main/AndroidManifest.xml +2 -0
  8. package/android/src/main/cpp/cpp-adapter.cpp +6 -0
  9. package/android/src/main/java/com/margelo/nitro/pay/Constants.kt +49 -0
  10. package/android/src/main/java/com/margelo/nitro/pay/GooglePayButtonFactory.kt +95 -0
  11. package/android/src/main/java/com/margelo/nitro/pay/GooglePayRequestBuilder.kt +170 -0
  12. package/android/src/main/java/com/margelo/nitro/pay/HybridGooglePayButton.kt +146 -0
  13. package/android/src/main/java/com/margelo/nitro/pay/HybridPaymentHandler.kt +184 -0
  14. package/android/src/main/java/com/margelo/nitro/pay/NitroPayPackage.kt +26 -0
  15. package/android/src/main/java/com/margelo/nitro/pay/PaymentMapper.kt +89 -0
  16. package/app.plugin.js +1 -0
  17. package/ios/ApplePayButtonFactory.swift +53 -0
  18. package/ios/Bridge.h +8 -0
  19. package/ios/HybridApplePayButton.swift +60 -0
  20. package/ios/HybridPaymentHandler.swift +248 -0
  21. package/ios/PassKitTypeMapper.swift +192 -0
  22. package/lib/hooks/index.d.ts +7 -0
  23. package/lib/hooks/index.js +10 -0
  24. package/lib/hooks/usePaymentCheckout.d.ts +95 -0
  25. package/lib/hooks/usePaymentCheckout.js +183 -0
  26. package/lib/index.d.ts +10 -0
  27. package/lib/index.js +29 -0
  28. package/lib/plugin/index.d.ts +4 -0
  29. package/lib/plugin/index.js +10 -0
  30. package/lib/plugin/type.d.ts +4 -0
  31. package/lib/plugin/type.js +2 -0
  32. package/lib/plugin/withApplePay.d.ts +4 -0
  33. package/lib/plugin/withApplePay.js +32 -0
  34. package/lib/plugin/withGooglePay.d.ts +4 -0
  35. package/lib/plugin/withGooglePay.js +24 -0
  36. package/lib/specs/ApplePayButton.nitro.d.ts +13 -0
  37. package/lib/specs/ApplePayButton.nitro.js +2 -0
  38. package/lib/specs/GooglePayButton.nitro.d.ts +14 -0
  39. package/lib/specs/GooglePayButton.nitro.js +2 -0
  40. package/lib/specs/PaymentHandler.nitro.d.ts +10 -0
  41. package/lib/specs/PaymentHandler.nitro.js +2 -0
  42. package/lib/types/Contact.d.ts +51 -0
  43. package/lib/types/Contact.js +6 -0
  44. package/lib/types/Payment.d.ts +67 -0
  45. package/lib/types/Payment.js +6 -0
  46. package/lib/types/index.d.ts +2 -0
  47. package/lib/types/index.js +18 -0
  48. package/lib/utils/index.d.ts +4 -0
  49. package/lib/utils/index.js +20 -0
  50. package/lib/utils/paymentHelpers.d.ts +144 -0
  51. package/lib/utils/paymentHelpers.js +190 -0
  52. package/nitro.json +30 -0
  53. package/nitrogen/generated/.gitattributes +1 -0
  54. package/nitrogen/generated/android/NitroPay+autolinking.cmake +87 -0
  55. package/nitrogen/generated/android/NitroPay+autolinking.gradle +27 -0
  56. package/nitrogen/generated/android/NitroPayOnLoad.cpp +58 -0
  57. package/nitrogen/generated/android/NitroPayOnLoad.hpp +25 -0
  58. package/nitrogen/generated/android/c++/JCNContact.hpp +202 -0
  59. package/nitrogen/generated/android/c++/JCNContactType.hpp +59 -0
  60. package/nitrogen/generated/android/c++/JCNLabeledEmailAddress.hpp +62 -0
  61. package/nitrogen/generated/android/c++/JCNLabeledPhoneNumber.hpp +64 -0
  62. package/nitrogen/generated/android/c++/JCNLabeledPostalAddress.hpp +64 -0
  63. package/nitrogen/generated/android/c++/JCNPhoneNumber.hpp +57 -0
  64. package/nitrogen/generated/android/c++/JCNPostalAddress.hpp +78 -0
  65. package/nitrogen/generated/android/c++/JFunc_void.hpp +74 -0
  66. package/nitrogen/generated/android/c++/JGooglePayButtonTheme.hpp +59 -0
  67. package/nitrogen/generated/android/c++/JGooglePayButtonType.hpp +77 -0
  68. package/nitrogen/generated/android/c++/JGooglePayEnvironment.hpp +59 -0
  69. package/nitrogen/generated/android/c++/JHybridGooglePayButtonSpec.cpp +96 -0
  70. package/nitrogen/generated/android/c++/JHybridGooglePayButtonSpec.hpp +71 -0
  71. package/nitrogen/generated/android/c++/JHybridPaymentHandlerSpec.cpp +154 -0
  72. package/nitrogen/generated/android/c++/JHybridPaymentHandlerSpec.hpp +66 -0
  73. package/nitrogen/generated/android/c++/JPKSecureElementPass.hpp +96 -0
  74. package/nitrogen/generated/android/c++/JPassActivationState.hpp +68 -0
  75. package/nitrogen/generated/android/c++/JPayServiceStatus.hpp +61 -0
  76. package/nitrogen/generated/android/c++/JPaymentItem.hpp +67 -0
  77. package/nitrogen/generated/android/c++/JPaymentItemType.hpp +59 -0
  78. package/nitrogen/generated/android/c++/JPaymentMethod.hpp +97 -0
  79. package/nitrogen/generated/android/c++/JPaymentMethodType.hpp +68 -0
  80. package/nitrogen/generated/android/c++/JPaymentNetwork.hpp +86 -0
  81. package/nitrogen/generated/android/c++/JPaymentRequest.hpp +181 -0
  82. package/nitrogen/generated/android/c++/JPaymentResult.hpp +97 -0
  83. package/nitrogen/generated/android/c++/JPaymentToken.hpp +91 -0
  84. package/nitrogen/generated/android/c++/views/JHybridGooglePayButtonStateUpdater.cpp +68 -0
  85. package/nitrogen/generated/android/c++/views/JHybridGooglePayButtonStateUpdater.hpp +49 -0
  86. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pay/CNContact.kt +96 -0
  87. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pay/CNContactType.kt +21 -0
  88. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pay/CNLabeledEmailAddress.kt +39 -0
  89. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pay/CNLabeledPhoneNumber.kt +39 -0
  90. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pay/CNLabeledPostalAddress.kt +39 -0
  91. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pay/CNPhoneNumber.kt +36 -0
  92. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pay/CNPostalAddress.kt +51 -0
  93. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pay/Func_void.kt +80 -0
  94. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pay/GooglePayButtonTheme.kt +21 -0
  95. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pay/GooglePayButtonType.kt +27 -0
  96. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pay/GooglePayEnvironment.kt +21 -0
  97. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pay/HybridGooglePayButtonSpec.kt +80 -0
  98. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pay/HybridPaymentHandlerSpec.kt +61 -0
  99. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pay/NitroPayOnLoad.kt +35 -0
  100. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pay/PKSecureElementPass.kt +63 -0
  101. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pay/PassActivationState.kt +24 -0
  102. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pay/PayServiceStatus.kt +39 -0
  103. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pay/PaymentItem.kt +42 -0
  104. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pay/PaymentItemType.kt +21 -0
  105. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pay/PaymentMethod.kt +48 -0
  106. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pay/PaymentMethodType.kt +24 -0
  107. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pay/PaymentNetwork.kt +30 -0
  108. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pay/PaymentRequest.kt +72 -0
  109. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pay/PaymentResult.kt +45 -0
  110. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pay/PaymentToken.kt +42 -0
  111. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pay/views/HybridGooglePayButtonManager.kt +50 -0
  112. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pay/views/HybridGooglePayButtonStateUpdater.kt +23 -0
  113. package/nitrogen/generated/ios/NitroPay+autolinking.rb +60 -0
  114. package/nitrogen/generated/ios/NitroPay-Swift-Cxx-Bridge.cpp +73 -0
  115. package/nitrogen/generated/ios/NitroPay-Swift-Cxx-Bridge.hpp +415 -0
  116. package/nitrogen/generated/ios/NitroPay-Swift-Cxx-Umbrella.hpp +116 -0
  117. package/nitrogen/generated/ios/NitroPayAutolinking.mm +41 -0
  118. package/nitrogen/generated/ios/NitroPayAutolinking.swift +40 -0
  119. package/nitrogen/generated/ios/c++/HybridApplePayButtonSpecSwift.cpp +11 -0
  120. package/nitrogen/generated/ios/c++/HybridApplePayButtonSpecSwift.hpp +92 -0
  121. package/nitrogen/generated/ios/c++/HybridPaymentHandlerSpecSwift.cpp +11 -0
  122. package/nitrogen/generated/ios/c++/HybridPaymentHandlerSpecSwift.hpp +148 -0
  123. package/nitrogen/generated/ios/c++/views/HybridApplePayButtonComponent.mm +106 -0
  124. package/nitrogen/generated/ios/swift/ApplePayButtonStyle.swift +44 -0
  125. package/nitrogen/generated/ios/swift/ApplePayButtonType.swift +84 -0
  126. package/nitrogen/generated/ios/swift/CNContact.swift +329 -0
  127. package/nitrogen/generated/ios/swift/CNContactType.swift +40 -0
  128. package/nitrogen/generated/ios/swift/CNLabeledEmailAddress.swift +65 -0
  129. package/nitrogen/generated/ios/swift/CNLabeledPhoneNumber.swift +65 -0
  130. package/nitrogen/generated/ios/swift/CNLabeledPostalAddress.swift +65 -0
  131. package/nitrogen/generated/ios/swift/CNPhoneNumber.swift +35 -0
  132. package/nitrogen/generated/ios/swift/CNPostalAddress.swift +204 -0
  133. package/nitrogen/generated/ios/swift/Func_void.swift +47 -0
  134. package/nitrogen/generated/ios/swift/Func_void_PaymentResult.swift +47 -0
  135. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +47 -0
  136. package/nitrogen/generated/ios/swift/GooglePayEnvironment.swift +40 -0
  137. package/nitrogen/generated/ios/swift/HybridApplePayButtonSpec.swift +51 -0
  138. package/nitrogen/generated/ios/swift/HybridApplePayButtonSpec_cxx.swift +175 -0
  139. package/nitrogen/generated/ios/swift/HybridPaymentHandlerSpec.swift +52 -0
  140. package/nitrogen/generated/ios/swift/HybridPaymentHandlerSpec_cxx.swift +155 -0
  141. package/nitrogen/generated/ios/swift/PKSecureElementPass.swift +191 -0
  142. package/nitrogen/generated/ios/swift/PassActivationState.swift +52 -0
  143. package/nitrogen/generated/ios/swift/PayServiceStatus.swift +46 -0
  144. package/nitrogen/generated/ios/swift/PaymentItem.swift +57 -0
  145. package/nitrogen/generated/ios/swift/PaymentItemType.swift +40 -0
  146. package/nitrogen/generated/ios/swift/PaymentMethod.swift +134 -0
  147. package/nitrogen/generated/ios/swift/PaymentMethodType.swift +52 -0
  148. package/nitrogen/generated/ios/swift/PaymentNetwork.swift +76 -0
  149. package/nitrogen/generated/ios/swift/PaymentRequest.swift +341 -0
  150. package/nitrogen/generated/ios/swift/PaymentResult.swift +118 -0
  151. package/nitrogen/generated/ios/swift/PaymentToken.swift +57 -0
  152. package/nitrogen/generated/shared/c++/ApplePayButtonStyle.hpp +80 -0
  153. package/nitrogen/generated/shared/c++/ApplePayButtonType.hpp +120 -0
  154. package/nitrogen/generated/shared/c++/CNContact.hpp +168 -0
  155. package/nitrogen/generated/shared/c++/CNContactType.hpp +76 -0
  156. package/nitrogen/generated/shared/c++/CNLabeledEmailAddress.hpp +80 -0
  157. package/nitrogen/generated/shared/c++/CNLabeledPhoneNumber.hpp +82 -0
  158. package/nitrogen/generated/shared/c++/CNLabeledPostalAddress.hpp +82 -0
  159. package/nitrogen/generated/shared/c++/CNPhoneNumber.hpp +75 -0
  160. package/nitrogen/generated/shared/c++/CNPostalAddress.hpp +96 -0
  161. package/nitrogen/generated/shared/c++/GooglePayButtonTheme.hpp +76 -0
  162. package/nitrogen/generated/shared/c++/GooglePayButtonType.hpp +100 -0
  163. package/nitrogen/generated/shared/c++/GooglePayEnvironment.hpp +76 -0
  164. package/nitrogen/generated/shared/c++/HybridApplePayButtonSpec.cpp +26 -0
  165. package/nitrogen/generated/shared/c++/HybridApplePayButtonSpec.hpp +73 -0
  166. package/nitrogen/generated/shared/c++/HybridGooglePayButtonSpec.cpp +28 -0
  167. package/nitrogen/generated/shared/c++/HybridGooglePayButtonSpec.hpp +75 -0
  168. package/nitrogen/generated/shared/c++/HybridPaymentHandlerSpec.cpp +23 -0
  169. package/nitrogen/generated/shared/c++/HybridPaymentHandlerSpec.hpp +74 -0
  170. package/nitrogen/generated/shared/c++/PKSecureElementPass.hpp +114 -0
  171. package/nitrogen/generated/shared/c++/PassActivationState.hpp +88 -0
  172. package/nitrogen/generated/shared/c++/PayServiceStatus.hpp +79 -0
  173. package/nitrogen/generated/shared/c++/PaymentItem.hpp +85 -0
  174. package/nitrogen/generated/shared/c++/PaymentItemType.hpp +76 -0
  175. package/nitrogen/generated/shared/c++/PaymentMethod.hpp +103 -0
  176. package/nitrogen/generated/shared/c++/PaymentMethodType.hpp +88 -0
  177. package/nitrogen/generated/shared/c++/PaymentNetwork.hpp +112 -0
  178. package/nitrogen/generated/shared/c++/PaymentRequest.hpp +130 -0
  179. package/nitrogen/generated/shared/c++/PaymentResult.hpp +90 -0
  180. package/nitrogen/generated/shared/c++/PaymentToken.hpp +85 -0
  181. package/nitrogen/generated/shared/c++/views/HybridApplePayButtonComponent.cpp +111 -0
  182. package/nitrogen/generated/shared/c++/views/HybridApplePayButtonComponent.hpp +111 -0
  183. package/nitrogen/generated/shared/c++/views/HybridGooglePayButtonComponent.cpp +123 -0
  184. package/nitrogen/generated/shared/c++/views/HybridGooglePayButtonComponent.hpp +112 -0
  185. package/nitrogen/generated/shared/json/ApplePayButtonConfig.json +12 -0
  186. package/nitrogen/generated/shared/json/GooglePayButtonConfig.json +13 -0
  187. package/package.json +116 -0
  188. package/react-native.config.js +16 -0
  189. package/src/hooks/index.ts +12 -0
  190. package/src/hooks/usePaymentCheckout.ts +281 -0
  191. package/src/index.ts +32 -0
  192. package/src/plugin/index.ts +17 -0
  193. package/src/plugin/type.ts +4 -0
  194. package/src/plugin/withApplePay.ts +44 -0
  195. package/src/plugin/withGooglePay.ts +41 -0
  196. package/src/specs/ApplePayButton.nitro.ts +37 -0
  197. package/src/specs/GooglePayButton.nitro.ts +34 -0
  198. package/src/specs/PaymentHandler.nitro.ts +13 -0
  199. package/src/types/Contact.ts +58 -0
  200. package/src/types/Payment.ts +104 -0
  201. package/src/types/index.ts +2 -0
  202. package/src/utils/index.ts +5 -0
  203. package/src/utils/paymentHelpers.ts +215 -0
@@ -0,0 +1,92 @@
1
+ ///
2
+ /// HybridApplePayButtonSpecSwift.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2025 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include "HybridApplePayButtonSpec.hpp"
11
+
12
+ // Forward declaration of `HybridApplePayButtonSpec_cxx` to properly resolve imports.
13
+ namespace NitroPay { class HybridApplePayButtonSpec_cxx; }
14
+
15
+ // Forward declaration of `ApplePayButtonType` to properly resolve imports.
16
+ namespace margelo::nitro::pay { enum class ApplePayButtonType; }
17
+ // Forward declaration of `ApplePayButtonStyle` to properly resolve imports.
18
+ namespace margelo::nitro::pay { enum class ApplePayButtonStyle; }
19
+
20
+ #include "ApplePayButtonType.hpp"
21
+ #include "ApplePayButtonStyle.hpp"
22
+ #include <functional>
23
+ #include <optional>
24
+
25
+ #include "NitroPay-Swift-Cxx-Umbrella.hpp"
26
+
27
+ namespace margelo::nitro::pay {
28
+
29
+ /**
30
+ * The C++ part of HybridApplePayButtonSpec_cxx.swift.
31
+ *
32
+ * HybridApplePayButtonSpecSwift (C++) accesses HybridApplePayButtonSpec_cxx (Swift), and might
33
+ * contain some additional bridging code for C++ <> Swift interop.
34
+ *
35
+ * Since this obviously introduces an overhead, I hope at some point in
36
+ * the future, HybridApplePayButtonSpec_cxx can directly inherit from the C++ class HybridApplePayButtonSpec
37
+ * to simplify the whole structure and memory management.
38
+ */
39
+ class HybridApplePayButtonSpecSwift: public virtual HybridApplePayButtonSpec {
40
+ public:
41
+ // Constructor from a Swift instance
42
+ explicit HybridApplePayButtonSpecSwift(const NitroPay::HybridApplePayButtonSpec_cxx& swiftPart):
43
+ HybridObject(HybridApplePayButtonSpec::TAG),
44
+ _swiftPart(swiftPart) { }
45
+
46
+ public:
47
+ // Get the Swift part
48
+ inline NitroPay::HybridApplePayButtonSpec_cxx& getSwiftPart() noexcept {
49
+ return _swiftPart;
50
+ }
51
+
52
+ public:
53
+ inline size_t getExternalMemorySize() noexcept override {
54
+ return _swiftPart.getMemorySize();
55
+ }
56
+ void dispose() noexcept override {
57
+ _swiftPart.dispose();
58
+ }
59
+
60
+ public:
61
+ // Properties
62
+ inline ApplePayButtonType getButtonType() noexcept override {
63
+ auto __result = _swiftPart.getButtonType();
64
+ return static_cast<ApplePayButtonType>(__result);
65
+ }
66
+ inline void setButtonType(ApplePayButtonType buttonType) noexcept override {
67
+ _swiftPart.setButtonType(static_cast<int>(buttonType));
68
+ }
69
+ inline ApplePayButtonStyle getButtonStyle() noexcept override {
70
+ auto __result = _swiftPart.getButtonStyle();
71
+ return static_cast<ApplePayButtonStyle>(__result);
72
+ }
73
+ inline void setButtonStyle(ApplePayButtonStyle buttonStyle) noexcept override {
74
+ _swiftPart.setButtonStyle(static_cast<int>(buttonStyle));
75
+ }
76
+ inline std::optional<std::function<void()>> getOnPress() noexcept override {
77
+ auto __result = _swiftPart.getOnPress();
78
+ return __result;
79
+ }
80
+ inline void setOnPress(const std::optional<std::function<void()>>& onPress) noexcept override {
81
+ _swiftPart.setOnPress(onPress);
82
+ }
83
+
84
+ public:
85
+ // Methods
86
+
87
+
88
+ private:
89
+ NitroPay::HybridApplePayButtonSpec_cxx _swiftPart;
90
+ };
91
+
92
+ } // namespace margelo::nitro::pay
@@ -0,0 +1,11 @@
1
+ ///
2
+ /// HybridPaymentHandlerSpecSwift.cpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2025 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #include "HybridPaymentHandlerSpecSwift.hpp"
9
+
10
+ namespace margelo::nitro::pay {
11
+ } // namespace margelo::nitro::pay
@@ -0,0 +1,148 @@
1
+ ///
2
+ /// HybridPaymentHandlerSpecSwift.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2025 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include "HybridPaymentHandlerSpec.hpp"
11
+
12
+ // Forward declaration of `HybridPaymentHandlerSpec_cxx` to properly resolve imports.
13
+ namespace NitroPay { class HybridPaymentHandlerSpec_cxx; }
14
+
15
+ // Forward declaration of `PayServiceStatus` to properly resolve imports.
16
+ namespace margelo::nitro::pay { struct PayServiceStatus; }
17
+ // Forward declaration of `PaymentResult` to properly resolve imports.
18
+ namespace margelo::nitro::pay { struct PaymentResult; }
19
+ // Forward declaration of `PaymentToken` to properly resolve imports.
20
+ namespace margelo::nitro::pay { struct PaymentToken; }
21
+ // Forward declaration of `PaymentMethod` to properly resolve imports.
22
+ namespace margelo::nitro::pay { struct PaymentMethod; }
23
+ // Forward declaration of `PaymentNetwork` to properly resolve imports.
24
+ namespace margelo::nitro::pay { enum class PaymentNetwork; }
25
+ // Forward declaration of `PaymentMethodType` to properly resolve imports.
26
+ namespace margelo::nitro::pay { enum class PaymentMethodType; }
27
+ // Forward declaration of `PKSecureElementPass` to properly resolve imports.
28
+ namespace margelo::nitro::pay { struct PKSecureElementPass; }
29
+ // Forward declaration of `PassActivationState` to properly resolve imports.
30
+ namespace margelo::nitro::pay { enum class PassActivationState; }
31
+ // Forward declaration of `CNContact` to properly resolve imports.
32
+ namespace margelo::nitro::pay { struct CNContact; }
33
+ // Forward declaration of `CNContactType` to properly resolve imports.
34
+ namespace margelo::nitro::pay { enum class CNContactType; }
35
+ // Forward declaration of `CNLabeledPhoneNumber` to properly resolve imports.
36
+ namespace margelo::nitro::pay { struct CNLabeledPhoneNumber; }
37
+ // Forward declaration of `CNPhoneNumber` to properly resolve imports.
38
+ namespace margelo::nitro::pay { struct CNPhoneNumber; }
39
+ // Forward declaration of `CNLabeledEmailAddress` to properly resolve imports.
40
+ namespace margelo::nitro::pay { struct CNLabeledEmailAddress; }
41
+ // Forward declaration of `CNLabeledPostalAddress` to properly resolve imports.
42
+ namespace margelo::nitro::pay { struct CNLabeledPostalAddress; }
43
+ // Forward declaration of `CNPostalAddress` to properly resolve imports.
44
+ namespace margelo::nitro::pay { struct CNPostalAddress; }
45
+ // Forward declaration of `PaymentRequest` to properly resolve imports.
46
+ namespace margelo::nitro::pay { struct PaymentRequest; }
47
+ // Forward declaration of `PaymentItem` to properly resolve imports.
48
+ namespace margelo::nitro::pay { struct PaymentItem; }
49
+ // Forward declaration of `PaymentItemType` to properly resolve imports.
50
+ namespace margelo::nitro::pay { enum class PaymentItemType; }
51
+ // Forward declaration of `GooglePayEnvironment` to properly resolve imports.
52
+ namespace margelo::nitro::pay { enum class GooglePayEnvironment; }
53
+
54
+ #include "PayServiceStatus.hpp"
55
+ #include "PaymentResult.hpp"
56
+ #include <NitroModules/Promise.hpp>
57
+ #include <string>
58
+ #include <optional>
59
+ #include "PaymentToken.hpp"
60
+ #include "PaymentMethod.hpp"
61
+ #include "PaymentNetwork.hpp"
62
+ #include "PaymentMethodType.hpp"
63
+ #include "PKSecureElementPass.hpp"
64
+ #include "PassActivationState.hpp"
65
+ #include "CNContact.hpp"
66
+ #include "CNContactType.hpp"
67
+ #include "CNLabeledPhoneNumber.hpp"
68
+ #include <vector>
69
+ #include "CNPhoneNumber.hpp"
70
+ #include "CNLabeledEmailAddress.hpp"
71
+ #include "CNLabeledPostalAddress.hpp"
72
+ #include "CNPostalAddress.hpp"
73
+ #include "PaymentRequest.hpp"
74
+ #include "PaymentItem.hpp"
75
+ #include "PaymentItemType.hpp"
76
+ #include "GooglePayEnvironment.hpp"
77
+
78
+ #include "NitroPay-Swift-Cxx-Umbrella.hpp"
79
+
80
+ namespace margelo::nitro::pay {
81
+
82
+ /**
83
+ * The C++ part of HybridPaymentHandlerSpec_cxx.swift.
84
+ *
85
+ * HybridPaymentHandlerSpecSwift (C++) accesses HybridPaymentHandlerSpec_cxx (Swift), and might
86
+ * contain some additional bridging code for C++ <> Swift interop.
87
+ *
88
+ * Since this obviously introduces an overhead, I hope at some point in
89
+ * the future, HybridPaymentHandlerSpec_cxx can directly inherit from the C++ class HybridPaymentHandlerSpec
90
+ * to simplify the whole structure and memory management.
91
+ */
92
+ class HybridPaymentHandlerSpecSwift: public virtual HybridPaymentHandlerSpec {
93
+ public:
94
+ // Constructor from a Swift instance
95
+ explicit HybridPaymentHandlerSpecSwift(const NitroPay::HybridPaymentHandlerSpec_cxx& swiftPart):
96
+ HybridObject(HybridPaymentHandlerSpec::TAG),
97
+ _swiftPart(swiftPart) { }
98
+
99
+ public:
100
+ // Get the Swift part
101
+ inline NitroPay::HybridPaymentHandlerSpec_cxx& getSwiftPart() noexcept {
102
+ return _swiftPart;
103
+ }
104
+
105
+ public:
106
+ inline size_t getExternalMemorySize() noexcept override {
107
+ return _swiftPart.getMemorySize();
108
+ }
109
+ void dispose() noexcept override {
110
+ _swiftPart.dispose();
111
+ }
112
+
113
+ public:
114
+ // Properties
115
+
116
+
117
+ public:
118
+ // Methods
119
+ inline PayServiceStatus payServiceStatus() override {
120
+ auto __result = _swiftPart.payServiceStatus();
121
+ if (__result.hasError()) [[unlikely]] {
122
+ std::rethrow_exception(__result.error());
123
+ }
124
+ auto __value = std::move(__result.value());
125
+ return __value;
126
+ }
127
+ inline std::shared_ptr<Promise<PaymentResult>> startPayment(const PaymentRequest& request) override {
128
+ auto __result = _swiftPart.startPayment(std::forward<decltype(request)>(request));
129
+ if (__result.hasError()) [[unlikely]] {
130
+ std::rethrow_exception(__result.error());
131
+ }
132
+ auto __value = std::move(__result.value());
133
+ return __value;
134
+ }
135
+ inline bool canMakePayments(const std::vector<std::string>& usingNetworks) override {
136
+ auto __result = _swiftPart.canMakePayments(usingNetworks);
137
+ if (__result.hasError()) [[unlikely]] {
138
+ std::rethrow_exception(__result.error());
139
+ }
140
+ auto __value = std::move(__result.value());
141
+ return __value;
142
+ }
143
+
144
+ private:
145
+ NitroPay::HybridPaymentHandlerSpec_cxx _swiftPart;
146
+ };
147
+
148
+ } // namespace margelo::nitro::pay
@@ -0,0 +1,106 @@
1
+ ///
2
+ /// HybridApplePayButtonComponent.mm
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2025 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #import "HybridApplePayButtonComponent.hpp"
9
+ #import <memory>
10
+ #import <react/renderer/componentregistry/ComponentDescriptorProvider.h>
11
+ #import <React/RCTViewComponentView.h>
12
+ #import <React/RCTComponentViewFactory.h>
13
+ #import <React/UIView+ComponentViewProtocol.h>
14
+ #import <NitroModules/NitroDefines.hpp>
15
+ #import <UIKit/UIKit.h>
16
+
17
+ #import "HybridApplePayButtonSpecSwift.hpp"
18
+ #import "NitroPay-Swift-Cxx-Umbrella.hpp"
19
+
20
+ using namespace facebook;
21
+ using namespace margelo::nitro::pay;
22
+ using namespace margelo::nitro::pay::views;
23
+
24
+ /**
25
+ * Represents the React Native View holder for the Nitro "ApplePayButton" HybridView.
26
+ */
27
+ @interface HybridApplePayButtonComponent: RCTViewComponentView
28
+ @end
29
+
30
+ @implementation HybridApplePayButtonComponent {
31
+ std::shared_ptr<HybridApplePayButtonSpecSwift> _hybridView;
32
+ }
33
+
34
+ + (void) load {
35
+ [super load];
36
+ [RCTComponentViewFactory.currentComponentViewFactory registerComponentViewClass:[HybridApplePayButtonComponent class]];
37
+ }
38
+
39
+ + (react::ComponentDescriptorProvider) componentDescriptorProvider {
40
+ return react::concreteComponentDescriptorProvider<HybridApplePayButtonComponentDescriptor>();
41
+ }
42
+
43
+ - (instancetype) init {
44
+ if (self = [super init]) {
45
+ std::shared_ptr<HybridApplePayButtonSpec> hybridView = NitroPay::NitroPayAutolinking::createApplePayButton();
46
+ _hybridView = std::dynamic_pointer_cast<HybridApplePayButtonSpecSwift>(hybridView);
47
+ [self updateView];
48
+ }
49
+ return self;
50
+ }
51
+
52
+ - (void) updateView {
53
+ // 1. Get Swift part
54
+ NitroPay::HybridApplePayButtonSpec_cxx& swiftPart = _hybridView->getSwiftPart();
55
+
56
+ // 2. Get UIView*
57
+ void* viewUnsafe = swiftPart.getView();
58
+ UIView* view = (__bridge_transfer UIView*) viewUnsafe;
59
+
60
+ // 3. Update RCTViewComponentView's [contentView]
61
+ [self setContentView:view];
62
+ }
63
+
64
+ - (void) updateProps:(const std::shared_ptr<const react::Props>&)props
65
+ oldProps:(const std::shared_ptr<const react::Props>&)oldProps {
66
+ // 1. Downcast props
67
+ const auto& newViewPropsConst = *std::static_pointer_cast<HybridApplePayButtonProps const>(props);
68
+ auto& newViewProps = const_cast<HybridApplePayButtonProps&>(newViewPropsConst);
69
+ NitroPay::HybridApplePayButtonSpec_cxx& swiftPart = _hybridView->getSwiftPart();
70
+
71
+ // 2. Update each prop individually
72
+ swiftPart.beforeUpdate();
73
+
74
+ // buttonType: enum
75
+ if (newViewProps.buttonType.isDirty) {
76
+ swiftPart.setButtonType(static_cast<int>(newViewProps.buttonType.value));
77
+ newViewProps.buttonType.isDirty = false;
78
+ }
79
+ // buttonStyle: enum
80
+ if (newViewProps.buttonStyle.isDirty) {
81
+ swiftPart.setButtonStyle(static_cast<int>(newViewProps.buttonStyle.value));
82
+ newViewProps.buttonStyle.isDirty = false;
83
+ }
84
+ // onPress: optional
85
+ if (newViewProps.onPress.isDirty) {
86
+ swiftPart.setOnPress(newViewProps.onPress.value);
87
+ newViewProps.onPress.isDirty = false;
88
+ }
89
+
90
+ swiftPart.afterUpdate();
91
+
92
+ // 3. Update hybridRef if it changed
93
+ if (newViewProps.hybridRef.isDirty) {
94
+ // hybridRef changed - call it with new this
95
+ const auto& maybeFunc = newViewProps.hybridRef.value;
96
+ if (maybeFunc.has_value()) {
97
+ maybeFunc.value()(_hybridView);
98
+ }
99
+ newViewProps.hybridRef.isDirty = false;
100
+ }
101
+
102
+ // 4. Continue in base class
103
+ [super updateProps:props oldProps:oldProps];
104
+ }
105
+
106
+ @end
@@ -0,0 +1,44 @@
1
+ ///
2
+ /// ApplePayButtonStyle.swift
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2025 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ /**
9
+ * Represents the JS union `ApplePayButtonStyle`, backed by a C++ enum.
10
+ */
11
+ public typealias ApplePayButtonStyle = margelo.nitro.pay.ApplePayButtonStyle
12
+
13
+ public extension ApplePayButtonStyle {
14
+ /**
15
+ * Get a ApplePayButtonStyle for the given String value, or
16
+ * return `nil` if the given value was invalid/unknown.
17
+ */
18
+ init?(fromString string: String) {
19
+ switch string {
20
+ case "white":
21
+ self = .white
22
+ case "whiteOutline":
23
+ self = .whiteoutline
24
+ case "black":
25
+ self = .black
26
+ default:
27
+ return nil
28
+ }
29
+ }
30
+
31
+ /**
32
+ * Get the String value this ApplePayButtonStyle represents.
33
+ */
34
+ var stringValue: String {
35
+ switch self {
36
+ case .white:
37
+ return "white"
38
+ case .whiteoutline:
39
+ return "whiteOutline"
40
+ case .black:
41
+ return "black"
42
+ }
43
+ }
44
+ }
@@ -0,0 +1,84 @@
1
+ ///
2
+ /// ApplePayButtonType.swift
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2025 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ /**
9
+ * Represents the JS union `ApplePayButtonType`, backed by a C++ enum.
10
+ */
11
+ public typealias ApplePayButtonType = margelo.nitro.pay.ApplePayButtonType
12
+
13
+ public extension ApplePayButtonType {
14
+ /**
15
+ * Get a ApplePayButtonType for the given String value, or
16
+ * return `nil` if the given value was invalid/unknown.
17
+ */
18
+ init?(fromString string: String) {
19
+ switch string {
20
+ case "buy":
21
+ self = .buy
22
+ case "setUp":
23
+ self = .setup
24
+ case "book":
25
+ self = .book
26
+ case "donate":
27
+ self = .donate
28
+ case "continue":
29
+ self = .continue
30
+ case "reload":
31
+ self = .reload
32
+ case "addMoney":
33
+ self = .addmoney
34
+ case "topUp":
35
+ self = .topup
36
+ case "order":
37
+ self = .order
38
+ case "rent":
39
+ self = .rent
40
+ case "support":
41
+ self = .support
42
+ case "contribute":
43
+ self = .contribute
44
+ case "tip":
45
+ self = .tip
46
+ default:
47
+ return nil
48
+ }
49
+ }
50
+
51
+ /**
52
+ * Get the String value this ApplePayButtonType represents.
53
+ */
54
+ var stringValue: String {
55
+ switch self {
56
+ case .buy:
57
+ return "buy"
58
+ case .setup:
59
+ return "setUp"
60
+ case .book:
61
+ return "book"
62
+ case .donate:
63
+ return "donate"
64
+ case .continue:
65
+ return "continue"
66
+ case .reload:
67
+ return "reload"
68
+ case .addmoney:
69
+ return "addMoney"
70
+ case .topup:
71
+ return "topUp"
72
+ case .order:
73
+ return "order"
74
+ case .rent:
75
+ return "rent"
76
+ case .support:
77
+ return "support"
78
+ case .contribute:
79
+ return "contribute"
80
+ case .tip:
81
+ return "tip"
82
+ }
83
+ }
84
+ }