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.
- package/HyperswitchSdkReactNative.podspec +42 -0
- package/LICENSE +201 -0
- package/android/build.gradle +161 -0
- package/android/gradle.properties +5 -0
- package/android/hyperswitch_autolinking.gradle +378 -0
- package/android/proguard-rules.pro +72 -0
- package/android/src/legacy/java/com/facebook/react/viewmanagers/GooglePayButtonManagerDelegate.java +41 -0
- package/android/src/legacy/java/com/facebook/react/viewmanagers/GooglePayButtonManagerInterface.java +20 -0
- package/android/src/legacy/java/com/facebook/react/viewmanagers/NativePaymentWidgetManagerDelegate.java +38 -0
- package/android/src/legacy/java/com/facebook/react/viewmanagers/NativePaymentWidgetManagerInterface.java +21 -0
- package/android/src/legacy/java/com/hyperswitchsdkreactnative/NativeHyperswitchSdkNativeSpec.java +106 -0
- package/android/src/legacy/java/com/hyperswitchsdkreactnative/NativeHyperswitchSdkReactNativeSpec.java +77 -0
- package/android/src/legacy/java/com/hyperswitchsdkreactnative/NativePaymentWidgetNativeSpec.java +36 -0
- package/android/src/main/AndroidManifest.xml +15 -0
- package/android/src/main/assets/hyperswitch.bundle +1535 -0
- package/android/src/main/java/com/hyperswitchsdkreactnative/HyperswitchSdkReactNativePackage.kt +47 -0
- package/android/src/main/java/com/hyperswitchsdkreactnative/modules/NativePaymentWidgetModule.kt +173 -0
- package/android/src/main/java/com/hyperswitchsdkreactnative/modules/ReactNativeHyperswitchModule.kt +396 -0
- package/android/src/main/java/com/hyperswitchsdkreactnative/views/PaymentElementViewManager.kt +99 -0
- package/android/src/main/java/io/hyperswitch/HyperswitchReactPackageProvider.kt +19 -0
- package/android/src/main/java/io/hyperswitch/PaymentEventType.kt +18 -0
- package/android/src/main/java/io/hyperswitch/model/ElementConfiguration.kt +58 -0
- package/android/src/main/java/io/hyperswitch/paymentsession/ExitHeadlessCallBackManager.kt +47 -0
- package/android/src/main/java/io/hyperswitch/paymentsession/GetPaymentSessionCallBackManager.kt +23 -0
- package/android/src/main/java/io/hyperswitch/paymentsession/PaymentMethod.kt +167 -0
- package/android/src/main/java/io/hyperswitch/paymentsession/PaymentSessionHandler.kt +68 -0
- package/android/src/main/java/io/hyperswitch/paymentsession/PaymentSessionHandlerImpl.kt +179 -0
- package/android/src/main/java/io/hyperswitch/paymentsession/PaymentSessionReactLauncher.kt +226 -0
- package/android/src/main/java/io/hyperswitch/paymentsession/PaymentSheetCallbackManager.kt +40 -0
- package/android/src/main/java/io/hyperswitch/paymentsheet/PaymentResult.kt +63 -0
- package/android/src/main/java/io/hyperswitch/react/GooglePayButtonManager.kt +54 -0
- package/android/src/main/java/io/hyperswitch/react/HyperActivity.kt +73 -0
- package/android/src/main/java/io/hyperswitch/react/HyperEventEmitter.kt +144 -0
- package/android/src/main/java/io/hyperswitch/react/HyperFragment.kt +429 -0
- package/android/src/main/java/io/hyperswitch/react/HyperFragmentManager.kt +155 -0
- package/android/src/main/java/io/hyperswitch/react/HyperHeadlessModule.kt +43 -0
- package/android/src/main/java/io/hyperswitch/react/HyperModule.kt +405 -0
- package/android/src/main/java/io/hyperswitch/react/HyperPackage.kt +16 -0
- package/android/src/main/java/io/hyperswitch/react/ReactNativeController.kt +251 -0
- package/android/src/main/java/io/hyperswitch/utils/ConversionUtils.kt +256 -0
- package/android/src/main/java/io/hyperswitch/utils/StandardResult.kt +45 -0
- package/android/src/main/java/io/hyperswitch/view/GooglePayButtonView.kt +59 -0
- package/android/src/main/java/io/hyperswitch/view/PaymentWidgetView.kt +405 -0
- package/android/src/main/res/values/attrs.xml +6 -0
- package/android/src/main/res/values/strings.xml +5 -0
- package/android/src/main/res/values/theme.xml +16 -0
- package/ios/Modules/ReactNative/HyperswitchModule.swift +470 -0
- package/ios/Modules/ReactNative/HyperswitchSdkReactNative.h +5 -0
- package/ios/Modules/ReactNative/HyperswitchSdkReactNative.mm +121 -0
- package/ios/Modules/ReactNative/NativeHyperswitchModule.h +18 -0
- package/ios/Modules/ReactNative/NativeHyperswitchModule.mm +165 -0
- package/ios/Modules/ReactNative/NativeHyperswitchModuleImpl.swift +290 -0
- package/ios/Modules/ReactNative/NativePaymentElementModule.mm +129 -0
- package/ios/Views/Fabric/ApplePayView.h +14 -0
- package/ios/Views/Fabric/ApplePayView.mm +89 -0
- package/ios/Views/Fabric/NativePaymentElementView.h +21 -0
- package/ios/Views/Fabric/NativePaymentElementView.mm +200 -0
- package/ios/Views/Fabric/NativePaymentWidgetViewRegistry.h +37 -0
- package/ios/Views/Fabric/NativePaymentWidgetViewRegistry.m +45 -0
- package/ios/Views/Native/NativePaymentWidget.m +26 -0
- package/ios/Views/Native/NativePaymentWidget.swift +420 -0
- package/ios/hyperswitchSDK/Core/ApplePay/ApplePayHandler.swift +261 -0
- package/ios/hyperswitchSDK/Core/ApplePay/ApplePayViewManager.m +18 -0
- package/ios/hyperswitchSDK/Core/ApplePay/ApplePayViewManager.swift +126 -0
- package/ios/hyperswitchSDK/Core/DeviceDataCollection/HeadlessWebView.swift +144 -0
- package/ios/hyperswitchSDK/Core/HyperCVCWidget/CVCWidget.swift +136 -0
- package/ios/hyperswitchSDK/Core/HyperExpressCheckout/ExpressCheckoutLauncher.swift +116 -0
- package/ios/hyperswitchSDK/Core/HyperExpressCheckout/ExpressCheckoutWidget.swift +42 -0
- package/ios/hyperswitchSDK/Core/HyperPaymentCardTextField/PaymentCardTextField+SwiftUI.swift +67 -0
- package/ios/hyperswitchSDK/Core/HyperPaymentCardTextField/PaymentCardTextField.swift +44 -0
- package/ios/hyperswitchSDK/Core/HyperPaymentCardTextField/PaymentHandler.swift +59 -0
- package/ios/hyperswitchSDK/Core/HyperPaymentCardTextField/PaymentIntentParams.swift +31 -0
- package/ios/hyperswitchSDK/Core/HyperPaymentCardTextField/PaymentMethodParams.swift +25 -0
- package/ios/hyperswitchSDK/Core/HyperPaymentMethodManagement/PaymentManagementConfiguration.swift +213 -0
- package/ios/hyperswitchSDK/Core/HyperPaymentMethodManagement/PaymentMethodManagementWidget.swift +92 -0
- package/ios/hyperswitchSDK/Core/HyperPaymentSheet/PaymentSheet+Events.swift +36 -0
- package/ios/hyperswitchSDK/Core/HyperPaymentSheet/PaymentSheetView+SwiftUI.swift +49 -0
- package/ios/hyperswitchSDK/Core/HyperPaymentSheet/PaymentSheetView+UIKit.swift +49 -0
- package/ios/hyperswitchSDK/Core/HyperPaymentSheet/PaymentSheetView.swift +68 -0
- package/ios/hyperswitchSDK/Core/HyperPaymentWidget/PaymentWidget.swift +212 -0
- package/ios/hyperswitchSDK/Core/HyperSession/PaymentSession+UIKit.swift +228 -0
- package/ios/hyperswitchSDK/Core/HyperSession/PaymentSessionTypes.swift +174 -0
- package/ios/hyperswitchSDK/Core/NativeModule/HyperHeadless.m +15 -0
- package/ios/hyperswitchSDK/Core/NativeModule/HyperHeadless.swift +108 -0
- package/ios/hyperswitchSDK/Core/NativeModule/HyperModule.m +31 -0
- package/ios/hyperswitchSDK/Core/NativeModule/HyperModule.swift +343 -0
- package/ios/hyperswitchSDK/Core/NativeModule/OTAServices.swift +117 -0
- package/ios/hyperswitchSDK/Core/NativeModule/RNHeadlessManager.swift +47 -0
- package/ios/hyperswitchSDK/Core/NativeModule/RNResponseHandler.swift +12 -0
- package/ios/hyperswitchSDK/Core/NativeModule/RNViewManager.swift +55 -0
- package/ios/hyperswitchSDK/Core/NativeModule/WidgetAction.swift +30 -0
- package/ios/hyperswitchSDK/Core/NativeModule/WidgetResponseRegistry.swift +92 -0
- package/ios/hyperswitchSDK/Core/NativeModule/hyper-Bridging-Header.h +12 -0
- package/ios/hyperswitchSDK/Core/Resources/HyperOTA.plist +20 -0
- package/ios/hyperswitchSDK/Core/Resources/hyperswitch.bundle +1531 -0
- package/ios/hyperswitchSDK/CoreLite/ApplePayHandlerLite.swift +251 -0
- package/ios/hyperswitchSDK/CoreLite/PaymentSession+Lite.swift +25 -0
- package/ios/hyperswitchSDK/CoreLite/PaymentSheetView+Lite.swift +45 -0
- package/ios/hyperswitchSDK/CoreLite/SwiftUI+Lite.swift +48 -0
- package/ios/hyperswitchSDK/CoreLite/WebViewController.swift +278 -0
- package/ios/hyperswitchSDK/Shared/APIClient.swift +22 -0
- package/ios/hyperswitchSDK/Shared/Codable+UIKit.swift +75 -0
- package/ios/hyperswitchSDK/Shared/CustomEndpointConfiguration.swift +67 -0
- package/ios/hyperswitchSDK/Shared/DictionaryConverter.swift +104 -0
- package/ios/hyperswitchSDK/Shared/Environment.swift +24 -0
- package/ios/hyperswitchSDK/Shared/Extensions.swift +101 -0
- package/ios/hyperswitchSDK/Shared/Helper.swift +40 -0
- package/ios/hyperswitchSDK/Shared/HyperEvents/PaymentEventData.swift +125 -0
- package/ios/hyperswitchSDK/Shared/HyperEvents/PaymentEventSubscriptionBuilder.swift +45 -0
- package/ios/hyperswitchSDK/Shared/HyperEvents/PaymentEventType.swift +30 -0
- package/ios/hyperswitchSDK/Shared/HyperNetworking.swift +151 -0
- package/ios/hyperswitchSDK/Shared/HyperParams.swift +44 -0
- package/ios/hyperswitchSDK/Shared/HyperUIViewController.swift +27 -0
- package/ios/hyperswitchSDK/Shared/Hyperswitch.swift +20 -0
- package/ios/hyperswitchSDK/Shared/HyperswitchConfigurationSchema.swift +54 -0
- package/ios/hyperswitchSDK/Shared/HyperswitchEnvironment.swift +11 -0
- package/ios/hyperswitchSDK/Shared/NativeLogger/Debouncer.swift +37 -0
- package/ios/hyperswitchSDK/Shared/NativeLogger/LogBuilder.swift +113 -0
- package/ios/hyperswitchSDK/Shared/NativeLogger/LogFileManager.swift +76 -0
- package/ios/hyperswitchSDK/Shared/NativeLogger/LogManager.swift +113 -0
- package/ios/hyperswitchSDK/Shared/NativeLogger/LogPayload.swift +91 -0
- package/ios/hyperswitchSDK/Shared/PaymentMethodType.swift +15 -0
- package/ios/hyperswitchSDK/Shared/PaymentSession.swift +98 -0
- package/ios/hyperswitchSDK/Shared/PaymentSessionConfiguration.swift +14 -0
- package/ios/hyperswitchSDK/Shared/PaymentSheet.swift +33 -0
- package/ios/hyperswitchSDK/Shared/PaymentSheetAppearance+Codable.swift +182 -0
- package/ios/hyperswitchSDK/Shared/PaymentSheetAppearance.swift +238 -0
- package/ios/hyperswitchSDK/Shared/PaymentSheetConfiguration.swift +161 -0
- package/ios/hyperswitchSDK/Shared/SDKParams.swift +43 -0
- package/ios/hyperswitchSDK/Shared/SavedPaymentMethodsConfiguration.swift +20 -0
- package/ios/hyperswitchSDK/Shared/SwiftUIManager.swift +28 -0
- package/ios/hyperswitchSDK/Shared/Version.swift +12 -0
- package/lib/bs/JuspayTechReactNativeHyperswitch.cmi +0 -0
- package/lib/bs/JuspayTechReactNativeHyperswitch.cmj +0 -0
- package/lib/bs/JuspayTechReactNativeHyperswitch.cmt +0 -0
- package/lib/bs/JuspayTechReactNativeHyperswitch.mlmap +0 -0
- package/lib/bs/build.ninja +8 -0
- package/lib/bs/install.ninja +9 -0
- package/lib/bs/src/context/HyperProvider-JuspayTechReactNativeHyperswitch.cmt +0 -0
- package/lib/bs/src/context/WidgetRegistry-JuspayTechReactNativeHyperswitch.cmt +0 -0
- package/lib/bs/src/core/Hyper-JuspayTechReactNativeHyperswitch.cmt +0 -0
- package/lib/bs/src/core/HyperElements-JuspayTechReactNativeHyperswitch.cmt +0 -0
- package/lib/bs/src/hooks/usePaymentSession-JuspayTechReactNativeHyperswitch.cmt +0 -0
- package/lib/bs/src/hooks/useWidget-JuspayTechReactNativeHyperswitch.cmt +0 -0
- package/lib/bs/src/modules/NativeHyperswitchSdk-JuspayTechReactNativeHyperswitch.cmt +0 -0
- package/lib/bs/src/types/HyperTypes-JuspayTechReactNativeHyperswitch.cmt +0 -0
- package/lib/bs/src/types/NativeModuleTypes-JuspayTechReactNativeHyperswitch.cmt +0 -0
- package/lib/bs/src/types/PaymentSheetConfiguration-JuspayTechReactNativeHyperswitch.cmt +0 -0
- package/lib/bs/src/utils/AppearanceTransformer-JuspayTechReactNativeHyperswitch.cmt +0 -0
- package/lib/bs/src/utils/EventValidator-JuspayTechReactNativeHyperswitch.cmt +0 -0
- package/lib/bs/src/utils/NewArchUtils-JuspayTechReactNativeHyperswitch.cmt +0 -0
- package/lib/bs/src/utils/PaymentSheetEventManager-JuspayTechReactNativeHyperswitch.cmt +0 -0
- package/lib/bs/src/utils/ReactNativeUtils-JuspayTechReactNativeHyperswitch.cmt +0 -0
- package/lib/bs/src/utils/ResponseHandler-JuspayTechReactNativeHyperswitch.cmt +0 -0
- package/lib/bs/src/views/CVCElement-JuspayTechReactNativeHyperswitch.cmt +0 -0
- package/lib/bs/src/views/NativePaymentWidget-JuspayTechReactNativeHyperswitch.cmt +0 -0
- package/lib/bs/src/views/NativePaymentWidgetImpl-JuspayTechReactNativeHyperswitch.cmt +0 -0
- package/lib/bs/src/views/PaymentElement-JuspayTechReactNativeHyperswitch.cmt +0 -0
- package/lib/commonjs/index.bundle.js +2 -0
- package/lib/commonjs/index.bundle.js.map +1 -0
- package/lib/module/index.bundle.js +2 -0
- package/lib/module/index.bundle.js.map +1 -0
- package/lib/typescript/babel.config.d.ts +10 -0
- package/lib/typescript/babel.config.d.ts.map +1 -0
- package/lib/typescript/eslint.config.d.mts +3 -0
- package/lib/typescript/eslint.config.d.mts.map +1 -0
- package/lib/typescript/rollup.config.d.ts +23 -0
- package/lib/typescript/rollup.config.d.ts.map +1 -0
- package/lib/typescript/scripts/bootstrap.d.ts +2 -0
- package/lib/typescript/scripts/bootstrap.d.ts.map +1 -0
- package/lib/typescript/src/context/Elements.d.ts +7 -0
- package/lib/typescript/src/context/Elements.d.ts.map +1 -0
- package/lib/typescript/src/context/HyperElements.d.ts +23 -0
- package/lib/typescript/src/context/HyperElements.d.ts.map +1 -0
- package/lib/typescript/src/context/PaymentSession.d.ts +15 -0
- package/lib/typescript/src/context/PaymentSession.d.ts.map +1 -0
- package/lib/typescript/src/context/SavedPaymentMethods.d.ts +5 -0
- package/lib/typescript/src/context/SavedPaymentMethods.d.ts.map +1 -0
- package/lib/typescript/src/context/WidgetRegistry.d.ts +8 -0
- package/lib/typescript/src/context/WidgetRegistry.d.ts.map +1 -0
- package/lib/typescript/src/context/hooks.d.ts +5 -0
- package/lib/typescript/src/context/hooks.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +10 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/modules/NativeHyperswitchSdk.d.ts +61 -0
- package/lib/typescript/src/modules/NativeHyperswitchSdk.d.ts.map +1 -0
- package/lib/typescript/src/specs/ApplePayViewNativeComponent.d.ts +10 -0
- package/lib/typescript/src/specs/ApplePayViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/src/specs/NativeHyperHeadless.d.ts +14 -0
- package/lib/typescript/src/specs/NativeHyperHeadless.d.ts.map +1 -0
- package/lib/typescript/src/specs/NativeHyperswitchModule.d.ts +32 -0
- package/lib/typescript/src/specs/NativeHyperswitchModule.d.ts.map +1 -0
- package/lib/typescript/src/specs/NativeHyperswitchSdkNative.d.ts +33 -0
- package/lib/typescript/src/specs/NativeHyperswitchSdkNative.d.ts.map +1 -0
- package/lib/typescript/src/specs/NativePaymentElementModule.d.ts +9 -0
- package/lib/typescript/src/specs/NativePaymentElementModule.d.ts.map +1 -0
- package/lib/typescript/src/specs/PaymentElementNativeComponent.d.ts +19 -0
- package/lib/typescript/src/specs/PaymentElementNativeComponent.d.ts.map +1 -0
- package/lib/typescript/src/specs/utils.d.ts +15 -0
- package/lib/typescript/src/specs/utils.d.ts.map +1 -0
- package/lib/typescript/src/types/NativeModuleTypes.d.ts +67 -0
- package/lib/typescript/src/types/NativeModuleTypes.d.ts.map +1 -0
- package/lib/typescript/src/types/PaymentSheetConfiguration.d.ts +255 -0
- package/lib/typescript/src/types/PaymentSheetConfiguration.d.ts.map +1 -0
- package/lib/typescript/src/types/definitions.d.ts +85 -0
- package/lib/typescript/src/types/definitions.d.ts.map +1 -0
- package/lib/typescript/src/types/elements/index.d.ts +23 -0
- package/lib/typescript/src/types/elements/index.d.ts.map +1 -0
- package/lib/typescript/src/types/paymentresult/index.d.ts +5 -0
- package/lib/typescript/src/types/paymentresult/index.d.ts.map +1 -0
- package/lib/typescript/src/types/savedPaymentMethods/index.d.ts +69 -0
- package/lib/typescript/src/types/savedPaymentMethods/index.d.ts.map +1 -0
- package/lib/typescript/src/utils/EventValidator.d.ts +9 -0
- package/lib/typescript/src/utils/EventValidator.d.ts.map +1 -0
- package/lib/typescript/src/utils/InitializationState.d.ts +13 -0
- package/lib/typescript/src/utils/InitializationState.d.ts.map +1 -0
- package/lib/typescript/src/utils/LaunchOptions.d.ts +7 -0
- package/lib/typescript/src/utils/LaunchOptions.d.ts.map +1 -0
- package/lib/typescript/src/utils/NewArchUtils.d.ts +7 -0
- package/lib/typescript/src/utils/NewArchUtils.d.ts.map +1 -0
- package/lib/typescript/src/utils/ReactNativeUtils.d.ts +3 -0
- package/lib/typescript/src/utils/ReactNativeUtils.d.ts.map +1 -0
- package/lib/typescript/src/views/CVCElement.d.ts +15 -0
- package/lib/typescript/src/views/CVCElement.d.ts.map +1 -0
- package/lib/typescript/src/views/NativePaymentWidget.d.ts +3 -0
- package/lib/typescript/src/views/NativePaymentWidget.d.ts.map +1 -0
- package/lib/typescript/src/views/NativePaymentWidgetImpl.d.ts +5 -0
- package/lib/typescript/src/views/NativePaymentWidgetImpl.d.ts.map +1 -0
- package/lib/typescript/src/views/PaymentElement.d.ts +18 -0
- package/lib/typescript/src/views/PaymentElement.d.ts.map +1 -0
- package/package.json +184 -0
- package/src/context/Elements.ts +80 -0
- package/src/context/HyperElements.tsx +81 -0
- package/src/context/PaymentSession.ts +121 -0
- package/src/context/SavedPaymentMethods.ts +80 -0
- package/src/context/WidgetRegistry.ts +74 -0
- package/src/context/hooks.ts +79 -0
- package/src/index.ts +53 -0
- package/src/modules/NativeHyperswitchSdk.ts +155 -0
- package/src/specs/ApplePayViewNativeComponent.ts +11 -0
- package/src/specs/NativeHyperHeadless.ts +22 -0
- package/src/specs/NativeHyperswitchModule.ts +51 -0
- package/src/specs/NativeHyperswitchSdkNative.ts +62 -0
- package/src/specs/NativePaymentElementModule.ts +25 -0
- package/src/specs/PaymentElementNativeComponent.ts +21 -0
- package/src/specs/utils.ts +15 -0
- package/src/types/NativeModuleTypes.ts +73 -0
- package/src/types/PaymentSheetConfiguration.ts +360 -0
- package/src/types/definitions.ts +109 -0
- package/src/types/elements/index.ts +33 -0
- package/src/types/paymentresult/index.ts +4 -0
- package/src/types/savedPaymentMethods/index.ts +74 -0
- package/src/utils/EventValidator.ts +39 -0
- package/src/utils/InitializationState.ts +28 -0
- package/src/utils/LaunchOptions.ts +41 -0
- package/src/utils/NewArchUtils.ts +18 -0
- package/src/utils/ReactNativeUtils.ts +13 -0
- package/src/views/CVCElement.tsx +122 -0
- package/src/views/NativePaymentWidget.ts +2 -0
- package/src/views/NativePaymentWidgetImpl.ts +16 -0
- package/src/views/PaymentElement.tsx +189 -0
- 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
|
+
}
|