react-native-hyperswitch-dev-sdk 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) hide show
  1. package/HyperswitchSdkReactNative.podspec +42 -0
  2. package/LICENSE +201 -0
  3. package/android/build.gradle +161 -0
  4. package/android/gradle.properties +5 -0
  5. package/android/hyperswitch_autolinking.gradle +378 -0
  6. package/android/proguard-rules.pro +72 -0
  7. package/android/src/legacy/java/com/facebook/react/viewmanagers/GooglePayButtonManagerDelegate.java +41 -0
  8. package/android/src/legacy/java/com/facebook/react/viewmanagers/GooglePayButtonManagerInterface.java +20 -0
  9. package/android/src/legacy/java/com/facebook/react/viewmanagers/NativePaymentWidgetManagerDelegate.java +38 -0
  10. package/android/src/legacy/java/com/facebook/react/viewmanagers/NativePaymentWidgetManagerInterface.java +21 -0
  11. package/android/src/legacy/java/com/hyperswitchsdkreactnative/NativeHyperswitchSdkNativeSpec.java +106 -0
  12. package/android/src/legacy/java/com/hyperswitchsdkreactnative/NativeHyperswitchSdkReactNativeSpec.java +77 -0
  13. package/android/src/legacy/java/com/hyperswitchsdkreactnative/NativePaymentWidgetNativeSpec.java +36 -0
  14. package/android/src/main/AndroidManifest.xml +15 -0
  15. package/android/src/main/assets/hyperswitch.bundle +1535 -0
  16. package/android/src/main/java/com/hyperswitchsdkreactnative/HyperswitchSdkReactNativePackage.kt +47 -0
  17. package/android/src/main/java/com/hyperswitchsdkreactnative/modules/NativePaymentWidgetModule.kt +173 -0
  18. package/android/src/main/java/com/hyperswitchsdkreactnative/modules/ReactNativeHyperswitchModule.kt +396 -0
  19. package/android/src/main/java/com/hyperswitchsdkreactnative/views/PaymentElementViewManager.kt +99 -0
  20. package/android/src/main/java/io/hyperswitch/HyperswitchReactPackageProvider.kt +19 -0
  21. package/android/src/main/java/io/hyperswitch/PaymentEventType.kt +18 -0
  22. package/android/src/main/java/io/hyperswitch/model/ElementConfiguration.kt +58 -0
  23. package/android/src/main/java/io/hyperswitch/paymentsession/ExitHeadlessCallBackManager.kt +47 -0
  24. package/android/src/main/java/io/hyperswitch/paymentsession/GetPaymentSessionCallBackManager.kt +23 -0
  25. package/android/src/main/java/io/hyperswitch/paymentsession/PaymentMethod.kt +167 -0
  26. package/android/src/main/java/io/hyperswitch/paymentsession/PaymentSessionHandler.kt +68 -0
  27. package/android/src/main/java/io/hyperswitch/paymentsession/PaymentSessionHandlerImpl.kt +179 -0
  28. package/android/src/main/java/io/hyperswitch/paymentsession/PaymentSessionReactLauncher.kt +226 -0
  29. package/android/src/main/java/io/hyperswitch/paymentsession/PaymentSheetCallbackManager.kt +40 -0
  30. package/android/src/main/java/io/hyperswitch/paymentsheet/PaymentResult.kt +63 -0
  31. package/android/src/main/java/io/hyperswitch/react/GooglePayButtonManager.kt +54 -0
  32. package/android/src/main/java/io/hyperswitch/react/HyperActivity.kt +73 -0
  33. package/android/src/main/java/io/hyperswitch/react/HyperEventEmitter.kt +144 -0
  34. package/android/src/main/java/io/hyperswitch/react/HyperFragment.kt +429 -0
  35. package/android/src/main/java/io/hyperswitch/react/HyperFragmentManager.kt +155 -0
  36. package/android/src/main/java/io/hyperswitch/react/HyperHeadlessModule.kt +43 -0
  37. package/android/src/main/java/io/hyperswitch/react/HyperModule.kt +405 -0
  38. package/android/src/main/java/io/hyperswitch/react/HyperPackage.kt +16 -0
  39. package/android/src/main/java/io/hyperswitch/react/ReactNativeController.kt +251 -0
  40. package/android/src/main/java/io/hyperswitch/utils/ConversionUtils.kt +256 -0
  41. package/android/src/main/java/io/hyperswitch/utils/StandardResult.kt +45 -0
  42. package/android/src/main/java/io/hyperswitch/view/GooglePayButtonView.kt +59 -0
  43. package/android/src/main/java/io/hyperswitch/view/PaymentWidgetView.kt +405 -0
  44. package/android/src/main/res/values/attrs.xml +6 -0
  45. package/android/src/main/res/values/strings.xml +5 -0
  46. package/android/src/main/res/values/theme.xml +16 -0
  47. package/ios/Modules/ReactNative/HyperswitchModule.swift +470 -0
  48. package/ios/Modules/ReactNative/HyperswitchSdkReactNative.h +5 -0
  49. package/ios/Modules/ReactNative/HyperswitchSdkReactNative.mm +121 -0
  50. package/ios/Modules/ReactNative/NativeHyperswitchModule.h +18 -0
  51. package/ios/Modules/ReactNative/NativeHyperswitchModule.mm +165 -0
  52. package/ios/Modules/ReactNative/NativeHyperswitchModuleImpl.swift +290 -0
  53. package/ios/Modules/ReactNative/NativePaymentElementModule.mm +129 -0
  54. package/ios/Views/Fabric/ApplePayView.h +14 -0
  55. package/ios/Views/Fabric/ApplePayView.mm +89 -0
  56. package/ios/Views/Fabric/NativePaymentElementView.h +21 -0
  57. package/ios/Views/Fabric/NativePaymentElementView.mm +200 -0
  58. package/ios/Views/Fabric/NativePaymentWidgetViewRegistry.h +37 -0
  59. package/ios/Views/Fabric/NativePaymentWidgetViewRegistry.m +45 -0
  60. package/ios/Views/Native/NativePaymentWidget.m +26 -0
  61. package/ios/Views/Native/NativePaymentWidget.swift +420 -0
  62. package/ios/hyperswitchSDK/Core/ApplePay/ApplePayHandler.swift +261 -0
  63. package/ios/hyperswitchSDK/Core/ApplePay/ApplePayViewManager.m +18 -0
  64. package/ios/hyperswitchSDK/Core/ApplePay/ApplePayViewManager.swift +126 -0
  65. package/ios/hyperswitchSDK/Core/DeviceDataCollection/HeadlessWebView.swift +144 -0
  66. package/ios/hyperswitchSDK/Core/HyperCVCWidget/CVCWidget.swift +136 -0
  67. package/ios/hyperswitchSDK/Core/HyperExpressCheckout/ExpressCheckoutLauncher.swift +116 -0
  68. package/ios/hyperswitchSDK/Core/HyperExpressCheckout/ExpressCheckoutWidget.swift +42 -0
  69. package/ios/hyperswitchSDK/Core/HyperPaymentCardTextField/PaymentCardTextField+SwiftUI.swift +67 -0
  70. package/ios/hyperswitchSDK/Core/HyperPaymentCardTextField/PaymentCardTextField.swift +44 -0
  71. package/ios/hyperswitchSDK/Core/HyperPaymentCardTextField/PaymentHandler.swift +59 -0
  72. package/ios/hyperswitchSDK/Core/HyperPaymentCardTextField/PaymentIntentParams.swift +31 -0
  73. package/ios/hyperswitchSDK/Core/HyperPaymentCardTextField/PaymentMethodParams.swift +25 -0
  74. package/ios/hyperswitchSDK/Core/HyperPaymentMethodManagement/PaymentManagementConfiguration.swift +213 -0
  75. package/ios/hyperswitchSDK/Core/HyperPaymentMethodManagement/PaymentMethodManagementWidget.swift +92 -0
  76. package/ios/hyperswitchSDK/Core/HyperPaymentSheet/PaymentSheet+Events.swift +36 -0
  77. package/ios/hyperswitchSDK/Core/HyperPaymentSheet/PaymentSheetView+SwiftUI.swift +49 -0
  78. package/ios/hyperswitchSDK/Core/HyperPaymentSheet/PaymentSheetView+UIKit.swift +49 -0
  79. package/ios/hyperswitchSDK/Core/HyperPaymentSheet/PaymentSheetView.swift +68 -0
  80. package/ios/hyperswitchSDK/Core/HyperPaymentWidget/PaymentWidget.swift +212 -0
  81. package/ios/hyperswitchSDK/Core/HyperSession/PaymentSession+UIKit.swift +228 -0
  82. package/ios/hyperswitchSDK/Core/HyperSession/PaymentSessionTypes.swift +174 -0
  83. package/ios/hyperswitchSDK/Core/NativeModule/HyperHeadless.m +15 -0
  84. package/ios/hyperswitchSDK/Core/NativeModule/HyperHeadless.swift +108 -0
  85. package/ios/hyperswitchSDK/Core/NativeModule/HyperModule.m +31 -0
  86. package/ios/hyperswitchSDK/Core/NativeModule/HyperModule.swift +343 -0
  87. package/ios/hyperswitchSDK/Core/NativeModule/OTAServices.swift +117 -0
  88. package/ios/hyperswitchSDK/Core/NativeModule/RNHeadlessManager.swift +47 -0
  89. package/ios/hyperswitchSDK/Core/NativeModule/RNResponseHandler.swift +12 -0
  90. package/ios/hyperswitchSDK/Core/NativeModule/RNViewManager.swift +55 -0
  91. package/ios/hyperswitchSDK/Core/NativeModule/WidgetAction.swift +30 -0
  92. package/ios/hyperswitchSDK/Core/NativeModule/WidgetResponseRegistry.swift +92 -0
  93. package/ios/hyperswitchSDK/Core/NativeModule/hyper-Bridging-Header.h +12 -0
  94. package/ios/hyperswitchSDK/Core/Resources/HyperOTA.plist +20 -0
  95. package/ios/hyperswitchSDK/Core/Resources/hyperswitch.bundle +1531 -0
  96. package/ios/hyperswitchSDK/CoreLite/ApplePayHandlerLite.swift +251 -0
  97. package/ios/hyperswitchSDK/CoreLite/PaymentSession+Lite.swift +25 -0
  98. package/ios/hyperswitchSDK/CoreLite/PaymentSheetView+Lite.swift +45 -0
  99. package/ios/hyperswitchSDK/CoreLite/SwiftUI+Lite.swift +48 -0
  100. package/ios/hyperswitchSDK/CoreLite/WebViewController.swift +278 -0
  101. package/ios/hyperswitchSDK/Shared/APIClient.swift +22 -0
  102. package/ios/hyperswitchSDK/Shared/Codable+UIKit.swift +75 -0
  103. package/ios/hyperswitchSDK/Shared/CustomEndpointConfiguration.swift +67 -0
  104. package/ios/hyperswitchSDK/Shared/DictionaryConverter.swift +104 -0
  105. package/ios/hyperswitchSDK/Shared/Environment.swift +24 -0
  106. package/ios/hyperswitchSDK/Shared/Extensions.swift +101 -0
  107. package/ios/hyperswitchSDK/Shared/Helper.swift +40 -0
  108. package/ios/hyperswitchSDK/Shared/HyperEvents/PaymentEventData.swift +125 -0
  109. package/ios/hyperswitchSDK/Shared/HyperEvents/PaymentEventSubscriptionBuilder.swift +45 -0
  110. package/ios/hyperswitchSDK/Shared/HyperEvents/PaymentEventType.swift +30 -0
  111. package/ios/hyperswitchSDK/Shared/HyperNetworking.swift +151 -0
  112. package/ios/hyperswitchSDK/Shared/HyperParams.swift +44 -0
  113. package/ios/hyperswitchSDK/Shared/HyperUIViewController.swift +27 -0
  114. package/ios/hyperswitchSDK/Shared/Hyperswitch.swift +20 -0
  115. package/ios/hyperswitchSDK/Shared/HyperswitchConfigurationSchema.swift +54 -0
  116. package/ios/hyperswitchSDK/Shared/HyperswitchEnvironment.swift +11 -0
  117. package/ios/hyperswitchSDK/Shared/NativeLogger/Debouncer.swift +37 -0
  118. package/ios/hyperswitchSDK/Shared/NativeLogger/LogBuilder.swift +113 -0
  119. package/ios/hyperswitchSDK/Shared/NativeLogger/LogFileManager.swift +76 -0
  120. package/ios/hyperswitchSDK/Shared/NativeLogger/LogManager.swift +113 -0
  121. package/ios/hyperswitchSDK/Shared/NativeLogger/LogPayload.swift +91 -0
  122. package/ios/hyperswitchSDK/Shared/PaymentMethodType.swift +15 -0
  123. package/ios/hyperswitchSDK/Shared/PaymentSession.swift +98 -0
  124. package/ios/hyperswitchSDK/Shared/PaymentSessionConfiguration.swift +14 -0
  125. package/ios/hyperswitchSDK/Shared/PaymentSheet.swift +33 -0
  126. package/ios/hyperswitchSDK/Shared/PaymentSheetAppearance+Codable.swift +182 -0
  127. package/ios/hyperswitchSDK/Shared/PaymentSheetAppearance.swift +238 -0
  128. package/ios/hyperswitchSDK/Shared/PaymentSheetConfiguration.swift +161 -0
  129. package/ios/hyperswitchSDK/Shared/SDKParams.swift +43 -0
  130. package/ios/hyperswitchSDK/Shared/SavedPaymentMethodsConfiguration.swift +20 -0
  131. package/ios/hyperswitchSDK/Shared/SwiftUIManager.swift +28 -0
  132. package/ios/hyperswitchSDK/Shared/Version.swift +12 -0
  133. package/lib/bs/JuspayTechReactNativeHyperswitch.cmi +0 -0
  134. package/lib/bs/JuspayTechReactNativeHyperswitch.cmj +0 -0
  135. package/lib/bs/JuspayTechReactNativeHyperswitch.cmt +0 -0
  136. package/lib/bs/JuspayTechReactNativeHyperswitch.mlmap +0 -0
  137. package/lib/bs/build.ninja +8 -0
  138. package/lib/bs/install.ninja +9 -0
  139. package/lib/bs/src/context/HyperProvider-JuspayTechReactNativeHyperswitch.cmt +0 -0
  140. package/lib/bs/src/context/WidgetRegistry-JuspayTechReactNativeHyperswitch.cmt +0 -0
  141. package/lib/bs/src/core/Hyper-JuspayTechReactNativeHyperswitch.cmt +0 -0
  142. package/lib/bs/src/core/HyperElements-JuspayTechReactNativeHyperswitch.cmt +0 -0
  143. package/lib/bs/src/hooks/usePaymentSession-JuspayTechReactNativeHyperswitch.cmt +0 -0
  144. package/lib/bs/src/hooks/useWidget-JuspayTechReactNativeHyperswitch.cmt +0 -0
  145. package/lib/bs/src/modules/NativeHyperswitchSdk-JuspayTechReactNativeHyperswitch.cmt +0 -0
  146. package/lib/bs/src/types/HyperTypes-JuspayTechReactNativeHyperswitch.cmt +0 -0
  147. package/lib/bs/src/types/NativeModuleTypes-JuspayTechReactNativeHyperswitch.cmt +0 -0
  148. package/lib/bs/src/types/PaymentSheetConfiguration-JuspayTechReactNativeHyperswitch.cmt +0 -0
  149. package/lib/bs/src/utils/AppearanceTransformer-JuspayTechReactNativeHyperswitch.cmt +0 -0
  150. package/lib/bs/src/utils/EventValidator-JuspayTechReactNativeHyperswitch.cmt +0 -0
  151. package/lib/bs/src/utils/NewArchUtils-JuspayTechReactNativeHyperswitch.cmt +0 -0
  152. package/lib/bs/src/utils/PaymentSheetEventManager-JuspayTechReactNativeHyperswitch.cmt +0 -0
  153. package/lib/bs/src/utils/ReactNativeUtils-JuspayTechReactNativeHyperswitch.cmt +0 -0
  154. package/lib/bs/src/utils/ResponseHandler-JuspayTechReactNativeHyperswitch.cmt +0 -0
  155. package/lib/bs/src/views/CVCElement-JuspayTechReactNativeHyperswitch.cmt +0 -0
  156. package/lib/bs/src/views/NativePaymentWidget-JuspayTechReactNativeHyperswitch.cmt +0 -0
  157. package/lib/bs/src/views/NativePaymentWidgetImpl-JuspayTechReactNativeHyperswitch.cmt +0 -0
  158. package/lib/bs/src/views/PaymentElement-JuspayTechReactNativeHyperswitch.cmt +0 -0
  159. package/lib/commonjs/index.bundle.js +2 -0
  160. package/lib/commonjs/index.bundle.js.map +1 -0
  161. package/lib/module/index.bundle.js +2 -0
  162. package/lib/module/index.bundle.js.map +1 -0
  163. package/lib/typescript/babel.config.d.ts +10 -0
  164. package/lib/typescript/babel.config.d.ts.map +1 -0
  165. package/lib/typescript/eslint.config.d.mts +3 -0
  166. package/lib/typescript/eslint.config.d.mts.map +1 -0
  167. package/lib/typescript/rollup.config.d.ts +23 -0
  168. package/lib/typescript/rollup.config.d.ts.map +1 -0
  169. package/lib/typescript/scripts/bootstrap.d.ts +2 -0
  170. package/lib/typescript/scripts/bootstrap.d.ts.map +1 -0
  171. package/lib/typescript/src/context/Elements.d.ts +7 -0
  172. package/lib/typescript/src/context/Elements.d.ts.map +1 -0
  173. package/lib/typescript/src/context/HyperElements.d.ts +23 -0
  174. package/lib/typescript/src/context/HyperElements.d.ts.map +1 -0
  175. package/lib/typescript/src/context/PaymentSession.d.ts +15 -0
  176. package/lib/typescript/src/context/PaymentSession.d.ts.map +1 -0
  177. package/lib/typescript/src/context/SavedPaymentMethods.d.ts +5 -0
  178. package/lib/typescript/src/context/SavedPaymentMethods.d.ts.map +1 -0
  179. package/lib/typescript/src/context/WidgetRegistry.d.ts +8 -0
  180. package/lib/typescript/src/context/WidgetRegistry.d.ts.map +1 -0
  181. package/lib/typescript/src/context/hooks.d.ts +5 -0
  182. package/lib/typescript/src/context/hooks.d.ts.map +1 -0
  183. package/lib/typescript/src/index.d.ts +10 -0
  184. package/lib/typescript/src/index.d.ts.map +1 -0
  185. package/lib/typescript/src/modules/NativeHyperswitchSdk.d.ts +61 -0
  186. package/lib/typescript/src/modules/NativeHyperswitchSdk.d.ts.map +1 -0
  187. package/lib/typescript/src/specs/ApplePayViewNativeComponent.d.ts +10 -0
  188. package/lib/typescript/src/specs/ApplePayViewNativeComponent.d.ts.map +1 -0
  189. package/lib/typescript/src/specs/NativeHyperHeadless.d.ts +14 -0
  190. package/lib/typescript/src/specs/NativeHyperHeadless.d.ts.map +1 -0
  191. package/lib/typescript/src/specs/NativeHyperswitchModule.d.ts +32 -0
  192. package/lib/typescript/src/specs/NativeHyperswitchModule.d.ts.map +1 -0
  193. package/lib/typescript/src/specs/NativeHyperswitchSdkNative.d.ts +33 -0
  194. package/lib/typescript/src/specs/NativeHyperswitchSdkNative.d.ts.map +1 -0
  195. package/lib/typescript/src/specs/NativePaymentElementModule.d.ts +9 -0
  196. package/lib/typescript/src/specs/NativePaymentElementModule.d.ts.map +1 -0
  197. package/lib/typescript/src/specs/PaymentElementNativeComponent.d.ts +19 -0
  198. package/lib/typescript/src/specs/PaymentElementNativeComponent.d.ts.map +1 -0
  199. package/lib/typescript/src/specs/utils.d.ts +15 -0
  200. package/lib/typescript/src/specs/utils.d.ts.map +1 -0
  201. package/lib/typescript/src/types/NativeModuleTypes.d.ts +67 -0
  202. package/lib/typescript/src/types/NativeModuleTypes.d.ts.map +1 -0
  203. package/lib/typescript/src/types/PaymentSheetConfiguration.d.ts +255 -0
  204. package/lib/typescript/src/types/PaymentSheetConfiguration.d.ts.map +1 -0
  205. package/lib/typescript/src/types/definitions.d.ts +85 -0
  206. package/lib/typescript/src/types/definitions.d.ts.map +1 -0
  207. package/lib/typescript/src/types/elements/index.d.ts +23 -0
  208. package/lib/typescript/src/types/elements/index.d.ts.map +1 -0
  209. package/lib/typescript/src/types/paymentresult/index.d.ts +5 -0
  210. package/lib/typescript/src/types/paymentresult/index.d.ts.map +1 -0
  211. package/lib/typescript/src/types/savedPaymentMethods/index.d.ts +69 -0
  212. package/lib/typescript/src/types/savedPaymentMethods/index.d.ts.map +1 -0
  213. package/lib/typescript/src/utils/EventValidator.d.ts +9 -0
  214. package/lib/typescript/src/utils/EventValidator.d.ts.map +1 -0
  215. package/lib/typescript/src/utils/InitializationState.d.ts +13 -0
  216. package/lib/typescript/src/utils/InitializationState.d.ts.map +1 -0
  217. package/lib/typescript/src/utils/LaunchOptions.d.ts +7 -0
  218. package/lib/typescript/src/utils/LaunchOptions.d.ts.map +1 -0
  219. package/lib/typescript/src/utils/NewArchUtils.d.ts +7 -0
  220. package/lib/typescript/src/utils/NewArchUtils.d.ts.map +1 -0
  221. package/lib/typescript/src/utils/ReactNativeUtils.d.ts +3 -0
  222. package/lib/typescript/src/utils/ReactNativeUtils.d.ts.map +1 -0
  223. package/lib/typescript/src/views/CVCElement.d.ts +15 -0
  224. package/lib/typescript/src/views/CVCElement.d.ts.map +1 -0
  225. package/lib/typescript/src/views/NativePaymentWidget.d.ts +3 -0
  226. package/lib/typescript/src/views/NativePaymentWidget.d.ts.map +1 -0
  227. package/lib/typescript/src/views/NativePaymentWidgetImpl.d.ts +5 -0
  228. package/lib/typescript/src/views/NativePaymentWidgetImpl.d.ts.map +1 -0
  229. package/lib/typescript/src/views/PaymentElement.d.ts +18 -0
  230. package/lib/typescript/src/views/PaymentElement.d.ts.map +1 -0
  231. package/package.json +184 -0
  232. package/src/context/Elements.ts +80 -0
  233. package/src/context/HyperElements.tsx +81 -0
  234. package/src/context/PaymentSession.ts +121 -0
  235. package/src/context/SavedPaymentMethods.ts +80 -0
  236. package/src/context/WidgetRegistry.ts +74 -0
  237. package/src/context/hooks.ts +79 -0
  238. package/src/index.ts +53 -0
  239. package/src/modules/NativeHyperswitchSdk.ts +155 -0
  240. package/src/specs/ApplePayViewNativeComponent.ts +11 -0
  241. package/src/specs/NativeHyperHeadless.ts +22 -0
  242. package/src/specs/NativeHyperswitchModule.ts +51 -0
  243. package/src/specs/NativeHyperswitchSdkNative.ts +62 -0
  244. package/src/specs/NativePaymentElementModule.ts +25 -0
  245. package/src/specs/PaymentElementNativeComponent.ts +21 -0
  246. package/src/specs/utils.ts +15 -0
  247. package/src/types/NativeModuleTypes.ts +73 -0
  248. package/src/types/PaymentSheetConfiguration.ts +360 -0
  249. package/src/types/definitions.ts +109 -0
  250. package/src/types/elements/index.ts +33 -0
  251. package/src/types/paymentresult/index.ts +4 -0
  252. package/src/types/savedPaymentMethods/index.ts +74 -0
  253. package/src/utils/EventValidator.ts +39 -0
  254. package/src/utils/InitializationState.ts +28 -0
  255. package/src/utils/LaunchOptions.ts +41 -0
  256. package/src/utils/NewArchUtils.ts +18 -0
  257. package/src/utils/ReactNativeUtils.ts +13 -0
  258. package/src/views/CVCElement.tsx +122 -0
  259. package/src/views/NativePaymentWidget.ts +2 -0
  260. package/src/views/NativePaymentWidgetImpl.ts +16 -0
  261. package/src/views/PaymentElement.tsx +189 -0
  262. package/tsconfig.build.json +21 -0
@@ -0,0 +1,256 @@
1
+ package io.hyperswitch.utils
2
+
3
+ import com.facebook.react.bridge.ReadableArray
4
+ import com.facebook.react.bridge.ReadableMap
5
+ import com.facebook.react.bridge.ReadableType
6
+ import com.facebook.react.bridge.WritableArray
7
+ import com.facebook.react.bridge.WritableMap
8
+ import com.facebook.react.bridge.WritableNativeArray
9
+ import com.facebook.react.bridge.WritableNativeMap
10
+ import org.json.JSONArray
11
+ import org.json.JSONException
12
+ import org.json.JSONObject
13
+
14
+ object ConversionUtils {
15
+
16
+ @JvmStatic
17
+ @Throws(JSONException::class)
18
+ fun convertJsonToMap(jsonObject: JSONObject): WritableMap {
19
+ val map = WritableNativeMap()
20
+
21
+ val iterator = jsonObject.keys()
22
+ while (iterator.hasNext()) {
23
+ val key = iterator.next()
24
+ val value = jsonObject.get(key)
25
+ if (value == null || value === JSONObject.NULL) {
26
+ map.putNull(key)
27
+ continue
28
+ }
29
+ when (value) {
30
+ is JSONObject -> map.putMap(key, convertJsonToMap(value))
31
+ is JSONArray -> map.putArray(key, convertJsonToArray(value))
32
+ is Boolean -> map.putBoolean(key, value)
33
+ is Int -> map.putInt(key, value)
34
+ is Long -> map.putDouble(key, value.toDouble())
35
+ is Float -> map.putDouble(key, value.toDouble())
36
+ is Double -> map.putDouble(key, value)
37
+ is String -> map.putString(key, value)
38
+ else -> map.putString(key, value.toString())
39
+ }
40
+ }
41
+ return map
42
+ }
43
+
44
+ @JvmStatic
45
+ @Throws(JSONException::class)
46
+ fun convertJsonToArray(jsonArray: JSONArray): WritableArray {
47
+ val array = WritableNativeArray()
48
+
49
+ for (i in 0 until jsonArray.length()) {
50
+ val value = jsonArray.get(i)
51
+ if (value == null || value === JSONObject.NULL) {
52
+ array.pushNull()
53
+ continue
54
+ }
55
+ when (value) {
56
+ is JSONObject -> array.pushMap(convertJsonToMap(value))
57
+ is JSONArray -> array.pushArray(convertJsonToArray(value))
58
+ is Boolean -> array.pushBoolean(value)
59
+ is Int -> array.pushInt(value)
60
+ is Long -> array.pushDouble(value.toDouble())
61
+ is Float -> array.pushDouble(value.toDouble())
62
+ is Double -> array.pushDouble(value)
63
+ is String -> array.pushString(value)
64
+ else -> array.pushString(value.toString())
65
+ }
66
+ }
67
+ return array
68
+ }
69
+
70
+ @JvmStatic
71
+ @Throws(JSONException::class)
72
+ fun convertMapToJson(readableMap: ReadableMap?): JSONObject {
73
+ if (readableMap == null) return JSONObject()
74
+ val obj = JSONObject()
75
+ val iterator = readableMap.keySetIterator()
76
+ while (iterator.hasNextKey()) {
77
+ val key = iterator.nextKey()
78
+ when (readableMap.getType(key)) {
79
+ ReadableType.Null -> obj.put(key, JSONObject.NULL)
80
+ ReadableType.Boolean -> obj.put(key, readableMap.getBoolean(key))
81
+ ReadableType.Number -> obj.put(key, readableMap.getDouble(key))
82
+ ReadableType.String -> obj.put(key, readableMap.getString(key))
83
+ ReadableType.Map -> obj.put(key, convertMapToJson(readableMap.getMap(key)))
84
+ ReadableType.Array -> obj.put(key, convertArrayToJson(readableMap.getArray(key)))
85
+ }
86
+ }
87
+ return obj
88
+ }
89
+
90
+ /**
91
+ * Recursively convert a [ReadableMap] into a plain [Map]<String, Any>.
92
+ * Nested maps and arrays are converted recursively so that callers never
93
+ * receive raw [org.json.JSONObject] / [org.json.JSONArray] values.
94
+ */
95
+ @JvmStatic
96
+ fun readableMapToMap(readableMap: ReadableMap?): Map<String, Any> {
97
+ if (readableMap == null) return emptyMap()
98
+ val result = mutableMapOf<String, Any>()
99
+ val iterator = readableMap.keySetIterator()
100
+ while (iterator.hasNextKey()) {
101
+ val key = iterator.nextKey()
102
+ when (readableMap.getType(key)) {
103
+ ReadableType.Null -> {}
104
+ ReadableType.Boolean -> result[key] = readableMap.getBoolean(key)
105
+ ReadableType.Number -> result[key] = readableMap.getDouble(key)
106
+ ReadableType.String -> result[key] = readableMap.getString(key) ?: ""
107
+ ReadableType.Map -> result[key] = readableMapToMap(readableMap.getMap(key))
108
+ ReadableType.Array -> result[key] = readableArrayToList(readableMap.getArray(key))
109
+ }
110
+ }
111
+ return result
112
+ }
113
+
114
+ @JvmStatic
115
+ fun readableArrayToList(readableArray: ReadableArray?): List<Any> {
116
+ if (readableArray == null) return emptyList()
117
+ val result = mutableListOf<Any>()
118
+ for (i in 0 until readableArray.size()) {
119
+ when (readableArray.getType(i)) {
120
+ ReadableType.Null -> {}
121
+ ReadableType.Boolean -> result.add(readableArray.getBoolean(i))
122
+ ReadableType.Number -> result.add(readableArray.getDouble(i))
123
+ ReadableType.String -> result.add(readableArray.getString(i) ?: "")
124
+ ReadableType.Map -> result.add(readableMapToMap(readableArray.getMap(i)))
125
+ ReadableType.Array -> result.add(readableArrayToList(readableArray.getArray(i)))
126
+ }
127
+ }
128
+ return result
129
+ }
130
+
131
+ /**
132
+ * Recursively convert a plain [Map] into a [WritableMap] (ReadableMap).
133
+ * Mirrors the inverse of [readableMapToMap].
134
+ */
135
+ @JvmStatic
136
+ fun convertMapToReadableMap(map: Map<*, *>): WritableMap {
137
+ val writableMap = WritableNativeMap()
138
+ for ((key, value) in map) {
139
+ val k = key?.toString() ?: continue
140
+ when (value) {
141
+ null -> writableMap.putNull(k)
142
+ is Boolean -> writableMap.putBoolean(k, value)
143
+ is Int -> writableMap.putInt(k, value)
144
+ is Long -> writableMap.putDouble(k, value.toDouble())
145
+ is Float -> writableMap.putDouble(k, value.toDouble())
146
+ is Double -> writableMap.putDouble(k, value)
147
+ is String -> writableMap.putString(k, value)
148
+ is Map<*, *> -> writableMap.putMap(k, convertMapToReadableMap(value))
149
+ is List<*> -> writableMap.putArray(k, convertListToReadableArray(value))
150
+ else -> writableMap.putString(k, value.toString())
151
+ }
152
+ }
153
+ return writableMap
154
+ }
155
+
156
+ /**
157
+ * Recursively convert a plain [List] into a [WritableArray] (ReadableArray).
158
+ */
159
+ @JvmStatic
160
+ fun convertListToReadableArray(list: List<*>): WritableArray {
161
+ val writableArray = WritableNativeArray()
162
+ for (value in list) {
163
+ when (value) {
164
+ null -> writableArray.pushNull()
165
+ is Boolean -> writableArray.pushBoolean(value)
166
+ is Int -> writableArray.pushInt(value)
167
+ is Long -> writableArray.pushDouble(value.toDouble())
168
+ is Float -> writableArray.pushDouble(value.toDouble())
169
+ is Double -> writableArray.pushDouble(value)
170
+ is String -> writableArray.pushString(value)
171
+ is Map<*, *> -> writableArray.pushMap(convertMapToReadableMap(value))
172
+ is List<*> -> writableArray.pushArray(convertListToReadableArray(value))
173
+ else -> writableArray.pushString(value.toString())
174
+ }
175
+ }
176
+ return writableArray
177
+ }
178
+
179
+ @JvmStatic
180
+ @Throws(JSONException::class)
181
+ fun convertArrayToJson(readableArray: ReadableArray?): JSONArray {
182
+ if (readableArray == null) return JSONArray()
183
+ val array = JSONArray()
184
+ for (i in 0 until readableArray.size()) {
185
+ when (readableArray.getType(i)) {
186
+ ReadableType.Null -> {}
187
+ ReadableType.Boolean -> array.put(readableArray.getBoolean(i))
188
+ ReadableType.Number -> array.put(readableArray.getDouble(i))
189
+ ReadableType.String -> array.put(readableArray.getString(i))
190
+ ReadableType.Map -> array.put(convertMapToJson(readableArray.getMap(i)))
191
+ ReadableType.Array -> array.put(convertArrayToJson(readableArray.getArray(i)))
192
+ }
193
+ }
194
+ return array
195
+ }
196
+
197
+ @JvmStatic
198
+ @Throws(JSONException::class)
199
+ fun convertMapToJson(map: Map<*, *>?): JSONObject {
200
+ if (map == null) return JSONObject()
201
+
202
+ val jsonObject = JSONObject()
203
+
204
+ for ((key, value) in map) {
205
+ val jsonKey = key?.toString() ?: continue
206
+ jsonObject.put(jsonKey, convertValueToJson(value))
207
+ }
208
+
209
+ return jsonObject
210
+ }
211
+
212
+ @JvmStatic
213
+ @Throws(JSONException::class)
214
+ fun convertListToJson(list: List<*>?): JSONArray {
215
+ if (list == null) return JSONArray()
216
+
217
+ val jsonArray = JSONArray()
218
+
219
+ for (value in list) {
220
+ jsonArray.put(convertValueToJson(value))
221
+ }
222
+
223
+ return jsonArray
224
+ }
225
+
226
+ @JvmStatic
227
+ @Throws(JSONException::class)
228
+ private fun convertValueToJson(value: Any?): Any {
229
+ return when (value) {
230
+ null -> JSONObject.NULL
231
+
232
+ is JSONObject,
233
+ is JSONArray,
234
+ is Boolean,
235
+ is String,
236
+ is Int,
237
+ is Long,
238
+ is Float,
239
+ is Double,
240
+ is Short,
241
+ is Byte -> value
242
+
243
+ is Map<*, *> -> convertMapToJson(value)
244
+ is List<*> -> convertListToJson(value)
245
+ is Array<*> -> convertListToJson(value.toList())
246
+
247
+ is IntArray -> JSONArray(value.toList())
248
+ is LongArray -> JSONArray(value.toList())
249
+ is DoubleArray -> JSONArray(value.toList())
250
+ is FloatArray -> JSONArray(value.toList())
251
+ is BooleanArray -> JSONArray(value.toList())
252
+
253
+ else -> value.toString()
254
+ }
255
+ }
256
+ }
@@ -0,0 +1,45 @@
1
+ package io.hyperswitch.utils
2
+
3
+ import org.json.JSONObject
4
+ sealed class StandardResult {
5
+
6
+ abstract val code: String?
7
+ abstract val message: String?
8
+ abstract val status: String
9
+ abstract val error: Throwable?
10
+
11
+ data class Success(
12
+ override val code: String? = null,
13
+ override val message: String? = null
14
+ ) : StandardResult() {
15
+ override val status: String = "success"
16
+ override val error: Throwable? = null
17
+ }
18
+
19
+ data class Failed(
20
+ override val code: String? = null,
21
+ override val message: String? = null,
22
+ override val error: Throwable? = null
23
+ ) : StandardResult() {
24
+ override val status: String = "failed"
25
+ }
26
+
27
+ data class Cancelled(
28
+ override val code: String? = null,
29
+ override val message: String? = "Payment cancelled"
30
+ ) : StandardResult() {
31
+ override val status: String = "cancelled"
32
+ override val error: Throwable? = null
33
+ }
34
+
35
+ fun toJSON(): JSONObject {
36
+ return JSONObject().apply {
37
+ put("code", code ?: JSONObject.NULL)
38
+ put("message", message ?: error?.message ?: JSONObject.NULL)
39
+ put("status", status)
40
+ put("error", error?.message ?: JSONObject.NULL)
41
+ }
42
+ }
43
+
44
+ fun toJSONString(): String = toJSON().toString()
45
+ }
@@ -0,0 +1,59 @@
1
+ package io.hyperswitch.view
2
+
3
+ import android.util.Log
4
+ import android.view.View
5
+ import android.widget.FrameLayout
6
+ import com.facebook.react.uimanager.PixelUtil
7
+ import com.facebook.react.uimanager.ThemedReactContext
8
+ import com.google.android.gms.wallet.button.ButtonConstants
9
+ import com.google.android.gms.wallet.button.ButtonOptions
10
+ import com.google.android.gms.wallet.button.PayButton
11
+
12
+ class GooglePayButtonView(private val context: ThemedReactContext) : FrameLayout(context) {
13
+
14
+ lateinit var allowedPaymentMethods: String
15
+ var type = ButtonConstants.ButtonType.PLAIN
16
+ var theme = ButtonConstants.ButtonTheme.DARK
17
+ var cornerRadius = 10
18
+ private var button: PayButton? = null
19
+
20
+ fun addButton() {
21
+ if (button != null) {
22
+ removeView(button)
23
+ }
24
+ button = initializeGooglePayButton()
25
+ addView(button)
26
+ viewTreeObserver.addOnGlobalLayoutListener { requestLayout() }
27
+ }
28
+
29
+ private fun initializeGooglePayButton(): PayButton {
30
+ val googlePayButton = PayButton(context)
31
+
32
+ val options = ButtonOptions.newBuilder()
33
+ .setAllowedPaymentMethods(allowedPaymentMethods)
34
+ .setButtonType(type)
35
+ .setButtonTheme(theme)
36
+ .setCornerRadius(PixelUtil.toPixelFromDIP(this.cornerRadius.toDouble()).toInt())
37
+ googlePayButton.initialize(options.build())
38
+ googlePayButton.setOnClickListener { _ ->
39
+ // Call the Javascript TouchableOpacity parent where the onClick handler is set
40
+ (this.parent as? View)?.performClick() ?: run {
41
+ Log.e("GooglePayReactNative", "Unable to find parent of GooglePayButtonView.")
42
+ }
43
+ }
44
+ return googlePayButton
45
+ }
46
+
47
+ override fun requestLayout() {
48
+ super.requestLayout()
49
+ post(mLayoutRunnable)
50
+ }
51
+
52
+ private val mLayoutRunnable = Runnable {
53
+ measure(
54
+ MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
55
+ MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)
56
+ )
57
+ layout(left, top, right, bottom)
58
+ }
59
+ }