@primer-io/react-native 0.6.5 → 0.7.0-beta
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 +4 -6
- package/android/.gradle/7.0.2/dependencies-accessors/dependencies-accessors.lock +0 -0
- package/android/.gradle/7.0.2/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/7.0.2/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +1 -1
- package/android/.gradle/checksums/checksums.lock +0 -0
- package/android/.gradle/checksums/md5-checksums.bin +0 -0
- package/android/.gradle/checksums/sha1-checksums.bin +0 -0
- package/android/build.gradle +1 -1
- package/android/src/main/java/com/primerioreactnative/PrimerRN.kt +53 -3
- package/android/src/main/java/com/primerioreactnative/PrimerRNEventListener.kt +30 -2
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerOnClientSessionActionsRequestRN.kt +42 -0
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerRequestRN.kt +2 -2
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerSettingsRN.kt +1 -1
- package/android/src/main/java/com/primerioreactnative/utils/PrimerEventQueueRN.kt +0 -2
- package/ios/DataModels/PrimerErrorRN.swift +4 -0
- package/ios/DataModels/PrimerRequestRN.swift +1 -1
- package/ios/DataModels/PrimerSettingsRN.swift +1 -1
- package/ios/PrimerRN+PrimerDelegate.swift +61 -3
- package/ios/PrimerRN.swift +38 -4
- package/ios/ReactNative.m +6 -0
- package/lib/commonjs/Primer.js +98 -4
- package/lib/commonjs/Primer.js.map +1 -1
- package/lib/commonjs/models/client-session-actions-request.js +2 -0
- package/lib/commonjs/models/client-session-actions-request.js.map +1 -0
- package/lib/module/Primer.js +98 -4
- package/lib/module/Primer.js.map +1 -1
- package/lib/module/models/client-session-actions-request.js +2 -0
- package/lib/module/models/client-session-actions-request.js.map +1 -0
- package/lib/typescript/models/client-session-actions-request.d.ts +11 -0
- package/lib/typescript/models/primer-callbacks.d.ts +2 -0
- package/lib/typescript/models/primer-config.d.ts +3 -1
- package/lib/typescript/models/primer-request.d.ts +13 -2
- package/package.json +1 -1
- package/primer-io-react-native.podspec +1 -1
- package/src/Primer.ts +62 -4
- package/src/models/client-session-actions-request.ts +13 -0
- package/src/models/primer-callbacks.ts +6 -0
- package/src/models/primer-config.ts +6 -0
- package/src/models/primer-request.ts +18 -2
- package/android/.gradle/7.0.2/fileHashes/fileHashes.bin +0 -0
- package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
- package/android/.idea/.gitignore +0 -3
- package/android/.idea/compiler.xml +0 -6
- package/android/.idea/gradle.xml +0 -18
- package/android/.idea/jarRepositories.xml +0 -35
- package/android/.idea/libraries/Gradle__androidx_activity_activity_1_2_0_beta01_aar.xml +0 -16
- package/android/.idea/libraries/Gradle__androidx_annotation_annotation_1_1_0.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_1_2_0_aar.xml +0 -16
- package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_resources_1_2_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_arch_core_core_common_2_1_0.xml +0 -11
- package/android/.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_1_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_collection_collection_1_1_0.xml +0 -11
- package/android/.idea/libraries/Gradle__androidx_core_core_1_3_2_aar.xml +0 -16
- package/android/.idea/libraries/Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_customview_customview_1_0_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_databinding_viewbinding_7_0_1_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml +0 -16
- package/android/.idea/libraries/Gradle__androidx_fragment_fragment_1_2_5_aar.xml +0 -16
- package/android/.idea/libraries/Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_common_2_3_1.xml +0 -11
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_2_3_1_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_core_2_3_1_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_3_1_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_3_1_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_savedstate_2_3_1_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_loader_loader_1_0_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_savedstate_savedstate_1_1_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_swiperefreshlayout_swiperefreshlayout_1_0_0_aar.xml +0 -16
- package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_1_1_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_animated_1_1_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_1_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__com_facebook_fbjni_fbjni_java_only_0_0_3.xml +0 -13
- package/android/.idea/libraries/Gradle__com_facebook_fresco_drawee_2_0_0_aar.xml +0 -15
- package/android/.idea/libraries/Gradle__com_facebook_fresco_fbcore_2_0_0_aar.xml +0 -18
- package/android/.idea/libraries/Gradle__com_facebook_fresco_fresco_2_0_0_aar.xml +0 -18
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_2_0_0_aar.xml +0 -18
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_base_2_0_0_aar.xml +0 -18
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_okhttp3_2_0_0_aar.xml +0 -15
- package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagefilters_2_0_0_aar.xml +0 -15
- package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagetranscoder_2_0_0_aar.xml +0 -15
- package/android/.idea/libraries/Gradle__com_facebook_infer_annotation_infer_annotation_0_11_2.xml +0 -13
- package/android/.idea/libraries/Gradle__com_facebook_react_react_native_0_63_4_aar.xml +0 -18
- package/android/.idea/libraries/Gradle__com_facebook_soloader_annotation_0_9_0.xml +0 -13
- package/android/.idea/libraries/Gradle__com_facebook_soloader_nativeloader_0_9_0.xml +0 -13
- package/android/.idea/libraries/Gradle__com_facebook_soloader_soloader_0_9_0_aar.xml +0 -15
- package/android/.idea/libraries/Gradle__com_facebook_yoga_proguard_annotations_1_14_1.xml +0 -13
- package/android/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_3_0_2.xml +0 -13
- package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_3_12_12.xml +0 -13
- package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_urlconnection_3_12_12.xml +0 -13
- package/android/.idea/libraries/Gradle__com_squareup_okio_okio_1_15_0.xml +0 -13
- package/android/.idea/libraries/Gradle__io_primer_android_1_0_0_aar.xml +0 -15
- package/android/.idea/libraries/Gradle__javax_inject_javax_inject_1.xml +0 -13
- package/android/.idea/libraries/Gradle__org_jetbrains_annotations_13_0.xml +0 -13
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_5_21.xml +0 -13
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_5_21.xml +0 -13
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlinx_kotlinx_serialization_core_jvm_1_2_2.xml +0 -13
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlinx_kotlinx_serialization_json_jvm_1_2_2.xml +0 -13
- package/android/.idea/misc.xml +0 -9
- package/android/.idea/modules/android.iml +0 -126
- package/android/.idea/modules.xml +0 -8
- package/android/.idea/vcs.xml +0 -6
- package/android/local.properties +0 -8
package/README.md
CHANGED
|
@@ -43,15 +43,13 @@ import { Primer } from '@primer-io/react-native';
|
|
|
43
43
|
const token: string = await fetchClientToken();
|
|
44
44
|
|
|
45
45
|
// configure listeners and settings.
|
|
46
|
-
const onTokenizeSuccess = (t, handler) => {
|
|
47
|
-
|
|
48
|
-
handler.
|
|
46
|
+
const onTokenizeSuccess = async (t, handler) => {
|
|
47
|
+
const payment = await createPayment(t);
|
|
48
|
+
handler.handleSuccess(); // resume the checkout flow with success message.
|
|
49
49
|
};
|
|
50
50
|
|
|
51
|
-
const settings = { order: { amount: 50, currency: 'GBP' } };
|
|
52
|
-
|
|
53
51
|
// show Universal Checkout with client token and config.
|
|
54
|
-
Primer.showUniversalCheckout(token, { onTokenizeSuccess
|
|
52
|
+
Primer.showUniversalCheckout(token, { onTokenizeSuccess });
|
|
55
53
|
```
|
|
56
54
|
|
|
57
55
|
For more info & help troubleshooting, check out our 🔥 [docs](https://www.notion.so/primerio/Quick-Start-6c5eb61e5bbe426ca66244259e06048e)
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
#Tue
|
|
1
|
+
#Tue Nov 30 22:24:16 GMT 2021
|
|
2
2
|
gradle.version=7.0.2
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/android/build.gradle
CHANGED
|
@@ -128,5 +128,5 @@ dependencies {
|
|
|
128
128
|
api 'com.facebook.react:react-native:+'
|
|
129
129
|
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
|
130
130
|
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.2.2"
|
|
131
|
-
implementation 'io.primer:android:1.
|
|
131
|
+
implementation 'io.primer:android:1.5.0'
|
|
132
132
|
}
|
|
@@ -8,11 +8,11 @@ import com.facebook.react.bridge.ReactContextBaseJavaModule
|
|
|
8
8
|
import com.facebook.react.bridge.ReactMethod
|
|
9
9
|
import com.primerioreactnative.datamodels.*
|
|
10
10
|
import io.primer.android.Primer
|
|
11
|
-
import io.primer.android.model.PrimerDebugOptions
|
|
12
11
|
import io.primer.android.model.dto.*
|
|
13
12
|
import kotlinx.serialization.decodeFromString
|
|
14
13
|
import kotlinx.serialization.encodeToString
|
|
15
14
|
import kotlinx.serialization.json.Json
|
|
15
|
+
import kotlin.Error
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
class PrimerRN(reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext) {
|
|
@@ -89,6 +89,16 @@ class PrimerRN(reactContext: ReactApplicationContext) : ReactContextBaseJavaModu
|
|
|
89
89
|
mListener.configureOnTokenizeSuccess(callback)
|
|
90
90
|
}
|
|
91
91
|
|
|
92
|
+
@ReactMethod
|
|
93
|
+
fun configureOnClientSessionActions(callback: Callback) {
|
|
94
|
+
mListener.configureOnClientSessionActions(callback)
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
@ReactMethod
|
|
98
|
+
fun configureOnResumeSuccess(callback: Callback) {
|
|
99
|
+
mListener.configureOnResumeSuccess(callback)
|
|
100
|
+
}
|
|
101
|
+
|
|
92
102
|
@ReactMethod
|
|
93
103
|
fun configureOnVaultSuccess(callback: Callback) {
|
|
94
104
|
mListener.configureOnVaultSuccess(callback)
|
|
@@ -123,10 +133,26 @@ class PrimerRN(reactContext: ReactApplicationContext) : ReactContextBaseJavaModu
|
|
|
123
133
|
mListener.completion = { error, clientToken ->
|
|
124
134
|
currentActivity?.let {
|
|
125
135
|
it.runOnUiThread {
|
|
136
|
+
if (error != null) {
|
|
137
|
+
mListener.resumeHandler?.handleError(Error(error))
|
|
138
|
+
} else {
|
|
139
|
+
if (clientToken == null) {
|
|
140
|
+
mListener.resumeHandler?.handleSuccess()
|
|
141
|
+
} else {
|
|
142
|
+
mListener.resumeHandler?.handleNewClientToken(clientToken)
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
126
148
|
|
|
127
|
-
|
|
149
|
+
mListener.actionCompletion = { error, clientToken ->
|
|
150
|
+
currentActivity?.let {
|
|
151
|
+
it.runOnUiThread {
|
|
152
|
+
if (error != null) {
|
|
153
|
+
mListener.actionResumeHandler?.handleError(Error(error))
|
|
128
154
|
} else {
|
|
129
|
-
|
|
155
|
+
mListener.actionResumeHandler?.handleClientToken(clientToken)
|
|
130
156
|
}
|
|
131
157
|
}
|
|
132
158
|
}
|
|
@@ -191,4 +217,28 @@ class PrimerRN(reactContext: ReactApplicationContext) : ReactContextBaseJavaModu
|
|
|
191
217
|
haltExecution = true
|
|
192
218
|
}
|
|
193
219
|
}
|
|
220
|
+
|
|
221
|
+
@ReactMethod
|
|
222
|
+
fun actionResume(request: String) {
|
|
223
|
+
try {
|
|
224
|
+
Log.d("PrimerRN", "resume: $request")
|
|
225
|
+
val data = json.decodeFromString<PrimerResumeRequest>(request)
|
|
226
|
+
mListener.actionCompletion?.invoke(data.error, data.token)
|
|
227
|
+
|
|
228
|
+
mListener.actionCompletion = { error, clientToken ->
|
|
229
|
+
currentActivity?.let {
|
|
230
|
+
it.runOnUiThread {
|
|
231
|
+
if (error != null) {
|
|
232
|
+
mListener.actionResumeHandler?.handleError(Error(error))
|
|
233
|
+
} else {
|
|
234
|
+
mListener.actionResumeHandler?.handleClientToken(clientToken)
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
} catch (e: Exception) {
|
|
241
|
+
Log.e("PrimerRN", "configure settings error: $e")
|
|
242
|
+
}
|
|
243
|
+
}
|
|
194
244
|
}
|
|
@@ -4,10 +4,11 @@ import android.util.Log
|
|
|
4
4
|
import com.facebook.react.bridge.Callback
|
|
5
5
|
import com.primerioreactnative.datamodels.ErrorTypeRN
|
|
6
6
|
import com.primerioreactnative.datamodels.PrimerErrorRN
|
|
7
|
+
import com.primerioreactnative.datamodels.PrimerOnClientSessionActionsRequestRN
|
|
7
8
|
import com.primerioreactnative.datamodels.PrimerPaymentInstrumentTokenRN
|
|
8
9
|
import com.primerioreactnative.utils.PrimerEventQueueRN
|
|
9
10
|
import io.primer.android.CheckoutEventListener
|
|
10
|
-
import io.primer.android.
|
|
11
|
+
import io.primer.android.completion.ActionResumeHandler
|
|
11
12
|
import io.primer.android.completion.ResumeHandler
|
|
12
13
|
import io.primer.android.events.CheckoutEvent
|
|
13
14
|
import kotlinx.serialization.encodeToString
|
|
@@ -16,20 +17,34 @@ import kotlinx.serialization.json.Json
|
|
|
16
17
|
class PrimerRNEventListener : CheckoutEventListener {
|
|
17
18
|
|
|
18
19
|
private var onTokenizeSuccessQueue: PrimerEventQueueRN? = null
|
|
20
|
+
private var onClientSessionActionsQueue: PrimerEventQueueRN? = null
|
|
21
|
+
private var onResumeSuccessQueue: PrimerEventQueueRN? = null
|
|
19
22
|
private var onVaultSuccessQueue: PrimerEventQueueRN? = null
|
|
20
23
|
private var onDismissQueue: PrimerEventQueueRN? = null
|
|
21
24
|
var onPrimerErrorQueue: PrimerEventQueueRN? = null
|
|
22
25
|
var onSavedPaymentInstrumentsFetchedQueue: PrimerEventQueueRN? = null
|
|
23
26
|
|
|
24
|
-
var completion: ((error:
|
|
27
|
+
var completion: ((error: String?, token: String?) -> Unit)? = null
|
|
28
|
+
var actionCompletion: ((error: String?, token: String?) -> Unit)? = null
|
|
25
29
|
|
|
26
30
|
var resumeHandler: ResumeHandler? = null
|
|
31
|
+
var actionResumeHandler: ActionResumeHandler? = null
|
|
27
32
|
|
|
28
33
|
fun configureOnTokenizeSuccess(callback: Callback) {
|
|
29
34
|
onTokenizeSuccessQueue = PrimerEventQueueRN()
|
|
30
35
|
onTokenizeSuccessQueue?.poll(callback)
|
|
31
36
|
}
|
|
32
37
|
|
|
38
|
+
fun configureOnClientSessionActions(callback: Callback) {
|
|
39
|
+
onClientSessionActionsQueue = PrimerEventQueueRN()
|
|
40
|
+
onClientSessionActionsQueue?.poll(callback)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
fun configureOnResumeSuccess(callback: Callback) {
|
|
44
|
+
onResumeSuccessQueue = PrimerEventQueueRN()
|
|
45
|
+
onResumeSuccessQueue?.poll(callback)
|
|
46
|
+
}
|
|
47
|
+
|
|
33
48
|
fun configureOnVaultSuccess(callback: Callback) {
|
|
34
49
|
onVaultSuccessQueue = PrimerEventQueueRN()
|
|
35
50
|
onVaultSuccessQueue?.poll(callback)
|
|
@@ -50,6 +65,14 @@ class PrimerRNEventListener : CheckoutEventListener {
|
|
|
50
65
|
onSavedPaymentInstrumentsFetchedQueue?.poll(callback)
|
|
51
66
|
}
|
|
52
67
|
|
|
68
|
+
override fun onClientSessionActions(event: CheckoutEvent.OnClientSessionActions) {
|
|
69
|
+
val token = PrimerOnClientSessionActionsRequestRN.build(event.data)
|
|
70
|
+
val request = Json.encodeToString(token)
|
|
71
|
+
|
|
72
|
+
onClientSessionActionsQueue?.addRequestAndPoll(request)
|
|
73
|
+
actionResumeHandler = event.resumeHandler
|
|
74
|
+
}
|
|
75
|
+
|
|
53
76
|
override fun onCheckoutEvent(e: CheckoutEvent) {
|
|
54
77
|
when (e) {
|
|
55
78
|
is CheckoutEvent.TokenAddedToVault -> {
|
|
@@ -68,6 +91,11 @@ class PrimerRNEventListener : CheckoutEventListener {
|
|
|
68
91
|
val request = Json.encodeToString(token)
|
|
69
92
|
onTokenizeSuccessQueue?.addRequestAndPoll(request)
|
|
70
93
|
}
|
|
94
|
+
is CheckoutEvent.ResumeSuccess -> {
|
|
95
|
+
val token = e.resumeToken
|
|
96
|
+
onResumeSuccessQueue?.addRequestAndPoll(token)
|
|
97
|
+
resumeHandler = e.resumeHandler
|
|
98
|
+
}
|
|
71
99
|
is CheckoutEvent.SavedPaymentInstrumentsFetched -> {
|
|
72
100
|
val list = e.data.map { PrimerPaymentInstrumentTokenRN.fromPaymentMethodToken(it) }
|
|
73
101
|
val request = Json.encodeToString(list)
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
package com.primerioreactnative.datamodels
|
|
2
|
+
|
|
3
|
+
import io.primer.android.data.action.models.ClientSessionActionsRequest
|
|
4
|
+
import kotlinx.serialization.Serializable
|
|
5
|
+
|
|
6
|
+
@Serializable
|
|
7
|
+
data class PrimerOnClientSessionActionsRequestRN(
|
|
8
|
+
val actions: List<Action>,
|
|
9
|
+
) {
|
|
10
|
+
|
|
11
|
+
@Serializable
|
|
12
|
+
data class Action(
|
|
13
|
+
val type: String,
|
|
14
|
+
val paymentMethodType: String? = null,
|
|
15
|
+
val network: String? = null,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
companion object {
|
|
19
|
+
fun build(
|
|
20
|
+
request: ClientSessionActionsRequest,
|
|
21
|
+
): PrimerOnClientSessionActionsRequestRN {
|
|
22
|
+
return PrimerOnClientSessionActionsRequestRN(
|
|
23
|
+
actions = request.actions.map { action ->
|
|
24
|
+
when (action) {
|
|
25
|
+
is ClientSessionActionsRequest.SetPaymentMethod -> {
|
|
26
|
+
Action(
|
|
27
|
+
type = "SET_PAYMENT_METHOD",
|
|
28
|
+
paymentMethodType = action.paymentMethodType,
|
|
29
|
+
network = action.network,
|
|
30
|
+
)
|
|
31
|
+
}
|
|
32
|
+
is ClientSessionActionsRequest.UnsetPaymentMethod -> {
|
|
33
|
+
Action(
|
|
34
|
+
type = "UNSET_PAYMENT_METHOD",
|
|
35
|
+
)
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
)
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -16,7 +16,7 @@ class PrimerSettingsRN(
|
|
|
16
16
|
val customer = customer?.format() ?: Customer()
|
|
17
17
|
val business = business?.format() ?: Business()
|
|
18
18
|
val options = options?.format() ?: Options()
|
|
19
|
-
return PrimerSettings(order,
|
|
19
|
+
return PrimerSettings(order, customer, business, options)
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
|
|
@@ -39,7 +39,7 @@ extension PrimerSettingsRN {
|
|
|
39
39
|
customer: Customer(
|
|
40
40
|
firstName: customer?.firstName,
|
|
41
41
|
lastName: customer?.lastName,
|
|
42
|
-
|
|
42
|
+
emailAddress: customer?.email,
|
|
43
43
|
homePhoneNumber: nil,
|
|
44
44
|
mobilePhoneNumber: customer?.phone,
|
|
45
45
|
workPhoneNumber: nil,
|
|
@@ -28,13 +28,71 @@ extension PrimerRN: PrimerDelegate {
|
|
|
28
28
|
} catch {
|
|
29
29
|
checkoutFailed(with: ErrorTypeRN.ParseJsonFailed)
|
|
30
30
|
}
|
|
31
|
-
onResumeFlowCallback = { error,
|
|
31
|
+
onResumeFlowCallback = { error, clientToken in
|
|
32
|
+
if let error = error {
|
|
33
|
+
resumeHandler.handle(error: error)
|
|
34
|
+
} else if let clientToken = clientToken {
|
|
35
|
+
resumeHandler.handle(newClientToken: clientToken)
|
|
36
|
+
} else {
|
|
37
|
+
resumeHandler.handleSuccess()
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
func onClientSessionActions(_ actions: [ClientSession.Action], resumeHandler: ResumeHandlerProtocol?) {
|
|
43
|
+
do {
|
|
44
|
+
let actionsRN: [[String: String?]] = actions.compactMap {
|
|
45
|
+
|
|
46
|
+
if ($0.`type` == "SELECT_PAYMENT_METHOD") {
|
|
47
|
+
let network = ($0.params?["binData"] as? [String: Any])?["network"] as? String
|
|
48
|
+
return [
|
|
49
|
+
"type": "SET_PAYMENT_METHOD",
|
|
50
|
+
"paymentMethodType": $0.params?["paymentMethodType"] as? String,
|
|
51
|
+
"network": network,
|
|
52
|
+
]
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
if ($0.`type` == "UNSELECT_PAYMENT_METHOD") {
|
|
56
|
+
return [
|
|
57
|
+
"type": "UNSET_PAYMENT_METHOD",
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return [ "type": "UNKNOWN" ]
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
let request: [String: Any] = [
|
|
65
|
+
"actions": actionsRN
|
|
66
|
+
]
|
|
67
|
+
|
|
68
|
+
let data = try JSONSerialization.data(withJSONObject: request, options: .fragmentsAllowed)
|
|
69
|
+
let jsonString = String(data: data, encoding: .utf8)!
|
|
70
|
+
self.onClientSessionActionsCallback?([jsonString])
|
|
71
|
+
} catch {
|
|
72
|
+
checkoutFailed(with: ErrorTypeRN.ParseJsonFailed)
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
onActionResumeCallback = { error, token in
|
|
32
76
|
if let token = token {
|
|
33
|
-
resumeHandler
|
|
77
|
+
resumeHandler?.handle(newClientToken: token)
|
|
34
78
|
} else if let error = error {
|
|
79
|
+
resumeHandler?.handle(error: error)
|
|
80
|
+
} else {
|
|
81
|
+
resumeHandler?.handle(error: PrimerError.generic)
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
func onResumeSuccess(_ clientToken: String, resumeHandler: ResumeHandlerProtocol) {
|
|
87
|
+
self.onResumeSuccessCallback?([clientToken])
|
|
88
|
+
|
|
89
|
+
onResumeFlowCallback = { error, clientToken in
|
|
90
|
+
if let error = error {
|
|
35
91
|
resumeHandler.handle(error: error)
|
|
92
|
+
} else if let clientToken = clientToken {
|
|
93
|
+
resumeHandler.handle(newClientToken: clientToken)
|
|
36
94
|
} else {
|
|
37
|
-
resumeHandler.
|
|
95
|
+
resumeHandler.handleSuccess()
|
|
38
96
|
}
|
|
39
97
|
}
|
|
40
98
|
}
|
package/ios/PrimerRN.swift
CHANGED
|
@@ -17,10 +17,13 @@ class PrimerRN: NSObject {
|
|
|
17
17
|
var theme: PrimerThemeRN?
|
|
18
18
|
var flow: PrimerSessionFlow?
|
|
19
19
|
var onTokenizeSuccessCallback: RCTResponseSenderBlock?
|
|
20
|
+
var onClientSessionActionsCallback: RCTResponseSenderBlock?
|
|
21
|
+
var onResumeSuccessCallback: RCTResponseSenderBlock?
|
|
20
22
|
var onVaultSuccessCallback: RCTResponseSenderBlock?
|
|
21
23
|
var onDismissCallback: RCTResponseSenderBlock?
|
|
22
24
|
var onPrimerErrorCallback: RCTResponseSenderBlock?
|
|
23
25
|
var onResumeFlowCallback: BasicCompletionBlock?
|
|
26
|
+
var onActionResumeCallback: BasicCompletionBlock?
|
|
24
27
|
var onSavedPaymentInstrumentsFetchedCallback: RCTResponseSenderBlock?
|
|
25
28
|
|
|
26
29
|
private var sdkWasInitialised = false
|
|
@@ -60,6 +63,14 @@ class PrimerRN: NSObject {
|
|
|
60
63
|
self.onTokenizeSuccessCallback = callback
|
|
61
64
|
}
|
|
62
65
|
|
|
66
|
+
@objc func configureOnClientSessionActions(_ callback: @escaping RCTResponseSenderBlock) {
|
|
67
|
+
self.onClientSessionActionsCallback = callback
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
@objc func configureOnResumeSuccess(_ callback: @escaping RCTResponseSenderBlock) {
|
|
71
|
+
self.onResumeSuccessCallback = callback
|
|
72
|
+
}
|
|
73
|
+
|
|
63
74
|
@objc func configureOnVaultSuccess(_ callback: @escaping RCTResponseSenderBlock) {
|
|
64
75
|
self.onVaultSuccessCallback = callback
|
|
65
76
|
}
|
|
@@ -122,7 +133,6 @@ class PrimerRN: NSObject {
|
|
|
122
133
|
Primer.shared.delegate = self
|
|
123
134
|
Primer.shared.configure(settings: settings, theme: theme)
|
|
124
135
|
Primer.shared.showCheckout(viewController, flow: flow)
|
|
125
|
-
|
|
126
136
|
} catch {
|
|
127
137
|
self?.checkoutFailed(with: error)
|
|
128
138
|
}
|
|
@@ -135,11 +145,14 @@ class PrimerRN: NSObject {
|
|
|
135
145
|
let json = request.data(using: .utf8)!
|
|
136
146
|
let request = try JSONDecoder().decode(PrimerResumeRequest.self, from: json)
|
|
137
147
|
|
|
138
|
-
if
|
|
139
|
-
self?.onResumeFlowCallback?(
|
|
148
|
+
if let error = request.error {
|
|
149
|
+
self?.onResumeFlowCallback?(ErrorRN(message: error), nil)
|
|
150
|
+
} else if let clientToken = request.token {
|
|
151
|
+
self?.onResumeFlowCallback?(nil, clientToken)
|
|
140
152
|
} else {
|
|
141
|
-
self?.onResumeFlowCallback?(nil,
|
|
153
|
+
self?.onResumeFlowCallback?(nil, nil)
|
|
142
154
|
}
|
|
155
|
+
|
|
143
156
|
self?.onResumeFlowCallback = nil
|
|
144
157
|
} catch {
|
|
145
158
|
self?.checkoutFailed(with: error)
|
|
@@ -147,6 +160,27 @@ class PrimerRN: NSObject {
|
|
|
147
160
|
}
|
|
148
161
|
}
|
|
149
162
|
|
|
163
|
+
@objc func actionResume(_ request: String) -> Void {
|
|
164
|
+
DispatchQueue.main.async { [weak self] in
|
|
165
|
+
do {
|
|
166
|
+
let json = request.data(using: .utf8)!
|
|
167
|
+
let request = try JSONDecoder().decode(PrimerResumeRequest.self, from: json)
|
|
168
|
+
|
|
169
|
+
if let error = request.error {
|
|
170
|
+
self?.onActionResumeCallback?(ErrorRN(message: error), nil)
|
|
171
|
+
} else if let clientToken = request.token {
|
|
172
|
+
self?.onActionResumeCallback?(nil, clientToken)
|
|
173
|
+
} else {
|
|
174
|
+
self?.onActionResumeCallback?(nil, nil)
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
self?.onActionResumeCallback = nil
|
|
178
|
+
} catch {
|
|
179
|
+
self?.checkoutFailed(with: error)
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
150
184
|
@objc func dispose() -> Void {
|
|
151
185
|
|
|
152
186
|
}
|
package/ios/ReactNative.m
CHANGED
|
@@ -11,6 +11,10 @@ RCT_EXTERN_METHOD(configureIntent: (NSString *)request)
|
|
|
11
11
|
|
|
12
12
|
RCT_EXTERN_METHOD(configureOnTokenizeSuccess: (RCTResponseSenderBlock)callback)
|
|
13
13
|
|
|
14
|
+
RCT_EXTERN_METHOD(configureOnClientSessionActions: (RCTResponseSenderBlock)callback)
|
|
15
|
+
|
|
16
|
+
RCT_EXTERN_METHOD(configureOnResumeSuccess: (RCTResponseSenderBlock)callback)
|
|
17
|
+
|
|
14
18
|
RCT_EXTERN_METHOD(configureOnVaultSuccess: (RCTResponseSenderBlock)callback)
|
|
15
19
|
|
|
16
20
|
RCT_EXTERN_METHOD(configureOnDismiss: (RCTResponseSenderBlock)callback)
|
|
@@ -25,6 +29,8 @@ RCT_EXTERN_METHOD(initialize: (NSString *)data)
|
|
|
25
29
|
|
|
26
30
|
RCT_EXTERN_METHOD(resume: (NSString *)data)
|
|
27
31
|
|
|
32
|
+
RCT_EXTERN_METHOD(actionResume: (NSString *)data)
|
|
33
|
+
|
|
28
34
|
RCT_EXTERN_METHOD(dispose)
|
|
29
35
|
|
|
30
36
|
@end
|
package/lib/commonjs/Primer.js
CHANGED
|
@@ -56,6 +56,8 @@ function configure(config) {
|
|
|
56
56
|
configureOnDismiss(config.onDismiss);
|
|
57
57
|
configureOnError(config.onError);
|
|
58
58
|
configureOnTokenizeSuccess(config.onTokenizeSuccess);
|
|
59
|
+
configureOnClientSessionActions(config.onClientSessionActions);
|
|
60
|
+
configureOnResumeSuccess(config.onResumeSuccess);
|
|
59
61
|
configureOnSavedPaymentInstrumentsFetched(config.onSavedPaymentInstrumentsFetched);
|
|
60
62
|
}
|
|
61
63
|
|
|
@@ -87,12 +89,104 @@ function configureOnTokenizeSuccess(callback = (_, __) => {}) {
|
|
|
87
89
|
try {
|
|
88
90
|
const parsedData = JSON.parse(data);
|
|
89
91
|
callback(parsedData, {
|
|
90
|
-
|
|
91
|
-
error
|
|
92
|
-
token:
|
|
92
|
+
handleError: error => resume({
|
|
93
|
+
error,
|
|
94
|
+
token: null
|
|
95
|
+
}),
|
|
96
|
+
handleSuccess: () => resume({
|
|
97
|
+
error: null,
|
|
98
|
+
token: null
|
|
99
|
+
}),
|
|
100
|
+
handleNewClientToken: token => resume({
|
|
101
|
+
error: null,
|
|
102
|
+
token
|
|
103
|
+
}),
|
|
104
|
+
// deprecated
|
|
105
|
+
resumeWithError: error => resume({
|
|
106
|
+
error,
|
|
107
|
+
token: null
|
|
108
|
+
}),
|
|
109
|
+
resumeWithSuccess: token => resume({
|
|
110
|
+
error: null,
|
|
111
|
+
token
|
|
112
|
+
})
|
|
113
|
+
});
|
|
114
|
+
} catch (e) {
|
|
115
|
+
console.log('failed to parse json', e);
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
function actionResume(request) {
|
|
121
|
+
const data = JSON.stringify(request);
|
|
122
|
+
NativeModule.actionResume(data);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
function configureOnClientSessionActions(callback = (_, __) => {
|
|
126
|
+
NativeModule.configureOnClientSessionActions(___ => {
|
|
127
|
+
actionResume({
|
|
128
|
+
error: null,
|
|
129
|
+
token: null
|
|
130
|
+
});
|
|
131
|
+
configureOnClientSessionActions(callback);
|
|
132
|
+
});
|
|
133
|
+
}) {
|
|
134
|
+
NativeModule.configureOnClientSessionActions(data => {
|
|
135
|
+
try {
|
|
136
|
+
const parsedData = JSON.parse(data);
|
|
137
|
+
callback(parsedData, {
|
|
138
|
+
handleError: error => actionResume({
|
|
139
|
+
error,
|
|
140
|
+
token: null
|
|
141
|
+
}),
|
|
142
|
+
handleSuccess: () => actionResume({
|
|
143
|
+
error: null,
|
|
144
|
+
token: null
|
|
145
|
+
}),
|
|
146
|
+
handleNewClientToken: token => actionResume({
|
|
147
|
+
error: null,
|
|
148
|
+
token
|
|
149
|
+
}),
|
|
150
|
+
// deprecated
|
|
151
|
+
resumeWithError: error => actionResume({
|
|
152
|
+
error,
|
|
153
|
+
token: null
|
|
154
|
+
}),
|
|
155
|
+
resumeWithSuccess: token => actionResume({
|
|
156
|
+
error: null,
|
|
157
|
+
token
|
|
158
|
+
})
|
|
159
|
+
});
|
|
160
|
+
configureOnClientSessionActions(callback);
|
|
161
|
+
} catch (e) {
|
|
162
|
+
console.log('[OnClientSessionActions]', 'failed to parse json', e);
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
function configureOnResumeSuccess(callback = (_, __) => {}) {
|
|
168
|
+
NativeModule.configureOnResumeSuccess(paymentMethodToken => {
|
|
169
|
+
try {
|
|
170
|
+
callback(paymentMethodToken, {
|
|
171
|
+
handleError: error => resume({
|
|
172
|
+
error,
|
|
173
|
+
token: null
|
|
174
|
+
}),
|
|
175
|
+
handleSuccess: () => resume({
|
|
176
|
+
error: null,
|
|
177
|
+
token: null
|
|
178
|
+
}),
|
|
179
|
+
handleNewClientToken: token => resume({
|
|
180
|
+
error: null,
|
|
181
|
+
token
|
|
182
|
+
}),
|
|
183
|
+
// deprecated
|
|
184
|
+
resumeWithError: error => resume({
|
|
185
|
+
error,
|
|
186
|
+
token: null
|
|
93
187
|
}),
|
|
94
188
|
resumeWithSuccess: token => resume({
|
|
95
|
-
error:
|
|
189
|
+
error: null,
|
|
96
190
|
token
|
|
97
191
|
})
|
|
98
192
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Primer.ts"],"names":["PrimerRN","NativeModule","NativeModules","PrimerNativeMapping","showUniversalCheckout","token","config","configureIntent","vault","paymentMethod","configure","initialize","showVaultManager","showPaymentMethod","intent","fetchSavedPaymentInstruments","dispose","configureTheme","theme","configureSettings","settings","configureOnVaultSuccess","onTokenAddedToVault","configureOnDismiss","onDismiss","configureOnError","onError","configureOnTokenizeSuccess","onTokenizeSuccess","configureOnSavedPaymentInstrumentsFetched","onSavedPaymentInstrumentsFetched","data","JSON","stringify","resume","request","callback","_","__","parsedData","parse","resumeWithError","error","resumeWithSuccess","e","console","log","configureOnPrimerError"],"mappings":"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","sourcesContent":["import { NativeModules } from 'react-native';\nimport type { PaymentInstrumentToken } from './models/payment-instrument-token';\nimport type { IPrimer } from './models/primer';\nimport type {\n OnDismissCallback,\n OnPrimerErrorCallback,\n OnSavedPaymentInstrumentsFetchedCallback,\n OnTokenAddedToVaultCallback,\n OnTokenizeSuccessCallback,\n} from './models/primer-callbacks';\nimport type { PrimerConfig } from './models/primer-config';\nimport type { PrimerError } from './models/primer-error';\nimport type {\n PrimerIntent,\n PrimerPaymentMethodIntent,\n} from './models/primer-intent';\nimport type { PrimerSettings } from './models/primer-settings';\nimport type { PrimerTheme } from './models/primer-theme';\nimport { parseCallback } from './utils';\n\nconst { PrimerRN: NativeModule } = NativeModules;\n\nexport const PrimerNativeMapping: IPrimer = {\n showUniversalCheckout(token: String, config: PrimerConfig): void {\n configureIntent({ vault: false, paymentMethod: 'Any' });\n configure(config);\n NativeModule.initialize(token);\n },\n\n showVaultManager(token: String, config: PrimerConfig): void {\n configureIntent({ vault: true, paymentMethod: 'Any' });\n configure(config);\n NativeModule.initialize(token);\n },\n\n showPaymentMethod(\n token: String,\n intent: PrimerPaymentMethodIntent,\n config: PrimerConfig\n ): void {\n configureIntent(intent);\n configure(config);\n NativeModule.initialize(token);\n },\n\n fetchSavedPaymentInstruments(token: String, config: PrimerConfig): void {\n configure(config);\n NativeModule.fetchSavedPaymentInstruments(token);\n },\n\n dispose(): void {\n NativeModule.dispose();\n },\n};\n\nfunction configure(config: PrimerConfig): void {\n configureTheme(config.theme);\n configureSettings(config.settings);\n configureOnVaultSuccess(config.onTokenAddedToVault);\n configureOnDismiss(config.onDismiss);\n configureOnError(config.onError);\n configureOnTokenizeSuccess(config.onTokenizeSuccess);\n configureOnSavedPaymentInstrumentsFetched(\n config.onSavedPaymentInstrumentsFetched\n );\n}\n\nfunction configureSettings(settings: PrimerSettings = {}): void {\n const data = JSON.stringify(settings);\n NativeModule.configureSettings(data);\n}\n\nfunction configureTheme(theme: PrimerTheme = {}): void {\n const data = JSON.stringify(theme);\n NativeModule.configureTheme(data);\n}\n\nfunction configureIntent(\n intent: PrimerIntent = { vault: false, paymentMethod: 'Any' }\n): void {\n const data = JSON.stringify(intent);\n NativeModule.configureIntent(data);\n}\n\nfunction resume(request: ResumeRequest) {\n const data = JSON.stringify(request);\n NativeModule.resume(data);\n}\n\nfunction configureOnTokenizeSuccess(\n callback: OnTokenizeSuccessCallback = (_, __) => {}\n) {\n NativeModule.configureOnTokenizeSuccess((data: any) => {\n try {\n const parsedData = JSON.parse(data) as PaymentInstrumentToken;\n callback(parsedData, {\n resumeWithError: () => resume({ error: true, token: '' }),\n resumeWithSuccess: (token) => resume({ error: false, token }),\n });\n } catch (e) {\n console.log('failed to parse json', e);\n }\n });\n}\n\nfunction configureOnVaultSuccess(\n callback: OnTokenAddedToVaultCallback = (_) => {}\n) {\n NativeModule.configureOnVaultSuccess((data: any) => {\n parseCallback<PaymentInstrumentToken>(data, callback);\n });\n}\n\nfunction configureOnDismiss(callback: OnDismissCallback = () => {}) {\n NativeModule.configureOnDismiss((_: any) => callback());\n}\n\nfunction configureOnError(callback: OnPrimerErrorCallback = (_) => {}) {\n NativeModule.configureOnPrimerError((data: any) => {\n parseCallback<PrimerError>(data, callback);\n });\n}\n\nfunction configureOnSavedPaymentInstrumentsFetched(\n callback: OnSavedPaymentInstrumentsFetchedCallback = (_) => {}\n) {\n NativeModule.configureOnSavedPaymentInstrumentsFetched((data: any) => {\n parseCallback<PaymentInstrumentToken[]>(data, callback);\n });\n}\n\ninterface ResumeRequest {\n error: boolean;\n token?: string;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["Primer.ts"],"names":["PrimerRN","NativeModule","NativeModules","PrimerNativeMapping","showUniversalCheckout","token","config","configureIntent","vault","paymentMethod","configure","initialize","showVaultManager","showPaymentMethod","intent","fetchSavedPaymentInstruments","dispose","configureTheme","theme","configureSettings","settings","configureOnVaultSuccess","onTokenAddedToVault","configureOnDismiss","onDismiss","configureOnError","onError","configureOnTokenizeSuccess","onTokenizeSuccess","configureOnClientSessionActions","onClientSessionActions","configureOnResumeSuccess","onResumeSuccess","configureOnSavedPaymentInstrumentsFetched","onSavedPaymentInstrumentsFetched","data","JSON","stringify","resume","request","callback","_","__","parsedData","parse","handleError","error","handleSuccess","handleNewClientToken","resumeWithError","resumeWithSuccess","e","console","log","actionResume","___","paymentMethodToken","configureOnPrimerError"],"mappings":"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","sourcesContent":["import { NativeModules } from 'react-native';\nimport type { ClientSessionActionsRequest } from './models/client-session-actions-request';\nimport type { PaymentInstrumentToken } from './models/payment-instrument-token';\nimport type { IPrimer } from './models/primer';\nimport type {\n OnClientSessionActionsCallback,\n OnDismissCallback,\n OnPrimerErrorCallback,\n OnSavedPaymentInstrumentsFetchedCallback,\n OnTokenAddedToVaultCallback,\n OnTokenizeSuccessCallback,\n} from './models/primer-callbacks';\nimport type { PrimerConfig } from './models/primer-config';\nimport type { PrimerError } from './models/primer-error';\nimport type {\n PrimerIntent,\n PrimerPaymentMethodIntent,\n} from './models/primer-intent';\nimport type { PrimerSettings } from './models/primer-settings';\nimport type { PrimerTheme } from './models/primer-theme';\nimport { parseCallback } from './utils';\n\nconst { PrimerRN: NativeModule } = NativeModules;\n\nexport const PrimerNativeMapping: IPrimer = {\n showUniversalCheckout(token: String, config: PrimerConfig): void {\n configureIntent({ vault: false, paymentMethod: 'Any' });\n configure(config);\n NativeModule.initialize(token);\n },\n\n showVaultManager(token: String, config: PrimerConfig): void {\n configureIntent({ vault: true, paymentMethod: 'Any' });\n configure(config);\n NativeModule.initialize(token);\n },\n\n showPaymentMethod(\n token: String,\n intent: PrimerPaymentMethodIntent,\n config: PrimerConfig\n ): void {\n configureIntent(intent);\n configure(config);\n NativeModule.initialize(token);\n },\n\n fetchSavedPaymentInstruments(token: String, config: PrimerConfig): void {\n configure(config);\n NativeModule.fetchSavedPaymentInstruments(token);\n },\n\n dispose(): void {\n NativeModule.dispose();\n },\n};\n\nfunction configure(config: PrimerConfig): void {\n configureTheme(config.theme);\n configureSettings(config.settings);\n configureOnVaultSuccess(config.onTokenAddedToVault);\n configureOnDismiss(config.onDismiss);\n configureOnError(config.onError);\n configureOnTokenizeSuccess(config.onTokenizeSuccess);\n configureOnClientSessionActions(config.onClientSessionActions);\n configureOnResumeSuccess(config.onResumeSuccess);\n configureOnSavedPaymentInstrumentsFetched(\n config.onSavedPaymentInstrumentsFetched\n );\n}\n\nfunction configureSettings(settings: PrimerSettings = {}): void {\n const data = JSON.stringify(settings);\n NativeModule.configureSettings(data);\n}\n\nfunction configureTheme(theme: PrimerTheme = {}): void {\n const data = JSON.stringify(theme);\n NativeModule.configureTheme(data);\n}\n\nfunction configureIntent(\n intent: PrimerIntent = { vault: false, paymentMethod: 'Any' }\n): void {\n const data = JSON.stringify(intent);\n NativeModule.configureIntent(data);\n}\n\nfunction resume(request: ResumeRequest) {\n const data = JSON.stringify(request);\n NativeModule.resume(data);\n}\n\nfunction configureOnTokenizeSuccess(\n callback: OnTokenizeSuccessCallback = (_, __) => {}\n) {\n NativeModule.configureOnTokenizeSuccess((data: any) => {\n try {\n const parsedData = JSON.parse(data) as PaymentInstrumentToken;\n callback(parsedData, {\n handleError: (error) => resume({ error, token: null }),\n handleSuccess: () => resume({ error: null, token: null }),\n handleNewClientToken: (token) => resume({ error: null, token }),\n // deprecated\n resumeWithError: (error) => resume({ error, token: null }),\n resumeWithSuccess: (token) => resume({ error: null, token }),\n });\n } catch (e) {\n console.log('failed to parse json', e);\n }\n });\n}\n\nfunction actionResume(request: ResumeRequest) {\n const data = JSON.stringify(request);\n NativeModule.actionResume(data);\n}\n\nfunction configureOnClientSessionActions(\n callback: OnClientSessionActionsCallback = (_, __) => {\n NativeModule.configureOnClientSessionActions((___: any) => {\n actionResume({ error: null, token: null });\n configureOnClientSessionActions(callback);\n });\n }\n) {\n NativeModule.configureOnClientSessionActions((data: any) => {\n try {\n const parsedData = JSON.parse(data) as ClientSessionActionsRequest;\n callback(parsedData, {\n handleError: (error) => actionResume({ error, token: null }),\n handleSuccess: () => actionResume({ error: null, token: null }),\n handleNewClientToken: (token) => actionResume({ error: null, token }),\n // deprecated\n resumeWithError: (error) => actionResume({ error, token: null }),\n resumeWithSuccess: (token) => actionResume({ error: null, token }),\n });\n configureOnClientSessionActions(callback);\n } catch (e) {\n console.log('[OnClientSessionActions]', 'failed to parse json', e);\n }\n });\n}\n\nfunction configureOnResumeSuccess(\n callback: OnTokenizeSuccessCallback = (_, __) => {}\n) {\n NativeModule.configureOnResumeSuccess((paymentMethodToken: any) => {\n try {\n callback(paymentMethodToken, {\n handleError: (error) => resume({ error, token: null }),\n handleSuccess: () => resume({ error: null, token: null }),\n handleNewClientToken: (token) => resume({ error: null, token }),\n // deprecated\n resumeWithError: (error) => resume({ error, token: null }),\n resumeWithSuccess: (token) => resume({ error: null, token }),\n });\n } catch (e) {\n console.log('failed to parse json', e);\n }\n });\n}\n\nfunction configureOnVaultSuccess(\n callback: OnTokenAddedToVaultCallback = (_) => {}\n) {\n NativeModule.configureOnVaultSuccess((data: any) => {\n parseCallback<PaymentInstrumentToken>(data, callback);\n });\n}\n\nfunction configureOnDismiss(callback: OnDismissCallback = () => {}) {\n NativeModule.configureOnDismiss((_: any) => callback());\n}\n\nfunction configureOnError(callback: OnPrimerErrorCallback = (_) => {}) {\n NativeModule.configureOnPrimerError((data: any) => {\n parseCallback<PrimerError>(data, callback);\n });\n}\n\nfunction configureOnSavedPaymentInstrumentsFetched(\n callback: OnSavedPaymentInstrumentsFetchedCallback = (_) => {}\n) {\n NativeModule.configureOnSavedPaymentInstrumentsFetched((data: any) => {\n parseCallback<PaymentInstrumentToken[]>(data, callback);\n });\n}\n\ninterface ResumeRequest {\n error: string | null;\n token: string | null;\n}\n"]}
|