@primer-io/react-native 0.16.0 → 2.0.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/README.md +114 -24
- package/android/build.gradle +10 -2
- package/android/gradle.properties +3 -3
- package/android/src/main/java/com/primerioreactnative/PrimerRN.kt +124 -150
- package/android/src/main/java/com/primerioreactnative/PrimerRNEventListener.kt +212 -128
- package/android/src/main/java/com/primerioreactnative/ReactNativePackage.kt +3 -14
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerCheckoutDataRN.kt +12 -0
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerClientSessionRN.kt +54 -0
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerErrorRN.kt +3 -9
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerEvents.kt +13 -0
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerPaymentInstrumentTokenRN.kt +4 -4
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerPaymentMethodDataRN.kt +8 -0
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerSettingsRN.kt +43 -125
- package/android/src/main/java/com/primerioreactnative/extensions/Payment.kt +6 -0
- package/android/src/main/java/com/primerioreactnative/extensions/PrimerAddress.kt +15 -0
- package/android/src/main/java/com/primerioreactnative/extensions/PrimerCheckoutData.kt +7 -0
- package/android/src/main/java/com/primerioreactnative/extensions/PrimerClientSession.kt +15 -0
- package/android/src/main/java/com/primerioreactnative/extensions/PrimerCustomer.kt +13 -0
- package/android/src/main/java/com/primerioreactnative/extensions/PrimerLineItem.kt +8 -0
- package/android/src/main/java/com/primerioreactnative/extensions/PrimerOrder.kt +6 -0
- package/android/src/main/java/com/primerioreactnative/extensions/PrimerPaymentMethodData.kt +7 -0
- package/android/src/main/java/com/primerioreactnative/utils/ErrorHelper.kt +1 -3
- package/android/src/main/java/com/primerioreactnative/utils/JsonConverter.kt +45 -0
- package/android/src/main/java/com/primerioreactnative/utils/PrimerImplementedRNCallbacks.kt +16 -6
- package/ios/DataModels/ImplementedRNCallbacks.swift +31 -0
- package/ios/DataModels/PrimerErrorRN.swift +0 -17
- package/ios/DataModels/PrimerSettingsRN.swift +70 -147
- package/ios/DataModels/PrimerThemeRN.swift +1 -10
- package/ios/RNTPrimer.m +26 -12
- package/ios/RNTPrimer.swift +295 -249
- package/ios/{Core/ReactNative-Bridging-Header.h → ReactNative-Bridging-Header.h} +0 -1
- package/ios/ReactNative.xcodeproj/project.pbxproj +14 -14
- package/lib/commonjs/Primer.js +201 -150
- package/lib/commonjs/Primer.js.map +1 -1
- package/lib/commonjs/RNPrimer.js +102 -41
- package/lib/commonjs/RNPrimer.js.map +1 -1
- package/lib/commonjs/index.js +110 -24
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/models/{primer.js → Primer.js} +1 -1
- package/lib/commonjs/{headless_checkout/types.js.map → models/Primer.js.map} +0 -0
- package/lib/commonjs/models/PrimerCheckoutData.js +9 -0
- package/lib/commonjs/models/PrimerCheckoutData.js.map +1 -0
- package/lib/commonjs/models/PrimerCheckoutPaymentMethodData.js +2 -0
- package/lib/commonjs/models/{action-request.js.map → PrimerCheckoutPaymentMethodData.js.map} +0 -0
- package/lib/commonjs/models/PrimerClientSession.js +2 -0
- package/lib/commonjs/models/{client-session-actions-request.js.map → PrimerClientSession.js.map} +0 -0
- package/lib/commonjs/models/{utils/countryCode.js → PrimerCountryCode.js} +1 -1
- package/lib/commonjs/models/PrimerCountryCode.js.map +1 -0
- package/lib/commonjs/models/{utils/currencyCode.js → PrimerCurrencyCode.js} +1 -1
- package/lib/commonjs/models/PrimerCurrencyCode.js.map +1 -0
- package/lib/commonjs/models/PrimerError.js +28 -0
- package/lib/commonjs/models/PrimerError.js.map +1 -0
- package/lib/commonjs/models/PrimerPaymentMethodTokenData.js +14 -0
- package/lib/commonjs/models/PrimerPaymentMethodTokenData.js.map +1 -0
- package/lib/commonjs/models/PrimerSessionIntent.js +14 -0
- package/lib/commonjs/models/PrimerSessionIntent.js.map +1 -0
- package/lib/commonjs/models/{primer-config.js → PrimerSettings.js} +1 -1
- package/lib/commonjs/models/{primer-callbacks.js.map → PrimerSettings.js.map} +0 -0
- package/lib/commonjs/models/PrimerTheme.js +2 -0
- package/lib/commonjs/models/{primer-config.js.map → PrimerTheme.js.map} +0 -0
- package/lib/commonjs/utils/index.js.map +1 -1
- package/lib/module/Primer.js +201 -137
- package/lib/module/Primer.js.map +1 -1
- package/lib/module/RNPrimer.js +102 -41
- package/lib/module/RNPrimer.js.map +1 -1
- package/lib/module/index.js +9 -5
- package/lib/module/index.js.map +1 -1
- package/lib/module/models/Primer.js +2 -0
- package/lib/{commonjs/models/primer-request.js.map → module/models/Primer.js.map} +0 -0
- package/lib/module/models/PrimerCheckoutData.js +7 -0
- package/lib/module/models/PrimerCheckoutData.js.map +1 -0
- package/lib/module/models/PrimerCheckoutPaymentMethodData.js +2 -0
- package/lib/{commonjs/models/primer-settings.js.map → module/models/PrimerCheckoutPaymentMethodData.js.map} +0 -0
- package/lib/module/models/PrimerClientSession.js +2 -0
- package/lib/{commonjs/models/primer-theme.js.map → module/models/PrimerClientSession.js.map} +0 -0
- package/lib/module/models/{utils/countryCode.js → PrimerCountryCode.js} +1 -1
- package/lib/module/models/PrimerCountryCode.js.map +1 -0
- package/lib/module/models/{utils/currencyCode.js → PrimerCurrencyCode.js} +1 -1
- package/lib/module/models/PrimerCurrencyCode.js.map +1 -0
- package/lib/module/models/PrimerError.js +19 -0
- package/lib/module/models/PrimerError.js.map +1 -0
- package/lib/module/models/PrimerPaymentMethodTokenData.js +7 -0
- package/lib/module/models/PrimerPaymentMethodTokenData.js.map +1 -0
- package/lib/module/models/PrimerSessionIntent.js +7 -0
- package/lib/module/models/PrimerSessionIntent.js.map +1 -0
- package/lib/module/models/PrimerSettings.js +2 -0
- package/lib/{commonjs/models/primer.js.map → module/models/PrimerSettings.js.map} +0 -0
- package/lib/module/models/PrimerTheme.js +2 -0
- package/lib/module/{headless_checkout/types.js.map → models/PrimerTheme.js.map} +0 -0
- package/lib/module/utils/index.js.map +1 -1
- package/lib/typescript/Primer.d.ts +2 -15
- package/lib/typescript/RNPrimer.d.ts +16 -9
- package/lib/typescript/index.d.ts +9 -5
- package/lib/typescript/models/Primer.d.ts +26 -0
- package/lib/typescript/models/PrimerCheckoutData.d.ts +15 -0
- package/lib/typescript/models/PrimerCheckoutPaymentMethodData.d.ts +5 -0
- package/lib/typescript/models/PrimerClientSession.d.ts +45 -0
- package/lib/typescript/models/{utils/countryCode.d.ts → PrimerCountryCode.d.ts} +1 -1
- package/lib/typescript/models/{utils/currencyCode.d.ts → PrimerCurrencyCode.d.ts} +1 -1
- package/lib/typescript/models/PrimerError.d.ts +11 -0
- package/lib/typescript/models/PrimerPaymentMethodTokenData.d.ts +116 -0
- package/lib/typescript/models/PrimerSessionIntent.d.ts +4 -0
- package/lib/typescript/models/PrimerSettings.d.ts +73 -0
- package/lib/typescript/models/{primer-theme.d.ts → PrimerTheme.d.ts} +1 -1
- package/lib/typescript/utils/index.d.ts +1 -1
- package/package.json +1 -1
- package/primer-io-react-native.podspec +1 -1
- package/src/Primer.ts +228 -172
- package/src/RNPrimer.ts +135 -51
- package/src/index.tsx +33 -7
- package/src/models/Primer.ts +35 -0
- package/src/models/PrimerCheckoutData.ts +18 -0
- package/src/models/PrimerCheckoutPaymentMethodData.ts +5 -0
- package/src/models/PrimerClientSession.ts +53 -0
- package/src/models/{utils/countryCode.ts → PrimerCountryCode.ts} +1 -1
- package/src/models/{utils/currencyCode.ts → PrimerCurrencyCode.ts} +1 -1
- package/src/models/PrimerError.ts +20 -0
- package/src/models/PrimerPaymentMethodTokenData.ts +130 -0
- package/src/models/PrimerSessionIntent.ts +4 -0
- package/src/models/PrimerSettings.ts +93 -0
- package/src/models/{primer-theme.ts → PrimerTheme.ts} +1 -1
- package/src/utils/index.ts +1 -1
- package/android/src/main/java/com/primerioreactnative/PrimerCardNumberEditTextManager.kt +0 -83
- package/android/src/main/java/com/primerioreactnative/PrimerHeadlessUniversalCheckout.kt +0 -198
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerEventsRN.kt +0 -11
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerIntentRN.kt +0 -80
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerOnClientSessionActionsRequestRN.kt +0 -65
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerRequestRN.kt +0 -9
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerThemeRN.kt +0 -51
- package/android/src/main/java/com/primerioreactnative/huc/assets/AssetsManager.kt +0 -56
- package/android/src/main/java/com/primerioreactnative/huc/events/PrimerHeadlessUniversalCheckoutEvent.kt +0 -11
- package/android/src/main/java/com/primerioreactnative/huc/extensions/Map.kt +0 -10
- package/android/src/main/java/com/primerioreactnative/utils/Keys.kt +0 -7
- package/android/src/main/java/com/primerioreactnative/utils/PrimerEventQueueRN.kt +0 -30
- package/ios/DataModels/PrimerIntentRN.swift +0 -10
- package/ios/DataModels/PrimerRequestRN.swift +0 -14
- package/ios/Headless Universal Checkout/RNTPrimerCardNumberInputElementManager.m +0 -23
- package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.m +0 -30
- package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.swift +0 -241
- package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.m +0 -14
- package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.swift +0 -113
- package/lib/commonjs/PrimerInput.js +0 -80
- package/lib/commonjs/PrimerInput.js.map +0 -1
- package/lib/commonjs/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js +0 -14
- package/lib/commonjs/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js.map +0 -1
- package/lib/commonjs/headless_checkout/NativePrimerHeadlessUniversalCheckout.js +0 -110
- package/lib/commonjs/headless_checkout/NativePrimerHeadlessUniversalCheckout.js.map +0 -1
- package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckout.js +0 -117
- package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckout.js.map +0 -1
- package/lib/commonjs/headless_checkout/types.js +0 -2
- package/lib/commonjs/models/action-request.js +0 -2
- package/lib/commonjs/models/client-session-actions-request.js +0 -2
- package/lib/commonjs/models/payment-instrument-token.js +0 -30
- package/lib/commonjs/models/payment-instrument-token.js.map +0 -1
- package/lib/commonjs/models/primer-callbacks.js +0 -6
- package/lib/commonjs/models/primer-error.js +0 -4
- package/lib/commonjs/models/primer-error.js.map +0 -1
- package/lib/commonjs/models/primer-intent.js +0 -4
- package/lib/commonjs/models/primer-intent.js.map +0 -1
- package/lib/commonjs/models/primer-request.js +0 -2
- package/lib/commonjs/models/primer-settings.js +0 -6
- package/lib/commonjs/models/primer-theme.js +0 -2
- package/lib/commonjs/models/utils/countryCode.js.map +0 -1
- package/lib/commonjs/models/utils/currencyCode.js.map +0 -1
- package/lib/commonjs/models/utils/redirectScheme.js +0 -4
- package/lib/commonjs/models/utils/redirectScheme.js.map +0 -1
- package/lib/module/PrimerInput.js +0 -46
- package/lib/module/PrimerInput.js.map +0 -1
- package/lib/module/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js +0 -5
- package/lib/module/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js.map +0 -1
- package/lib/module/headless_checkout/NativePrimerHeadlessUniversalCheckout.js +0 -98
- package/lib/module/headless_checkout/NativePrimerHeadlessUniversalCheckout.js.map +0 -1
- package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckout.js +0 -100
- package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckout.js.map +0 -1
- package/lib/module/headless_checkout/types.js +0 -2
- package/lib/module/models/action-request.js +0 -2
- package/lib/module/models/action-request.js.map +0 -1
- package/lib/module/models/client-session-actions-request.js +0 -2
- package/lib/module/models/client-session-actions-request.js.map +0 -1
- package/lib/module/models/payment-instrument-token.js +0 -28
- package/lib/module/models/payment-instrument-token.js.map +0 -1
- package/lib/module/models/primer-callbacks.js +0 -2
- package/lib/module/models/primer-callbacks.js.map +0 -1
- package/lib/module/models/primer-config.js +0 -2
- package/lib/module/models/primer-config.js.map +0 -1
- package/lib/module/models/primer-error.js +0 -2
- package/lib/module/models/primer-error.js.map +0 -1
- package/lib/module/models/primer-intent.js +0 -2
- package/lib/module/models/primer-intent.js.map +0 -1
- package/lib/module/models/primer-request.js +0 -2
- package/lib/module/models/primer-request.js.map +0 -1
- package/lib/module/models/primer-settings.js +0 -2
- package/lib/module/models/primer-settings.js.map +0 -1
- package/lib/module/models/primer-theme.js +0 -2
- package/lib/module/models/primer-theme.js.map +0 -1
- package/lib/module/models/primer.js +0 -2
- package/lib/module/models/primer.js.map +0 -1
- package/lib/module/models/utils/countryCode.js.map +0 -1
- package/lib/module/models/utils/currencyCode.js.map +0 -1
- package/lib/module/models/utils/redirectScheme.js +0 -2
- package/lib/module/models/utils/redirectScheme.js.map +0 -1
- package/lib/typescript/PrimerInput.d.ts +0 -15
- package/lib/typescript/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.d.ts +0 -1
- package/lib/typescript/headless_checkout/NativePrimerHeadlessUniversalCheckout.d.ts +0 -13
- package/lib/typescript/headless_checkout/PrimerHeadlessUniversalCheckout.d.ts +0 -13
- package/lib/typescript/headless_checkout/types.d.ts +0 -16
- package/lib/typescript/models/action-request.d.ts +0 -10
- package/lib/typescript/models/client-session-actions-request.d.ts +0 -15
- package/lib/typescript/models/payment-instrument-token.d.ts +0 -76
- package/lib/typescript/models/primer-callbacks.d.ts +0 -10
- package/lib/typescript/models/primer-config.d.ts +0 -44
- package/lib/typescript/models/primer-error.d.ts +0 -8
- package/lib/typescript/models/primer-intent.d.ts +0 -13
- package/lib/typescript/models/primer-request.d.ts +0 -7
- package/lib/typescript/models/primer-settings.d.ts +0 -65
- package/lib/typescript/models/primer.d.ts +0 -33
- package/lib/typescript/models/utils/redirectScheme.d.ts +0 -3
- package/src/PrimerInput.tsx +0 -73
- package/src/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.tsx +0 -2
- package/src/headless_checkout/NativePrimerHeadlessUniversalCheckout.ts +0 -132
- package/src/headless_checkout/PrimerHeadlessUniversalCheckout.ts +0 -140
- package/src/headless_checkout/types.ts +0 -18
- package/src/models/action-request.ts +0 -12
- package/src/models/client-session-actions-request.ts +0 -21
- package/src/models/payment-instrument-token.ts +0 -109
- package/src/models/primer-callbacks.ts +0 -14
- package/src/models/primer-config.ts +0 -55
- package/src/models/primer-error.ts +0 -19
- package/src/models/primer-intent.ts +0 -49
- package/src/models/primer-request.ts +0 -7
- package/src/models/primer-settings.ts +0 -73
- package/src/models/primer.ts +0 -41
- package/src/models/utils/redirectScheme.ts +0 -5
|
@@ -1,145 +1,63 @@
|
|
|
1
1
|
package com.primerioreactnative.datamodels
|
|
2
2
|
|
|
3
|
-
import io.primer.android.
|
|
4
|
-
import io.primer.android.
|
|
3
|
+
import io.primer.android.data.settings.*
|
|
4
|
+
import io.primer.android.ui.settings.PrimerUIOptions
|
|
5
|
+
import kotlinx.serialization.SerialName
|
|
5
6
|
import kotlinx.serialization.Serializable
|
|
7
|
+
import java.util.*
|
|
6
8
|
|
|
7
9
|
@Serializable
|
|
8
|
-
class PrimerSettingsRN(
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
)
|
|
14
|
-
|
|
15
|
-
val order = order?.format() ?: Order()
|
|
16
|
-
val customer = customer?.format() ?: Customer()
|
|
17
|
-
val business = business?.format() ?: Business()
|
|
18
|
-
val options = options?.format() ?: Options()
|
|
19
|
-
return PrimerSettings(order, customer, business, options)
|
|
20
|
-
}
|
|
21
|
-
}
|
|
10
|
+
data class PrimerSettingsRN(
|
|
11
|
+
var paymentHandling: PrimerPaymentHandling = PrimerPaymentHandling.AUTO,
|
|
12
|
+
var localeData: LocaleSettingsRN = LocaleSettingsRN(),
|
|
13
|
+
var paymentMethodOptions: PrimerPaymentMethodOptionsRN = PrimerPaymentMethodOptionsRN(),
|
|
14
|
+
var uiOptions: PrimerUIOptions = PrimerUIOptions(),
|
|
15
|
+
var debugOptions: PrimerDebugOptions = PrimerDebugOptions(),
|
|
16
|
+
)
|
|
22
17
|
|
|
23
18
|
@Serializable
|
|
24
|
-
data class
|
|
25
|
-
val
|
|
26
|
-
val
|
|
27
|
-
|
|
28
|
-
val items: List<OrderItemRN>? = null,
|
|
29
|
-
val shipping: PrimerAddressRN? = null,
|
|
30
|
-
) {
|
|
31
|
-
fun format(): Order {
|
|
32
|
-
return Order(
|
|
33
|
-
amount = amount,
|
|
34
|
-
currency = currency,
|
|
35
|
-
countryCode = countryCode?.let { CountryCode.valueOf(it) },
|
|
19
|
+
data class LocaleSettingsRN(
|
|
20
|
+
val languageCode: String? = null,
|
|
21
|
+
val localeCode: String? = null
|
|
22
|
+
)
|
|
36
23
|
|
|
37
|
-
|
|
24
|
+
fun LocaleSettingsRN.toLocale(): Locale {
|
|
25
|
+
return when {
|
|
26
|
+
languageCode == null -> Locale.getDefault()
|
|
27
|
+
localeCode == null -> Locale(languageCode)
|
|
28
|
+
else -> Locale(languageCode, localeCode)
|
|
38
29
|
}
|
|
39
30
|
}
|
|
40
31
|
|
|
41
32
|
@Serializable
|
|
42
|
-
data class
|
|
43
|
-
|
|
44
|
-
val
|
|
45
|
-
|
|
46
|
-
|
|
33
|
+
data class PrimerPaymentMethodOptionsRN(
|
|
34
|
+
@SerialName("android")
|
|
35
|
+
val androidSettingsRN: AndroidSettingsRN = AndroidSettingsRN(),
|
|
36
|
+
var cardPaymentOptions: PrimerCardPaymentOptions = PrimerCardPaymentOptions(),
|
|
37
|
+
var googlePayOptions: PrimerGooglePayOptions = PrimerGooglePayOptions(),
|
|
38
|
+
var klarnaOptions: PrimerKlarnaOptions = PrimerKlarnaOptions(),
|
|
39
|
+
var apayaOptions: PrimerApayaOptions = PrimerApayaOptions(),
|
|
40
|
+
var goCardlessOptions: PrimerGoCardlessOptions = PrimerGoCardlessOptions()
|
|
47
41
|
)
|
|
48
42
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
)
|
|
57
|
-
|
|
58
|
-
fun format(): Business {
|
|
59
|
-
return Business(
|
|
60
|
-
name = name,
|
|
61
|
-
registrationNumber = registrationNumber,
|
|
62
|
-
email = email,
|
|
63
|
-
phone = phone,
|
|
64
|
-
address = address?.format(),
|
|
65
|
-
)
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
@Serializable
|
|
70
|
-
data class CustomerRN(
|
|
71
|
-
val id: String? = null,
|
|
72
|
-
val firstName: String? = null,
|
|
73
|
-
val lastName: String? = null,
|
|
74
|
-
val email: String? = null,
|
|
75
|
-
val phone: String? = null,
|
|
76
|
-
val billing: PrimerAddressRN? = null,
|
|
77
|
-
) {
|
|
78
|
-
fun format(): Customer {
|
|
79
|
-
return Customer(
|
|
80
|
-
id = id,
|
|
81
|
-
firstName = firstName,
|
|
82
|
-
lastName = lastName,
|
|
83
|
-
email = email,
|
|
84
|
-
homePhone = phone,
|
|
85
|
-
billingAddress = billing?.format(),
|
|
86
|
-
)
|
|
87
|
-
}
|
|
88
|
-
}
|
|
43
|
+
fun PrimerPaymentMethodOptionsRN.toPrimerPaymentMethodOptions() = PrimerPaymentMethodOptions(
|
|
44
|
+
androidSettingsRN.redirectScheme,
|
|
45
|
+
cardPaymentOptions,
|
|
46
|
+
googlePayOptions,
|
|
47
|
+
klarnaOptions,
|
|
48
|
+
apayaOptions,
|
|
49
|
+
goCardlessOptions
|
|
50
|
+
)
|
|
89
51
|
|
|
90
52
|
@Serializable
|
|
91
|
-
data class
|
|
92
|
-
val isResultScreenEnabled: Boolean? = null,
|
|
93
|
-
val isLoadingScreenEnabled: Boolean? = null,
|
|
94
|
-
val isFullScreenEnabled: Boolean? = null,
|
|
95
|
-
val is3DSOnVaultingEnabled: Boolean? = null,
|
|
96
|
-
val locale: String? = null,
|
|
97
|
-
val android: AndroidOptionsRN? = null,
|
|
98
|
-
val is3DSDevelopmentModeEnabled: Boolean = true
|
|
99
|
-
) {
|
|
100
|
-
fun format(): Options {
|
|
101
|
-
return Options(
|
|
102
|
-
showUI = isLoadingScreenEnabled ?: true,
|
|
103
|
-
redirectScheme = android?.redirectScheme,
|
|
104
|
-
is3DSOnVaultingEnabled = is3DSOnVaultingEnabled ?: false,
|
|
105
|
-
debugOptions = PrimerDebugOptions(
|
|
106
|
-
is3DSSanityCheckEnabled = !is3DSDevelopmentModeEnabled, // false on emulator
|
|
107
|
-
),
|
|
108
|
-
)
|
|
109
|
-
}
|
|
110
|
-
}
|
|
53
|
+
data class AndroidSettingsRN(val redirectScheme: String? = null)
|
|
111
54
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
55
|
+
fun PrimerSettingsRN.toPrimerSettings() = PrimerSettings(
|
|
56
|
+
paymentHandling,
|
|
57
|
+
localeData.toLocale(),
|
|
58
|
+
paymentMethodOptions.toPrimerPaymentMethodOptions(),
|
|
59
|
+
uiOptions,
|
|
60
|
+
debugOptions
|
|
115
61
|
)
|
|
116
62
|
|
|
117
|
-
@Serializable
|
|
118
|
-
data class PrimerAddressRN(
|
|
119
|
-
val line1: String?,
|
|
120
|
-
val line2: String? = null,
|
|
121
|
-
val postalCode: String?,
|
|
122
|
-
val state: String? = null,
|
|
123
|
-
val city: String?,
|
|
124
|
-
val country: String?,
|
|
125
|
-
) {
|
|
126
|
-
|
|
127
|
-
fun format(): Address? {
|
|
128
|
-
if (
|
|
129
|
-
line1 == null ||
|
|
130
|
-
postalCode == null ||
|
|
131
|
-
city == null ||
|
|
132
|
-
country == null
|
|
133
|
-
) {
|
|
134
|
-
return null
|
|
135
|
-
}
|
|
136
63
|
|
|
137
|
-
return Address(
|
|
138
|
-
line1 = line1,
|
|
139
|
-
line2 = line2,
|
|
140
|
-
city = city,
|
|
141
|
-
countryCode = CountryCode.valueOf(country),
|
|
142
|
-
postalCode = postalCode,
|
|
143
|
-
)
|
|
144
|
-
}
|
|
145
|
-
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
package com.primerioreactnative.extensions
|
|
2
|
+
|
|
3
|
+
import com.primerioreactnative.datamodels.PrimerAddressRN
|
|
4
|
+
import io.primer.android.domain.action.models.PrimerAddress
|
|
5
|
+
|
|
6
|
+
internal fun PrimerAddress.toPrimerAddressRN() = PrimerAddressRN(
|
|
7
|
+
firstName,
|
|
8
|
+
lastName,
|
|
9
|
+
addressLine1,
|
|
10
|
+
addressLine2,
|
|
11
|
+
postalCode,
|
|
12
|
+
city,
|
|
13
|
+
state,
|
|
14
|
+
countryCode
|
|
15
|
+
)
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
package com.primerioreactnative.extensions
|
|
2
|
+
|
|
3
|
+
import com.primerioreactnative.datamodels.PrimerCheckoutDataRN
|
|
4
|
+
import io.primer.android.domain.PrimerCheckoutData
|
|
5
|
+
|
|
6
|
+
internal fun PrimerCheckoutData.toPrimerCheckoutDataRN() =
|
|
7
|
+
PrimerCheckoutDataRN(payment.toPrimerPaymentRN())
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
package com.primerioreactnative.extensions
|
|
2
|
+
|
|
3
|
+
import com.primerioreactnative.datamodels.PrimerClientSessionRN
|
|
4
|
+
import io.primer.android.domain.action.models.PrimerClientSession
|
|
5
|
+
|
|
6
|
+
internal fun PrimerClientSession.toPrimerClientSessionRN() =
|
|
7
|
+
PrimerClientSessionRN(
|
|
8
|
+
customerId,
|
|
9
|
+
orderId,
|
|
10
|
+
currencyCode,
|
|
11
|
+
totalAmount,
|
|
12
|
+
lineItems?.map { it.toPrimerLineItemRN() },
|
|
13
|
+
orderDetails?.toPrimerOrderRN(),
|
|
14
|
+
customer?.toPrimerCustomerRN()
|
|
15
|
+
)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
package com.primerioreactnative.extensions
|
|
2
|
+
|
|
3
|
+
import com.primerioreactnative.datamodels.PrimerCustomerRN
|
|
4
|
+
import io.primer.android.domain.action.models.PrimerCustomer
|
|
5
|
+
|
|
6
|
+
internal fun PrimerCustomer.toPrimerCustomerRN() = PrimerCustomerRN(
|
|
7
|
+
emailAddress,
|
|
8
|
+
mobileNumber,
|
|
9
|
+
firstName,
|
|
10
|
+
lastName,
|
|
11
|
+
billingAddress?.toPrimerAddressRN(),
|
|
12
|
+
shippingAddress?.toPrimerAddressRN()
|
|
13
|
+
)
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
package com.primerioreactnative.extensions
|
|
2
|
+
|
|
3
|
+
import com.primerioreactnative.datamodels.PrimerLineItemRN
|
|
4
|
+
import io.primer.android.domain.action.models.PrimerLineItem
|
|
5
|
+
|
|
6
|
+
internal fun PrimerLineItem.toPrimerLineItemRN() = PrimerLineItemRN(
|
|
7
|
+
itemId, itemDescription, amount, discountAmount, quantity, taxCode, taxAmount
|
|
8
|
+
)
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
package com.primerioreactnative.extensions
|
|
2
|
+
|
|
3
|
+
import com.primerioreactnative.datamodels.PrimerPaymentMethodDataRN
|
|
4
|
+
import io.primer.android.domain.tokenization.models.PrimerPaymentMethodData
|
|
5
|
+
|
|
6
|
+
internal fun PrimerPaymentMethodData.toPrimerPaymentMethodDataRN() =
|
|
7
|
+
PrimerPaymentMethodDataRN(paymentMethodType)
|
|
@@ -4,8 +4,6 @@ import com.primerioreactnative.datamodels.ErrorTypeRN
|
|
|
4
4
|
import com.primerioreactnative.datamodels.PrimerErrorRN
|
|
5
5
|
|
|
6
6
|
infix fun ErrorTypeRN.errorTo(message: String) = PrimerErrorRN(
|
|
7
|
-
|
|
7
|
+
errorId,
|
|
8
8
|
message
|
|
9
9
|
)
|
|
10
|
-
|
|
11
|
-
fun PrimerErrorRN.asError() = Error("${this.errorId}: ${this.errorDescription}")
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
package com.primerioreactnative.utils
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.*
|
|
4
|
+
import org.json.JSONArray
|
|
5
|
+
|
|
6
|
+
import org.json.JSONException
|
|
7
|
+
|
|
8
|
+
import org.json.JSONObject
|
|
9
|
+
|
|
10
|
+
@Throws(JSONException::class)
|
|
11
|
+
internal fun convertJsonToMap(jsonObject: JSONObject): WritableMap {
|
|
12
|
+
val map = Arguments.createMap()
|
|
13
|
+
val iterator = jsonObject.keys()
|
|
14
|
+
while (iterator.hasNext()) {
|
|
15
|
+
val key = iterator.next()
|
|
16
|
+
when (val value = jsonObject[key]) {
|
|
17
|
+
is JSONObject -> map.putMap(key, convertJsonToMap(value))
|
|
18
|
+
is JSONArray -> map.putArray(key, convertJsonToArray(value))
|
|
19
|
+
is Boolean -> map.putBoolean(key, value)
|
|
20
|
+
is Int -> map.putInt(key, value)
|
|
21
|
+
is Double -> map.putDouble(key, value)
|
|
22
|
+
is String -> map.putString(key, value)
|
|
23
|
+
else -> map.putString(key, value.toString())
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return map
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
@Throws(JSONException::class)
|
|
30
|
+
private fun convertJsonToArray(jsonArray: JSONArray): WritableArray {
|
|
31
|
+
val array: WritableArray = Arguments.createArray()
|
|
32
|
+
for (i in 0 until jsonArray.length()) {
|
|
33
|
+
when (val value = jsonArray[i]) {
|
|
34
|
+
is JSONObject -> array.pushMap(convertJsonToMap(value))
|
|
35
|
+
is JSONArray -> array.pushArray(convertJsonToArray(value))
|
|
36
|
+
is Boolean -> array.pushBoolean(value)
|
|
37
|
+
is Int -> array.pushInt(value)
|
|
38
|
+
is Double -> array.pushDouble(value)
|
|
39
|
+
is String -> array.pushString(value)
|
|
40
|
+
else -> array.pushString(value.toString())
|
|
41
|
+
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return array
|
|
45
|
+
}
|
|
@@ -1,14 +1,24 @@
|
|
|
1
1
|
package com.primerioreactnative.utils
|
|
2
2
|
|
|
3
|
+
import kotlinx.serialization.SerialName
|
|
3
4
|
import kotlinx.serialization.Serializable
|
|
4
5
|
|
|
5
6
|
@Serializable
|
|
6
7
|
data class PrimerImplementedRNCallbacks(
|
|
7
|
-
|
|
8
|
-
val
|
|
8
|
+
@SerialName("onCheckoutComplete")
|
|
9
|
+
val isOnCheckoutCompleteImplemented: Boolean? = null,
|
|
10
|
+
@SerialName("onBeforeClientSessionUpdate")
|
|
11
|
+
val isOnBeforeClientSessionUpdateImplemented: Boolean? = null,
|
|
12
|
+
@SerialName("onClientSessionUpdate")
|
|
13
|
+
val isOnClientSessionUpdateImplemented: Boolean? = null,
|
|
14
|
+
@SerialName("onBeforePaymentCreate")
|
|
15
|
+
val isOnBeforePaymentCreateImplemented: Boolean? = null,
|
|
16
|
+
@SerialName("onError")
|
|
17
|
+
val isOnErrorImplemented: Boolean? = null,
|
|
18
|
+
@SerialName("onDismiss")
|
|
19
|
+
val isOnDismissImplemented: Boolean? = null,
|
|
20
|
+
@SerialName("onTokenizeSuccess")
|
|
21
|
+
val isOnTokenizeSuccessImplemented: Boolean? = null,
|
|
22
|
+
@SerialName("onResumeSuccess")
|
|
9
23
|
val isOnResumeSuccessImplemented: Boolean? = null,
|
|
10
|
-
val isOnResumeErrorImplemented: Boolean? = null,
|
|
11
|
-
val isOnCheckoutDismissedImplemented: Boolean? = null,
|
|
12
|
-
val isCheckoutFailedImplemented: Boolean? = null,
|
|
13
|
-
val isClientSessionActionsImplemented: Boolean? = null
|
|
14
24
|
)
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
//
|
|
2
|
+
// ImplementedRNCallbacks.swift
|
|
3
|
+
// primer-io-react-native
|
|
4
|
+
//
|
|
5
|
+
// Created by Evangelos on 20/5/22.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import Foundation
|
|
9
|
+
|
|
10
|
+
internal struct ImplementedRNCallbacks: Codable {
|
|
11
|
+
|
|
12
|
+
public var isOnCheckoutCompleteImplemented: Bool = false
|
|
13
|
+
public var isOnBeforeClientSessionUpdateImplemented: Bool = false
|
|
14
|
+
public var isOnClientSessionUpdateImplemented: Bool = false
|
|
15
|
+
public var isOnBeforePaymentCreateImplemented: Bool = false
|
|
16
|
+
public var isOnErrorImplemented: Bool = false
|
|
17
|
+
public var isOnDismissImplemented: Bool = false
|
|
18
|
+
public var isOnTokenizeSuccessImplemented: Bool = false
|
|
19
|
+
public var isOnResumeSuccessImplemented: Bool = false
|
|
20
|
+
|
|
21
|
+
enum CodingKeys: String, CodingKey {
|
|
22
|
+
case isOnCheckoutCompleteImplemented = "onCheckoutComplete"
|
|
23
|
+
case isOnBeforeClientSessionUpdateImplemented = "onBeforeClientSessionUpdate"
|
|
24
|
+
case isOnClientSessionUpdateImplemented = "onClientSessionUpdate"
|
|
25
|
+
case isOnBeforePaymentCreateImplemented = "onBeforePaymentCreate"
|
|
26
|
+
case isOnErrorImplemented = "onError"
|
|
27
|
+
case isOnDismissImplemented = "onDismiss"
|
|
28
|
+
case isOnTokenizeSuccessImplemented = "onTokenizeSuccess"
|
|
29
|
+
case isOnResumeSuccessImplemented = "onResumeSuccess"
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -1,20 +1,3 @@
|
|
|
1
|
-
struct PrimerErrorRN: Encodable {
|
|
2
|
-
let exceptionType: ErrorTypeRN
|
|
3
|
-
let description: String?
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
enum ErrorTypeRN: String, Error, Encodable {
|
|
7
|
-
case ParseJsonFailed
|
|
8
|
-
case noIosViewController
|
|
9
|
-
case invalidPrimerIntent
|
|
10
|
-
case themeParsingFailed
|
|
11
|
-
case settingsParsingFailed
|
|
12
|
-
case settingsNotConfigured
|
|
13
|
-
case clientTokenNotConfigured
|
|
14
|
-
case flowParsingFailed
|
|
15
|
-
case generic
|
|
16
|
-
}
|
|
17
|
-
|
|
18
1
|
struct NativeError: CustomNSError, LocalizedError, Codable {
|
|
19
2
|
let errorId: String
|
|
20
3
|
let errorDescription: String?
|
|
@@ -1,164 +1,87 @@
|
|
|
1
1
|
import PrimerSDK
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
fileprivate let order: OrderRN?
|
|
5
|
-
fileprivate let business: BusinessRN?
|
|
6
|
-
fileprivate let customer: CustomerRN?
|
|
7
|
-
fileprivate let options: OptionsRN?
|
|
8
|
-
}
|
|
3
|
+
extension PrimerSettings {
|
|
9
4
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
addressLine1: billingAddress.line1,
|
|
16
|
-
addressLine2: billingAddress.line2,
|
|
17
|
-
city: billingAddress.city,
|
|
18
|
-
state: billingAddress.state,
|
|
19
|
-
countryCode: billingAddress.country?.rawValue,
|
|
20
|
-
postalCode: billingAddress.postalCode
|
|
21
|
-
)
|
|
5
|
+
static func initialize(with settingsStr: String?) throws -> PrimerSettings {
|
|
6
|
+
guard let settingsStr = settingsStr,
|
|
7
|
+
let settingsData = settingsStr.data(using: .utf8)
|
|
8
|
+
else {
|
|
9
|
+
return PrimerSettings()
|
|
22
10
|
}
|
|
23
|
-
|
|
24
|
-
let debugOptions = PrimerDebugOptions(is3DSSanityCheckEnabled: !(options?.is3DSDevelopmentModeEnabled ?? false))
|
|
25
|
-
|
|
26
|
-
return PrimerSettings(
|
|
27
|
-
merchantIdentifier: options?.ios?.merchantIdentifier,
|
|
28
|
-
customerId: customer?.id,
|
|
29
|
-
amount: order?.amount,
|
|
30
|
-
currency: order?.currency,
|
|
31
|
-
countryCode: order?.countryCode,
|
|
32
|
-
klarnaSessionType: .recurringPayment, // need to update
|
|
33
|
-
urlScheme: options?.ios?.urlScheme,
|
|
34
|
-
urlSchemeIdentifier: options?.ios?.urlSchemeIdentifier,
|
|
35
|
-
isFullScreenOnly: options?.isFullScreenEnabled ?? false,
|
|
36
|
-
hasDisabledSuccessScreen: !(options?.isResultScreenEnabled ?? true),
|
|
37
|
-
businessDetails: business?.primerFormat,
|
|
38
|
-
orderItems: order?.itemsFormatted ?? [],
|
|
39
|
-
isInitialLoadingHidden: !(options?.isLoadingScreenEnabled ?? true),
|
|
40
|
-
is3DSOnVaultingEnabled: options?.is3DSOnVaultingEnabled ?? false,
|
|
41
|
-
orderId: order?.id,
|
|
42
|
-
debugOptions: debugOptions,
|
|
43
|
-
customer: Customer(
|
|
44
|
-
firstName: customer?.firstName,
|
|
45
|
-
lastName: customer?.lastName,
|
|
46
|
-
emailAddress: customer?.email,
|
|
47
|
-
homePhoneNumber: nil,
|
|
48
|
-
mobilePhoneNumber: customer?.phone,
|
|
49
|
-
workPhoneNumber: nil,
|
|
50
|
-
billingAddress: address
|
|
51
|
-
)
|
|
52
|
-
)
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
11
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
// FIXME: Move countryCode only within Address (RN & Android)
|
|
61
|
-
let countryCode: CountryCode?
|
|
62
|
-
let items: [OrderItemRN]?
|
|
63
|
-
let shipping: AddressRN?
|
|
64
|
-
}
|
|
12
|
+
guard let settingsJson = (try JSONSerialization.jsonObject(with: settingsData)) as? [String: Any]
|
|
13
|
+
else {
|
|
14
|
+
return PrimerSettings()
|
|
15
|
+
}
|
|
65
16
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
17
|
+
var paymentHandling: PrimerPaymentHandling = .auto
|
|
18
|
+
if let rnPaymentHandling = settingsJson["paymentHandling"] as? String,
|
|
19
|
+
rnPaymentHandling == "MANUAL" {
|
|
20
|
+
paymentHandling = .manual
|
|
21
|
+
}
|
|
71
22
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
fileprivate struct OrderItemRN: Decodable {
|
|
79
|
-
let name: String
|
|
80
|
-
let unitAmount: Int?
|
|
81
|
-
let quantity: Int
|
|
82
|
-
let isPending: Bool?
|
|
83
|
-
}
|
|
23
|
+
let rnLocaleDataLanguageCode = (settingsJson["localeData"] as? [String: Any])?["languageCode"] as? String
|
|
24
|
+
let rnLocaleDataLocaleCode = (settingsJson["localeData"] as? [String: Any])?["localeCode"] as? String
|
|
25
|
+
let localeData = PrimerLocaleData(
|
|
26
|
+
languageCode: rnLocaleDataLanguageCode,
|
|
27
|
+
regionCode: rnLocaleDataLocaleCode)
|
|
84
28
|
|
|
85
|
-
|
|
86
|
-
func primerFormat() throws -> OrderItem {
|
|
87
|
-
return try OrderItem(
|
|
88
|
-
name: name,
|
|
89
|
-
unitAmount: unitAmount,
|
|
90
|
-
quantity: quantity,
|
|
91
|
-
isPending: isPending ?? false
|
|
92
|
-
)
|
|
93
|
-
}
|
|
94
|
-
}
|
|
29
|
+
let rnUrlScheme = ((settingsJson["paymentMethodOptions"] as? [String: Any])?["iOS"] as? [String: Any])?["urlScheme"] as? String
|
|
95
30
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
}
|
|
31
|
+
var applePayOptions: PrimerApplePayOptions?
|
|
32
|
+
if let rnApplePayOptions = ((settingsJson["paymentMethodOptions"] as? [String: Any])?["applePayOptions"] as? [String: Any]),
|
|
33
|
+
let rnApplePayMerchantIdentifier = rnApplePayOptions["merchantIdentifier"] as? String,
|
|
34
|
+
let rnApplePayMerchantName = rnApplePayOptions["merchantName"] as? String {
|
|
35
|
+
applePayOptions = PrimerApplePayOptions(merchantIdentifier: rnApplePayMerchantIdentifier, merchantName: rnApplePayMerchantName)
|
|
36
|
+
}
|
|
103
37
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
address: address?.primerFormat
|
|
109
|
-
)
|
|
110
|
-
}
|
|
111
|
-
}
|
|
38
|
+
var klarnaOptions: PrimerKlarnaOptions?
|
|
39
|
+
if let rnKlarnaRecurringPaymentDescription = ((settingsJson["paymentMethodOptions"] as? [String: Any])?["klarnaOptions"] as? [String: Any])?["recurringPaymentDescription"] as? String {
|
|
40
|
+
klarnaOptions = PrimerKlarnaOptions(recurringPaymentDescription: rnKlarnaRecurringPaymentDescription)
|
|
41
|
+
}
|
|
112
42
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
let email: String?
|
|
118
|
-
let phone: String?
|
|
119
|
-
let billing: AddressRN?
|
|
120
|
-
}
|
|
43
|
+
var cardPaymentOptions: PrimerCardPaymentOptions?
|
|
44
|
+
if let rnIs3DSOnVaultingEnabled = ((settingsJson["paymentMethodOptions"] as? [String: Any])?["cardPaymentOptions"] as? [String: Any])?["is3DSOnVaultingEnabled"] as? Bool {
|
|
45
|
+
cardPaymentOptions = PrimerCardPaymentOptions(is3DSOnVaultingEnabled: rnIs3DSOnVaultingEnabled)
|
|
46
|
+
}
|
|
121
47
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
let line2: String?
|
|
125
|
-
let postalCode: String?
|
|
126
|
-
let city: String?
|
|
127
|
-
let state: String?
|
|
128
|
-
let country: CountryCode?
|
|
129
|
-
}
|
|
48
|
+
var uiOptions: PrimerUIOptions?
|
|
49
|
+
if let rnUIOptions = settingsJson["uiOptions"] as? [String: Any] {
|
|
130
50
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
state: state,
|
|
138
|
-
countryCode: country?.rawValue,
|
|
139
|
-
postalCode: postalCode
|
|
140
|
-
)
|
|
141
|
-
}
|
|
142
|
-
}
|
|
51
|
+
var theme: PrimerTheme?
|
|
52
|
+
if let rnTheme = rnUIOptions["theme"] as? [String: Any] {
|
|
53
|
+
let rnThemeData = (try JSONSerialization.data(withJSONObject: rnTheme))
|
|
54
|
+
let rnTheme = try JSONDecoder().decode(PrimerThemeRN.self, from: rnThemeData)
|
|
55
|
+
theme = rnTheme.asPrimerTheme()
|
|
56
|
+
}
|
|
143
57
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
let locale: String?
|
|
151
|
-
let ios: IosOptionsRN?
|
|
152
|
-
}
|
|
58
|
+
uiOptions = PrimerUIOptions(
|
|
59
|
+
isInitScreenEnabled: rnUIOptions["isInitScreenEnabled"] as? Bool,
|
|
60
|
+
isSuccessScreenEnabled: rnUIOptions["isSuccessScreenEnabled"] as? Bool,
|
|
61
|
+
isErrorScreenEnabled: rnUIOptions["isErrorScreenEnabled"] as? Bool,
|
|
62
|
+
theme: theme)
|
|
63
|
+
}
|
|
153
64
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
65
|
+
var debugOptions: PrimerDebugOptions?
|
|
66
|
+
if let rnIs3DSSanityCheckEnabled = (settingsJson["debugOptions"] as? [String: Any])?["is3DSSanityCheckEnabled"] as? Bool {
|
|
67
|
+
debugOptions = PrimerDebugOptions(is3DSSanityCheckEnabled: rnIs3DSSanityCheckEnabled)
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
let paymentMethodOptions = PrimerPaymentMethodOptions(
|
|
72
|
+
urlScheme: rnUrlScheme,
|
|
73
|
+
applePayOptions: applePayOptions,
|
|
74
|
+
klarnaOptions: klarnaOptions,
|
|
75
|
+
cardPaymentOptions: cardPaymentOptions)
|
|
159
76
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
77
|
+
let settings = PrimerSettings(
|
|
78
|
+
paymentHandling: paymentHandling,
|
|
79
|
+
localeData: localeData,
|
|
80
|
+
paymentMethodOptions: paymentMethodOptions,
|
|
81
|
+
uiOptions: uiOptions,
|
|
82
|
+
debugOptions: debugOptions)
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
return settings
|
|
86
|
+
}
|
|
164
87
|
}
|