@primer-io/react-native 0.6.6 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/README.md +4 -6
  2. package/android/build.gradle +1 -1
  3. package/android/src/main/java/com/primerioreactnative/PrimerRN.kt +44 -2
  4. package/android/src/main/java/com/primerioreactnative/PrimerRNEventListener.kt +19 -1
  5. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerOnClientSessionActionsRequestRN.kt +42 -0
  6. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerRequestRN.kt +1 -1
  7. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerSettingsRN.kt +1 -1
  8. package/android/src/main/java/com/primerioreactnative/utils/PrimerEventQueueRN.kt +0 -2
  9. package/ios/DataModels/PrimerErrorRN.swift +4 -0
  10. package/ios/DataModels/PrimerRequestRN.swift +1 -1
  11. package/ios/DataModels/PrimerSettingsRN.swift +1 -1
  12. package/ios/PrimerRN+PrimerDelegate.swift +51 -7
  13. package/ios/PrimerRN.swift +32 -4
  14. package/ios/ReactNative.m +4 -0
  15. package/lib/commonjs/Primer.js +85 -11
  16. package/lib/commonjs/Primer.js.map +1 -1
  17. package/lib/commonjs/models/client-session-actions-request.js +2 -0
  18. package/lib/commonjs/models/client-session-actions-request.js.map +1 -0
  19. package/lib/module/Primer.js +85 -11
  20. package/lib/module/Primer.js.map +1 -1
  21. package/lib/module/models/client-session-actions-request.js +2 -0
  22. package/lib/module/models/client-session-actions-request.js.map +1 -0
  23. package/lib/typescript/models/client-session-actions-request.d.ts +11 -0
  24. package/lib/typescript/models/primer-callbacks.d.ts +2 -0
  25. package/lib/typescript/models/primer-config.d.ts +2 -1
  26. package/lib/typescript/models/primer-request.d.ts +11 -0
  27. package/package.json +1 -1
  28. package/primer-io-react-native.podspec +1 -1
  29. package/src/Primer.ts +49 -7
  30. package/src/models/client-session-actions-request.ts +13 -0
  31. package/src/models/primer-callbacks.ts +6 -0
  32. package/src/models/primer-config.ts +3 -0
  33. package/src/models/primer-request.ts +16 -0
  34. package/android/.gradle/7.0.2/dependencies-accessors/dependencies-accessors.lock +0 -0
  35. package/android/.gradle/7.0.2/dependencies-accessors/gc.properties +0 -0
  36. package/android/.gradle/7.0.2/fileChanges/last-build.bin +0 -0
  37. package/android/.gradle/7.0.2/fileHashes/fileHashes.bin +0 -0
  38. package/android/.gradle/7.0.2/fileHashes/fileHashes.lock +0 -0
  39. package/android/.gradle/7.0.2/gc.properties +0 -0
  40. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  41. package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
  42. package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
  43. package/android/.gradle/checksums/checksums.lock +0 -0
  44. package/android/.gradle/checksums/md5-checksums.bin +0 -0
  45. package/android/.gradle/checksums/sha1-checksums.bin +0 -0
  46. package/android/.gradle/vcs-1/gc.properties +0 -0
  47. package/android/.idea/.gitignore +0 -3
  48. package/android/.idea/compiler.xml +0 -6
  49. package/android/.idea/gradle.xml +0 -18
  50. package/android/.idea/jarRepositories.xml +0 -35
  51. package/android/.idea/libraries/Gradle__androidx_activity_activity_1_2_0_beta01_aar.xml +0 -16
  52. package/android/.idea/libraries/Gradle__androidx_annotation_annotation_1_1_0.xml +0 -13
  53. package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_1_2_0_aar.xml +0 -16
  54. package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_resources_1_2_0_aar.xml +0 -13
  55. package/android/.idea/libraries/Gradle__androidx_arch_core_core_common_2_1_0.xml +0 -11
  56. package/android/.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_1_0_aar.xml +0 -13
  57. package/android/.idea/libraries/Gradle__androidx_collection_collection_1_1_0.xml +0 -11
  58. package/android/.idea/libraries/Gradle__androidx_core_core_1_3_2_aar.xml +0 -16
  59. package/android/.idea/libraries/Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml +0 -13
  60. package/android/.idea/libraries/Gradle__androidx_customview_customview_1_0_0_aar.xml +0 -13
  61. package/android/.idea/libraries/Gradle__androidx_databinding_viewbinding_7_0_1_aar.xml +0 -13
  62. package/android/.idea/libraries/Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml +0 -16
  63. package/android/.idea/libraries/Gradle__androidx_fragment_fragment_1_2_5_aar.xml +0 -16
  64. package/android/.idea/libraries/Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml +0 -13
  65. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_common_2_3_1.xml +0 -11
  66. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_2_3_1_aar.xml +0 -13
  67. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_core_2_3_1_aar.xml +0 -13
  68. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_3_1_aar.xml +0 -13
  69. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_3_1_aar.xml +0 -13
  70. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_savedstate_2_3_1_aar.xml +0 -13
  71. package/android/.idea/libraries/Gradle__androidx_loader_loader_1_0_0_aar.xml +0 -13
  72. package/android/.idea/libraries/Gradle__androidx_savedstate_savedstate_1_1_0_aar.xml +0 -13
  73. package/android/.idea/libraries/Gradle__androidx_swiperefreshlayout_swiperefreshlayout_1_0_0_aar.xml +0 -16
  74. package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_1_1_0_aar.xml +0 -13
  75. package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_animated_1_1_0_aar.xml +0 -13
  76. package/android/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_1_0_aar.xml +0 -13
  77. package/android/.idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml +0 -13
  78. package/android/.idea/libraries/Gradle__com_facebook_fbjni_fbjni_java_only_0_0_3.xml +0 -13
  79. package/android/.idea/libraries/Gradle__com_facebook_fresco_drawee_2_0_0_aar.xml +0 -15
  80. package/android/.idea/libraries/Gradle__com_facebook_fresco_fbcore_2_0_0_aar.xml +0 -18
  81. package/android/.idea/libraries/Gradle__com_facebook_fresco_fresco_2_0_0_aar.xml +0 -18
  82. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_2_0_0_aar.xml +0 -18
  83. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_base_2_0_0_aar.xml +0 -18
  84. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_okhttp3_2_0_0_aar.xml +0 -15
  85. package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagefilters_2_0_0_aar.xml +0 -15
  86. package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagetranscoder_2_0_0_aar.xml +0 -15
  87. package/android/.idea/libraries/Gradle__com_facebook_infer_annotation_infer_annotation_0_11_2.xml +0 -13
  88. package/android/.idea/libraries/Gradle__com_facebook_react_react_native_0_63_4_aar.xml +0 -18
  89. package/android/.idea/libraries/Gradle__com_facebook_soloader_annotation_0_9_0.xml +0 -13
  90. package/android/.idea/libraries/Gradle__com_facebook_soloader_nativeloader_0_9_0.xml +0 -13
  91. package/android/.idea/libraries/Gradle__com_facebook_soloader_soloader_0_9_0_aar.xml +0 -15
  92. package/android/.idea/libraries/Gradle__com_facebook_yoga_proguard_annotations_1_14_1.xml +0 -13
  93. package/android/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_3_0_2.xml +0 -13
  94. package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_3_12_12.xml +0 -13
  95. package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_urlconnection_3_12_12.xml +0 -13
  96. package/android/.idea/libraries/Gradle__com_squareup_okio_okio_1_15_0.xml +0 -13
  97. package/android/.idea/libraries/Gradle__io_primer_android_1_0_0_aar.xml +0 -15
  98. package/android/.idea/libraries/Gradle__javax_inject_javax_inject_1.xml +0 -13
  99. package/android/.idea/libraries/Gradle__org_jetbrains_annotations_13_0.xml +0 -13
  100. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_5_21.xml +0 -13
  101. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_5_21.xml +0 -13
  102. package/android/.idea/libraries/Gradle__org_jetbrains_kotlinx_kotlinx_serialization_core_jvm_1_2_2.xml +0 -13
  103. package/android/.idea/libraries/Gradle__org_jetbrains_kotlinx_kotlinx_serialization_json_jvm_1_2_2.xml +0 -13
  104. package/android/.idea/misc.xml +0 -9
  105. package/android/.idea/modules/android.iml +0 -126
  106. package/android/.idea/modules.xml +0 -8
  107. package/android/.idea/vcs.xml +0 -6
  108. 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
- setPaymentInstrument(t);
48
- handler.resumeWithSuccess(); // call this to resume the checkout flow.
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, settings });
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)
@@ -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.1.0'
131
+ implementation 'io.primer:android:1.5.1'
132
132
  }
@@ -12,6 +12,7 @@ import io.primer.android.model.dto.*
12
12
  import kotlinx.serialization.decodeFromString
13
13
  import kotlinx.serialization.encodeToString
14
14
  import kotlinx.serialization.json.Json
15
+ import kotlin.Error
15
16
 
16
17
 
17
18
  class PrimerRN(reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext) {
@@ -88,6 +89,11 @@ class PrimerRN(reactContext: ReactApplicationContext) : ReactContextBaseJavaModu
88
89
  mListener.configureOnTokenizeSuccess(callback)
89
90
  }
90
91
 
92
+ @ReactMethod
93
+ fun configureOnClientSessionActions(callback: Callback) {
94
+ mListener.configureOnClientSessionActions(callback)
95
+ }
96
+
91
97
  @ReactMethod
92
98
  fun configureOnResumeSuccess(callback: Callback) {
93
99
  mListener.configureOnResumeSuccess(callback)
@@ -127,8 +133,8 @@ class PrimerRN(reactContext: ReactApplicationContext) : ReactContextBaseJavaModu
127
133
  mListener.completion = { error, clientToken ->
128
134
  currentActivity?.let {
129
135
  it.runOnUiThread {
130
- if (error) {
131
- Primer.instance.showError()
136
+ if (error != null) {
137
+ mListener.resumeHandler?.handleError(Error(error))
132
138
  } else {
133
139
  if (clientToken == null) {
134
140
  mListener.resumeHandler?.handleSuccess()
@@ -140,6 +146,18 @@ class PrimerRN(reactContext: ReactApplicationContext) : ReactContextBaseJavaModu
140
146
  }
141
147
  }
142
148
 
149
+ mListener.actionCompletion = { error, clientToken ->
150
+ currentActivity?.let {
151
+ it.runOnUiThread {
152
+ if (error != null) {
153
+ mListener.actionResumeHandler?.handleError(Error(error))
154
+ } else {
155
+ mListener.actionResumeHandler?.handleClientToken(clientToken)
156
+ }
157
+ }
158
+ }
159
+ }
160
+
143
161
  Primer.instance.configure(config, mListener)
144
162
  sdkWasInitialised = true
145
163
  }
@@ -199,4 +217,28 @@ class PrimerRN(reactContext: ReactApplicationContext) : ReactContextBaseJavaModu
199
217
  haltExecution = true
200
218
  }
201
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
+ }
202
244
  }
@@ -4,9 +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
11
+ import io.primer.android.completion.ActionResumeHandler
10
12
  import io.primer.android.completion.ResumeHandler
11
13
  import io.primer.android.events.CheckoutEvent
12
14
  import kotlinx.serialization.encodeToString
@@ -15,21 +17,29 @@ import kotlinx.serialization.json.Json
15
17
  class PrimerRNEventListener : CheckoutEventListener {
16
18
 
17
19
  private var onTokenizeSuccessQueue: PrimerEventQueueRN? = null
20
+ private var onClientSessionActionsQueue: PrimerEventQueueRN? = null
18
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: Boolean, token: String?) -> Unit)? = null
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
+
33
43
  fun configureOnResumeSuccess(callback: Callback) {
34
44
  onResumeSuccessQueue = PrimerEventQueueRN()
35
45
  onResumeSuccessQueue?.poll(callback)
@@ -55,6 +65,14 @@ class PrimerRNEventListener : CheckoutEventListener {
55
65
  onSavedPaymentInstrumentsFetchedQueue?.poll(callback)
56
66
  }
57
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
+
58
76
  override fun onCheckoutEvent(e: CheckoutEvent) {
59
77
  when (e) {
60
78
  is CheckoutEvent.TokenAddedToVault -> {
@@ -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
+ }
@@ -4,6 +4,6 @@ import kotlinx.serialization.*
4
4
 
5
5
  @Serializable
6
6
  data class PrimerResumeRequest(
7
- val error: Boolean,
7
+ val error: String? = null,
8
8
  val token: String? = null,
9
9
  )
@@ -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, business, customer, options)
19
+ return PrimerSettings(order, customer, business, options)
20
20
  }
21
21
  }
22
22
 
@@ -14,9 +14,7 @@ class PrimerEventQueueRN {
14
14
 
15
15
  fun poll(cb: Callback? = null) {
16
16
  if (cb != null) mCallback = cb
17
-
18
17
  val callback = mCallback ?: return
19
-
20
18
  val next = mQueue.poll() ?: return
21
19
 
22
20
  callback.invoke(next)
@@ -13,3 +13,7 @@ enum ErrorTypeRN: String, Error, Encodable {
13
13
  case clientTokenNotConfigured
14
14
  case flowParsingFailed
15
15
  }
16
+
17
+ struct ErrorRN: Error {
18
+ let message: String
19
+ }
@@ -5,7 +5,7 @@ struct PrimerInitRequest: Decodable {
5
5
  }
6
6
 
7
7
  struct PrimerResumeRequest: Decodable {
8
- let error: Bool;
8
+ let error: String?
9
9
  let token: String?
10
10
  }
11
11
 
@@ -39,7 +39,7 @@ extension PrimerSettingsRN {
39
39
  customer: Customer(
40
40
  firstName: customer?.firstName,
41
41
  lastName: customer?.lastName,
42
- email: customer?.email,
42
+ emailAddress: customer?.email,
43
43
  homePhoneNumber: nil,
44
44
  mobilePhoneNumber: customer?.phone,
45
45
  workPhoneNumber: nil,
@@ -28,13 +28,57 @@ extension PrimerRN: PrimerDelegate {
28
28
  } catch {
29
29
  checkoutFailed(with: ErrorTypeRN.ParseJsonFailed)
30
30
  }
31
- onResumeFlowCallback = { error, token in
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.handle(newClientToken: token)
77
+ resumeHandler?.handle(newClientToken: token)
34
78
  } else if let error = error {
35
- resumeHandler.handle(error: error)
79
+ resumeHandler?.handle(error: error)
36
80
  } else {
37
- resumeHandler.handle(error: PrimerError.generic)
81
+ resumeHandler?.handle(error: PrimerError.generic)
38
82
  }
39
83
  }
40
84
  }
@@ -42,11 +86,11 @@ extension PrimerRN: PrimerDelegate {
42
86
  func onResumeSuccess(_ clientToken: String, resumeHandler: ResumeHandlerProtocol) {
43
87
  self.onResumeSuccessCallback?([clientToken])
44
88
 
45
- onResumeFlowCallback = { error, token in
89
+ onResumeFlowCallback = { error, clientToken in
46
90
  if let error = error {
47
91
  resumeHandler.handle(error: error)
48
- } else if let token = token {
49
- resumeHandler.handle(newClientToken: token)
92
+ } else if let clientToken = clientToken {
93
+ resumeHandler.handle(newClientToken: clientToken)
50
94
  } else {
51
95
  resumeHandler.handleSuccess()
52
96
  }
@@ -17,11 +17,13 @@ class PrimerRN: NSObject {
17
17
  var theme: PrimerThemeRN?
18
18
  var flow: PrimerSessionFlow?
19
19
  var onTokenizeSuccessCallback: RCTResponseSenderBlock?
20
+ var onClientSessionActionsCallback: RCTResponseSenderBlock?
20
21
  var onResumeSuccessCallback: RCTResponseSenderBlock?
21
22
  var onVaultSuccessCallback: RCTResponseSenderBlock?
22
23
  var onDismissCallback: RCTResponseSenderBlock?
23
24
  var onPrimerErrorCallback: RCTResponseSenderBlock?
24
25
  var onResumeFlowCallback: BasicCompletionBlock?
26
+ var onActionResumeCallback: BasicCompletionBlock?
25
27
  var onSavedPaymentInstrumentsFetchedCallback: RCTResponseSenderBlock?
26
28
 
27
29
  private var sdkWasInitialised = false
@@ -61,6 +63,10 @@ class PrimerRN: NSObject {
61
63
  self.onTokenizeSuccessCallback = callback
62
64
  }
63
65
 
66
+ @objc func configureOnClientSessionActions(_ callback: @escaping RCTResponseSenderBlock) {
67
+ self.onClientSessionActionsCallback = callback
68
+ }
69
+
64
70
  @objc func configureOnResumeSuccess(_ callback: @escaping RCTResponseSenderBlock) {
65
71
  self.onResumeSuccessCallback = callback
66
72
  }
@@ -139,13 +145,14 @@ class PrimerRN: NSObject {
139
145
  let json = request.data(using: .utf8)!
140
146
  let request = try JSONDecoder().decode(PrimerResumeRequest.self, from: json)
141
147
 
142
- if (request.error) {
143
- self?.onResumeFlowCallback?(ErrorTypeRN.ParseJsonFailed, nil)
144
- } else if let token = request.token {
145
- self?.onResumeFlowCallback?(nil, token)
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)
146
152
  } else {
147
153
  self?.onResumeFlowCallback?(nil, nil)
148
154
  }
155
+
149
156
  self?.onResumeFlowCallback = nil
150
157
  } catch {
151
158
  self?.checkoutFailed(with: error)
@@ -153,6 +160,27 @@ class PrimerRN: NSObject {
153
160
  }
154
161
  }
155
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
+
156
184
  @objc func dispose() -> Void {
157
185
 
158
186
  }
package/ios/ReactNative.m CHANGED
@@ -11,6 +11,8 @@ 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
+
14
16
  RCT_EXTERN_METHOD(configureOnResumeSuccess: (RCTResponseSenderBlock)callback)
15
17
 
16
18
  RCT_EXTERN_METHOD(configureOnVaultSuccess: (RCTResponseSenderBlock)callback)
@@ -27,6 +29,8 @@ RCT_EXTERN_METHOD(initialize: (NSString *)data)
27
29
 
28
30
  RCT_EXTERN_METHOD(resume: (NSString *)data)
29
31
 
32
+ RCT_EXTERN_METHOD(actionResume: (NSString *)data)
33
+
30
34
  RCT_EXTERN_METHOD(dispose)
31
35
 
32
36
  @end
@@ -56,6 +56,7 @@ function configure(config) {
56
56
  configureOnDismiss(config.onDismiss);
57
57
  configureOnError(config.onError);
58
58
  configureOnTokenizeSuccess(config.onTokenizeSuccess);
59
+ configureOnClientSessionActions(config.onClientSessionActions);
59
60
  configureOnResumeSuccess(config.onResumeSuccess);
60
61
  configureOnSavedPaymentInstrumentsFetched(config.onSavedPaymentInstrumentsFetched);
61
62
  }
@@ -88,12 +89,25 @@ function configureOnTokenizeSuccess(callback = (_, __) => {}) {
88
89
  try {
89
90
  const parsedData = JSON.parse(data);
90
91
  callback(parsedData, {
91
- resumeWithError: () => resume({
92
- error: true,
93
- 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
94
108
  }),
95
109
  resumeWithSuccess: token => resume({
96
- error: false,
110
+ error: null,
97
111
  token
98
112
  })
99
113
  });
@@ -103,17 +117,77 @@ function configureOnTokenizeSuccess(callback = (_, __) => {}) {
103
117
  });
104
118
  }
105
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
+
106
167
  function configureOnResumeSuccess(callback = (_, __) => {}) {
107
- NativeModule.configureOnResumeSuccess(token => {
168
+ NativeModule.configureOnResumeSuccess(paymentMethodToken => {
108
169
  try {
109
- callback(token, {
110
- resumeWithError: () => resume({
111
- error: true,
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,
112
186
  token: null
113
187
  }),
114
- resumeWithSuccess: t => resume({
115
- error: false,
116
- token: t
188
+ resumeWithSuccess: token => resume({
189
+ error: null,
190
+ token
117
191
  })
118
192
  });
119
193
  } catch (e) {
@@ -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","configureOnResumeSuccess","onResumeSuccess","configureOnSavedPaymentInstrumentsFetched","onSavedPaymentInstrumentsFetched","data","JSON","stringify","resume","request","callback","_","__","parsedData","parse","resumeWithError","error","resumeWithSuccess","e","console","log","t","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 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 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 configureOnResumeSuccess(\n callback: OnTokenizeSuccessCallback = (_, __) => {}\n) {\n NativeModule.configureOnResumeSuccess((token: any) => {\n try {\n callback(token, {\n resumeWithError: () => resume({ error: true, token: null }),\n resumeWithSuccess: (t) => resume({ error: false, token: t }),\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 | null;\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"]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=client-session-actions-request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]}