@primer-io/react-native 2.0.1 → 2.2.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 (92) hide show
  1. package/android/build.gradle +1 -1
  2. package/android/src/main/java/com/primerioreactnative/PrimerCardNumberEditTextManager.kt +83 -0
  3. package/android/src/main/java/com/primerioreactnative/PrimerRN.kt +2 -2
  4. package/android/src/main/java/com/primerioreactnative/PrimerRNHeadlessUniversalCheckout.kt +244 -0
  5. package/android/src/main/java/com/primerioreactnative/PrimerRNHeadlessUniversalCheckoutListener.kt +276 -0
  6. package/android/src/main/java/com/primerioreactnative/ReactNativePackage.kt +14 -3
  7. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerErrorRN.kt +3 -0
  8. package/android/src/main/java/com/primerioreactnative/huc/assets/AssetsManager.kt +56 -0
  9. package/android/src/main/java/com/primerioreactnative/huc/events/PrimerHeadlessUniversalCheckoutEvent.kt +15 -0
  10. package/android/src/main/java/com/primerioreactnative/utils/PrimerHeadlessUniversalCheckoutImplementedRNCallbacks.kt +31 -0
  11. package/ios/Core/ReactNative-Bridging-Header.h +14 -0
  12. package/ios/DataModels/ImplementedRNCallbacks.swift +34 -9
  13. package/ios/DataModels/PrimerSettingsRN.swift +15 -16
  14. package/ios/Headless Universal Checkout/RNTPrimerCardNumberInputElementManager.m +23 -0
  15. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.m +62 -0
  16. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.swift +493 -0
  17. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.m +14 -0
  18. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.swift +117 -0
  19. package/ios/RNTPrimer.m +2 -0
  20. package/ios/RNTPrimer.swift +56 -51
  21. package/ios/ReactNative-Bridging-Header.h +1 -0
  22. package/lib/commonjs/Primer.js +6 -0
  23. package/lib/commonjs/Primer.js.map +1 -1
  24. package/lib/commonjs/PrimerInput.js +80 -0
  25. package/lib/commonjs/PrimerInput.js.map +1 -0
  26. package/lib/commonjs/RNPrimer.js +11 -0
  27. package/lib/commonjs/RNPrimer.js.map +1 -1
  28. package/lib/commonjs/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js +14 -0
  29. package/lib/commonjs/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js.map +1 -0
  30. package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckout.js +286 -0
  31. package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckout.js.map +1 -0
  32. package/lib/commonjs/headless_checkout/RNPrimerHeadlessUniversalCheckout.js +197 -0
  33. package/lib/commonjs/headless_checkout/RNPrimerHeadlessUniversalCheckout.js.map +1 -0
  34. package/lib/commonjs/{models/Primer.js → headless_checkout/types.js} +1 -1
  35. package/lib/commonjs/{models/Primer.js.map → headless_checkout/types.js.map} +0 -0
  36. package/lib/commonjs/index.js +13 -5
  37. package/lib/commonjs/index.js.map +1 -1
  38. package/lib/commonjs/models/PrimerInterfaces.js +6 -0
  39. package/lib/{module/models/Primer.js.map → commonjs/models/PrimerInterfaces.js.map} +0 -0
  40. package/lib/module/Primer.js +7 -2
  41. package/lib/module/Primer.js.map +1 -1
  42. package/lib/module/PrimerInput.js +46 -0
  43. package/lib/module/PrimerInput.js.map +1 -0
  44. package/lib/module/RNPrimer.js +11 -0
  45. package/lib/module/RNPrimer.js.map +1 -1
  46. package/lib/module/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js +5 -0
  47. package/lib/module/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js.map +1 -0
  48. package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckout.js +273 -0
  49. package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckout.js.map +1 -0
  50. package/lib/module/headless_checkout/RNPrimerHeadlessUniversalCheckout.js +188 -0
  51. package/lib/module/headless_checkout/RNPrimerHeadlessUniversalCheckout.js.map +1 -0
  52. package/lib/module/headless_checkout/types.js +2 -0
  53. package/lib/module/headless_checkout/types.js.map +1 -0
  54. package/lib/module/index.js +2 -1
  55. package/lib/module/index.js.map +1 -1
  56. package/lib/module/models/PrimerInterfaces.js +2 -0
  57. package/lib/module/models/PrimerInterfaces.js.map +1 -0
  58. package/lib/typescript/MerchantExample/App.d.ts +11 -0
  59. package/lib/typescript/src/Primer.d.ts +2 -0
  60. package/lib/typescript/src/PrimerInput.d.ts +15 -0
  61. package/lib/typescript/{RNPrimer.d.ts → src/RNPrimer.d.ts} +1 -0
  62. package/lib/typescript/src/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.d.ts +1 -0
  63. package/lib/typescript/src/headless_checkout/PrimerHeadlessUniversalCheckout.d.ts +11 -0
  64. package/lib/typescript/src/headless_checkout/RNPrimerHeadlessUniversalCheckout.d.ts +22 -0
  65. package/lib/typescript/src/headless_checkout/types.d.ts +22 -0
  66. package/lib/typescript/{index.d.ts → src/index.d.ts} +2 -1
  67. package/lib/typescript/{models → src/models}/PrimerCheckoutData.d.ts +0 -0
  68. package/lib/typescript/{models → src/models}/PrimerCheckoutPaymentMethodData.d.ts +0 -0
  69. package/lib/typescript/{models → src/models}/PrimerClientSession.d.ts +0 -0
  70. package/lib/typescript/{models → src/models}/PrimerCountryCode.d.ts +0 -0
  71. package/lib/typescript/{models → src/models}/PrimerCurrencyCode.d.ts +0 -0
  72. package/lib/typescript/{models → src/models}/PrimerError.d.ts +0 -0
  73. package/lib/typescript/{models/Primer.d.ts → src/models/PrimerInterfaces.d.ts} +2 -1
  74. package/lib/typescript/{models → src/models}/PrimerPaymentMethodTokenData.d.ts +0 -0
  75. package/lib/typescript/{models → src/models}/PrimerSessionIntent.d.ts +0 -0
  76. package/lib/typescript/{models → src/models}/PrimerSettings.d.ts +6 -2
  77. package/lib/typescript/{models → src/models}/PrimerTheme.d.ts +0 -0
  78. package/lib/typescript/{utils → src/utils}/index.d.ts +0 -0
  79. package/package.json +1 -1
  80. package/primer-io-react-native.podspec +1 -1
  81. package/src/Primer.ts +6 -1
  82. package/src/PrimerInput.tsx +73 -0
  83. package/src/RNPrimer.ts +13 -0
  84. package/src/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.tsx +2 -0
  85. package/src/headless_checkout/PrimerHeadlessUniversalCheckout.ts +327 -0
  86. package/src/headless_checkout/RNPrimerHeadlessUniversalCheckout.ts +252 -0
  87. package/src/headless_checkout/types.ts +32 -0
  88. package/src/index.tsx +4 -2
  89. package/src/models/{Primer.ts → PrimerInterfaces.ts} +2 -1
  90. package/src/models/PrimerSettings.ts +17 -2
  91. package/lib/module/models/Primer.js +0 -2
  92. package/lib/typescript/Primer.d.ts +0 -2
@@ -0,0 +1,56 @@
1
+ package com.primerioreactnative.huc.assets
2
+
3
+ import android.graphics.Bitmap
4
+ import android.graphics.Canvas
5
+ import android.graphics.drawable.BitmapDrawable
6
+ import android.graphics.drawable.Drawable
7
+ import com.facebook.react.bridge.ReactApplicationContext
8
+ import java.io.File
9
+ import java.io.FileOutputStream
10
+ import java.util.*
11
+
12
+ internal object AssetsManager {
13
+
14
+ private const val ASSETS_DIRECTORY = "primer-sdk"
15
+ private const val COMPRESS_QUALITY = 100
16
+
17
+ fun drawableToBitmap(drawable: Drawable): Bitmap {
18
+ if (drawable is BitmapDrawable) {
19
+ return drawable.bitmap
20
+ }
21
+
22
+ val bitmap = Bitmap.createBitmap(
23
+ drawable.intrinsicWidth,
24
+ drawable.intrinsicHeight,
25
+ Bitmap.Config.ARGB_8888
26
+ )
27
+ val canvas = Canvas(bitmap)
28
+ drawable.setBounds(0, 0, canvas.width, canvas.height)
29
+ drawable.draw(canvas)
30
+ return bitmap
31
+ }
32
+
33
+ fun saveBitmapToFile(
34
+ file: File,
35
+ bitmap: Bitmap,
36
+ format: Bitmap.CompressFormat = Bitmap.CompressFormat.PNG,
37
+ ) {
38
+
39
+ FileOutputStream(file).use {
40
+ bitmap.compress(format, COMPRESS_QUALITY, it)
41
+ it.close()
42
+ }
43
+ }
44
+
45
+ fun getFile(context: ReactApplicationContext, path: String): File {
46
+ val directory = File(context.filesDir, path)
47
+ if (!directory.exists()) directory.mkdirs()
48
+ val file = File(
49
+ context.filesDir,
50
+ ASSETS_DIRECTORY + File.pathSeparator + path.toLowerCase(Locale.ROOT)
51
+ )
52
+ if (!file.exists()) file.createNewFile()
53
+ return file
54
+ }
55
+
56
+ }
@@ -0,0 +1,15 @@
1
+ package com.primerioreactnative.huc.events
2
+
3
+ internal enum class PrimerHeadlessUniversalCheckoutEvent(val eventName: String) {
4
+ ON_HUC_AVAILABLE_PAYMENT_METHODS_LOADED("onHUCAvailablePaymentMethodsLoaded"),
5
+ ON_HUC_PREPARE_START("onHUCPrepareStart"),
6
+ ON_HUC_PAYMENT_METHOD_SHOW("onHUCPaymentMethodShow"),
7
+ ON_HUC_TOKENIZE_START("onHUCTokenizeStart"),
8
+ ON_CHECKOUT_COMPLETE("onCheckoutComplete"),
9
+ ON_BEFORE_CLIENT_SESSION_UPDATE("onBeforeClientSessionUpdate"),
10
+ ON_CLIENT_SESSION_UPDATE("onClientSessionUpdate"),
11
+ ON_BEFORE_PAYMENT_CREATE("onBeforePaymentCreate"),
12
+ ON_TOKENIZE_SUCCESS("onTokenizeSuccess"),
13
+ ON_RESUME_SUCCESS("onResumeSuccess"),
14
+ ON_ERROR("onError"),
15
+ }
@@ -0,0 +1,31 @@
1
+ package com.primerioreactnative.utils
2
+
3
+ import kotlinx.serialization.SerialName
4
+ import kotlinx.serialization.Serializable
5
+
6
+ @Serializable
7
+ data class PrimerHeadlessUniversalCheckoutImplementedRNCallbacks(
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("onTokenizeSuccess")
19
+ val isOnTokenizeSuccessImplemented: Boolean? = null,
20
+ @SerialName("onResumeSuccess")
21
+ val isOnResumeSuccessImplemented: Boolean? = null,
22
+ @SerialName("onHUCTokenizeStart")
23
+ val isOnHUCTokenizeStartsImplemented: Boolean? = null,
24
+ @SerialName("onHUCPrepareStart")
25
+ val isOnHUCPrepareStartImplemented: Boolean? = null,
26
+ @SerialName("onHUCAvailablePaymentMethodsLoaded")
27
+ val isOnHUCAvailablePaymentMethodsLoadedImplemented: Boolean? = null,
28
+ @SerialName("onHUCPaymentMethodShow")
29
+ val isOnHUCPaymentMethodShowImplemented: Boolean? = null,
30
+ )
31
+
@@ -0,0 +1,14 @@
1
+ #import <React/RCTBridgeModule.h>
2
+ #import <React/RCTEventEmitter.h>
3
+ #import <React/RCTViewManager.h>
4
+ #import <React/RCTUIManager.h>
5
+ #import <React/RCTView.h>
6
+
7
+ // for view controller implementation https://stackoverflow.com/questions/45741903/react-native-ios-how-can-i-navigate-to-a-non-react-native-view-native-ios-vie/46007680#46007680
8
+ //#import "React/RCTBridge.h"
9
+ //#import "React/RCTEventDispatcher.h"
10
+ //#import "React/RCTRootView.h"
11
+ //#import "React/RCTUtils.h"
12
+ //#import "React/RCTConvert.h"
13
+ //#import "React/RCTBundleURLProvider.h"
14
+ //#import "RCTViewManager.h"
@@ -7,16 +7,20 @@
7
7
 
8
8
  import Foundation
9
9
 
10
- internal struct ImplementedRNCallbacks: Codable {
10
+ internal struct ImplementedRNCallbacks: Decodable {
11
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
12
+ internal var isOnCheckoutCompleteImplemented: Bool = false
13
+ internal var isOnBeforeClientSessionUpdateImplemented: Bool = false
14
+ internal var isOnClientSessionUpdateImplemented: Bool = false
15
+ internal var isOnBeforePaymentCreateImplemented: Bool = false
16
+ internal var isOnErrorImplemented: Bool = false
17
+ internal var isOnDismissImplemented: Bool = false
18
+ internal var isOnTokenizeSuccessImplemented: Bool = false
19
+ internal var isOnResumeSuccessImplemented: Bool = false
20
+ internal var isOnHUCTokenizeStartImplemented: Bool = false
21
+ internal var isOnHUCPrepareStartImplemented: Bool = false
22
+ internal var isOnHUCAvailablePaymentMethodsLoadedImplemented: Bool = false
23
+ internal var isOnHUCPaymentMethodShowImplemented: Bool = false
20
24
 
21
25
  enum CodingKeys: String, CodingKey {
22
26
  case isOnCheckoutCompleteImplemented = "onCheckoutComplete"
@@ -27,5 +31,26 @@ internal struct ImplementedRNCallbacks: Codable {
27
31
  case isOnDismissImplemented = "onDismiss"
28
32
  case isOnTokenizeSuccessImplemented = "onTokenizeSuccess"
29
33
  case isOnResumeSuccessImplemented = "onResumeSuccess"
34
+ case isOnHUCTokenizeStartImplemented = "onHUCTokenizeStart"
35
+ case isOnHUCPrepareStartImplemented = "onHUCPrepareStart"
36
+ case isOnHUCAvailablePaymentMethodsLoadedImplemented = "onHUCAvailablePaymentMethodsLoaded"
37
+ case isOnHUCPaymentMethodShowImplemented = "onHUCPaymentMethodShow"
38
+ }
39
+
40
+ init(from decoder: Decoder) throws {
41
+ let container = try decoder.container(keyedBy: CodingKeys.self)
42
+
43
+ self.isOnCheckoutCompleteImplemented = (try? container.decode(Bool?.self, forKey: .isOnCheckoutCompleteImplemented)) ?? false
44
+ self.isOnBeforeClientSessionUpdateImplemented = (try? container.decode(Bool?.self, forKey: .isOnBeforeClientSessionUpdateImplemented)) ?? false
45
+ self.isOnClientSessionUpdateImplemented = (try? container.decode(Bool?.self, forKey: .isOnClientSessionUpdateImplemented)) ?? false
46
+ self.isOnBeforePaymentCreateImplemented = (try? container.decode(Bool?.self, forKey: .isOnBeforePaymentCreateImplemented)) ?? false
47
+ self.isOnErrorImplemented = (try? container.decode(Bool?.self, forKey: .isOnErrorImplemented)) ?? false
48
+ self.isOnDismissImplemented = (try? container.decode(Bool?.self, forKey: .isOnDismissImplemented)) ?? false
49
+ self.isOnTokenizeSuccessImplemented = (try? container.decode(Bool?.self, forKey: .isOnTokenizeSuccessImplemented)) ?? false
50
+ self.isOnResumeSuccessImplemented = (try? container.decode(Bool?.self, forKey: .isOnResumeSuccessImplemented)) ?? false
51
+ self.isOnHUCTokenizeStartImplemented = (try? container.decode(Bool?.self, forKey: .isOnHUCTokenizeStartImplemented)) ?? false
52
+ self.isOnHUCPrepareStartImplemented = (try? container.decode(Bool?.self, forKey: .isOnHUCPrepareStartImplemented)) ?? false
53
+ self.isOnHUCAvailablePaymentMethodsLoadedImplemented = (try? container.decode(Bool?.self, forKey: .isOnHUCAvailablePaymentMethodsLoadedImplemented)) ?? false
54
+ self.isOnHUCPaymentMethodShowImplemented = (try? container.decode(Bool?.self, forKey: .isOnHUCPaymentMethodShowImplemented)) ?? false
30
55
  }
31
56
  }
@@ -8,80 +8,79 @@ extension PrimerSettings {
8
8
  else {
9
9
  return PrimerSettings()
10
10
  }
11
-
11
+
12
12
  guard let settingsJson = (try JSONSerialization.jsonObject(with: settingsData)) as? [String: Any]
13
13
  else {
14
14
  return PrimerSettings()
15
15
  }
16
-
16
+
17
17
  var paymentHandling: PrimerPaymentHandling = .auto
18
18
  if let rnPaymentHandling = settingsJson["paymentHandling"] as? String,
19
19
  rnPaymentHandling == "MANUAL" {
20
20
  paymentHandling = .manual
21
21
  }
22
-
22
+
23
23
  let rnLocaleDataLanguageCode = (settingsJson["localeData"] as? [String: Any])?["languageCode"] as? String
24
24
  let rnLocaleDataLocaleCode = (settingsJson["localeData"] as? [String: Any])?["localeCode"] as? String
25
25
  let localeData = PrimerLocaleData(
26
26
  languageCode: rnLocaleDataLanguageCode,
27
27
  regionCode: rnLocaleDataLocaleCode)
28
-
28
+
29
29
  let rnUrlScheme = ((settingsJson["paymentMethodOptions"] as? [String: Any])?["iOS"] as? [String: Any])?["urlScheme"] as? String
30
-
30
+
31
31
  var applePayOptions: PrimerApplePayOptions?
32
32
  if let rnApplePayOptions = ((settingsJson["paymentMethodOptions"] as? [String: Any])?["applePayOptions"] as? [String: Any]),
33
33
  let rnApplePayMerchantIdentifier = rnApplePayOptions["merchantIdentifier"] as? String,
34
34
  let rnApplePayMerchantName = rnApplePayOptions["merchantName"] as? String {
35
35
  applePayOptions = PrimerApplePayOptions(merchantIdentifier: rnApplePayMerchantIdentifier, merchantName: rnApplePayMerchantName)
36
36
  }
37
-
37
+
38
38
  var klarnaOptions: PrimerKlarnaOptions?
39
39
  if let rnKlarnaRecurringPaymentDescription = ((settingsJson["paymentMethodOptions"] as? [String: Any])?["klarnaOptions"] as? [String: Any])?["recurringPaymentDescription"] as? String {
40
40
  klarnaOptions = PrimerKlarnaOptions(recurringPaymentDescription: rnKlarnaRecurringPaymentDescription)
41
41
  }
42
-
42
+
43
43
  var cardPaymentOptions: PrimerCardPaymentOptions?
44
44
  if let rnIs3DSOnVaultingEnabled = ((settingsJson["paymentMethodOptions"] as? [String: Any])?["cardPaymentOptions"] as? [String: Any])?["is3DSOnVaultingEnabled"] as? Bool {
45
45
  cardPaymentOptions = PrimerCardPaymentOptions(is3DSOnVaultingEnabled: rnIs3DSOnVaultingEnabled)
46
46
  }
47
-
47
+
48
48
  var uiOptions: PrimerUIOptions?
49
49
  if let rnUIOptions = settingsJson["uiOptions"] as? [String: Any] {
50
-
50
+
51
51
  var theme: PrimerTheme?
52
52
  if let rnTheme = rnUIOptions["theme"] as? [String: Any] {
53
53
  let rnThemeData = (try JSONSerialization.data(withJSONObject: rnTheme))
54
54
  let rnTheme = try JSONDecoder().decode(PrimerThemeRN.self, from: rnThemeData)
55
55
  theme = rnTheme.asPrimerTheme()
56
56
  }
57
-
57
+
58
58
  uiOptions = PrimerUIOptions(
59
59
  isInitScreenEnabled: rnUIOptions["isInitScreenEnabled"] as? Bool,
60
60
  isSuccessScreenEnabled: rnUIOptions["isSuccessScreenEnabled"] as? Bool,
61
61
  isErrorScreenEnabled: rnUIOptions["isErrorScreenEnabled"] as? Bool,
62
62
  theme: theme)
63
63
  }
64
-
64
+
65
65
  var debugOptions: PrimerDebugOptions?
66
66
  if let rnIs3DSSanityCheckEnabled = (settingsJson["debugOptions"] as? [String: Any])?["is3DSSanityCheckEnabled"] as? Bool {
67
67
  debugOptions = PrimerDebugOptions(is3DSSanityCheckEnabled: rnIs3DSSanityCheckEnabled)
68
68
  }
69
-
70
-
69
+
71
70
  let paymentMethodOptions = PrimerPaymentMethodOptions(
72
71
  urlScheme: rnUrlScheme,
73
72
  applePayOptions: applePayOptions,
74
73
  klarnaOptions: klarnaOptions,
75
74
  cardPaymentOptions: cardPaymentOptions)
76
-
75
+
77
76
  let settings = PrimerSettings(
78
77
  paymentHandling: paymentHandling,
79
78
  localeData: localeData,
80
79
  paymentMethodOptions: paymentMethodOptions,
81
80
  uiOptions: uiOptions,
82
81
  debugOptions: debugOptions)
83
-
84
-
82
+
83
+
85
84
  return settings
86
85
  }
87
86
  }
@@ -0,0 +1,23 @@
1
+ //
2
+ // RNTPrimerCardNumberInputElementManager.m
3
+ // primer-io-react-native
4
+ //
5
+ // Created by Evangelos on 3/3/22.
6
+ //
7
+
8
+ #import <React/RCTViewManager.h>
9
+ @import PrimerSDK;
10
+
11
+ @interface RNTPrimerCardNumberInputElementManager : RCTViewManager
12
+ @end
13
+
14
+ @implementation RNTPrimerCardNumberInputElementManager
15
+
16
+ RCT_EXPORT_MODULE(PrimerCardNumberEditText)
17
+
18
+ - (UIView *)view
19
+ {
20
+ return [[PrimerCardNumberInputElement alloc] init];
21
+ }
22
+
23
+ @end
@@ -0,0 +1,62 @@
1
+ //
2
+ // RNTPrimerHeadlessUniversalCheckout.m
3
+ // primer-io-react-native
4
+ //
5
+ // Created by Evangelos on 8/3/22.
6
+ //
7
+
8
+ #import <React/RCTBridgeModule.h>
9
+ #import <React/RCTEventEmitter.h>
10
+
11
+ @interface RCT_EXTERN_MODULE(PrimerHeadlessUniversalCheckout, RCTEventEmitter)
12
+
13
+ RCT_EXTERN_METHOD(startWithClientToken:(NSString *)clientToken settingsStr:(NSString *)settingsStr errorCallback:(RCTResponseSenderBlock)errorCallback successCallback: (RCTResponseSenderBlock)successCallback)
14
+
15
+ RCT_EXTERN_METHOD(resumeWithClientToken:(NSString *)resumeToken)
16
+
17
+ RCT_EXTERN_METHOD(showPaymentMethod:(NSString *)paymentMethodTypeStr
18
+ resolver:(RCTPromiseResolveBlock)resolver
19
+ rejecter:(RCTPromiseRejectBlock)rejecter)
20
+
21
+ RCT_EXTERN_METHOD(getAssetForPaymentMethodType:(NSString *)paymentMethodTypeStr
22
+ assetType:(NSString *)assetTypeStr
23
+ errorCallback:(RCTResponseSenderBlock)errorCallback
24
+ successCallback: (RCTResponseSenderBlock)successCallback)
25
+
26
+ RCT_EXTERN_METHOD(getAssetForCardNetwork:(NSString *)cardNetworkStr
27
+ assetType:(NSString *)assetTypeStr
28
+ errorCallback:(RCTResponseSenderBlock)errorCallback
29
+ successCallback: (RCTResponseSenderBlock)successCallback)
30
+
31
+ RCT_EXTERN_METHOD(disposePrimerHeadlessUniversalCheckout)
32
+
33
+ // MARK: - HELPERS
34
+
35
+ RCT_EXTERN_METHOD(setImplementedRNCallbacks:(NSString *)implementedRNCallbacksStr resolver:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
36
+
37
+ // MARK: - DECISION HANDLERS
38
+
39
+ // MARK: Tokenization Handlers
40
+
41
+ RCT_EXTERN_METHOD(handleTokenizationNewClientToken:(NSString *)newClientToken resolver:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
42
+
43
+ RCT_EXTERN_METHOD(handleTokenizationSuccess:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
44
+
45
+ RCT_EXTERN_METHOD(handleTokenizationFailure:(NSString *)errorMessage resolver:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
46
+
47
+ // MARK: Resume Handlers
48
+
49
+ RCT_EXTERN_METHOD(handleResumeWithNewClientToken:(NSString *)newClientToken resolver:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
50
+
51
+ RCT_EXTERN_METHOD(handleResumeSuccess:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
52
+
53
+ RCT_EXTERN_METHOD(handleResumeFailure:(NSString *)errorMessage resolver:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
54
+
55
+ // MARK: Payment Creation Handlers
56
+
57
+ RCT_EXTERN_METHOD(handlePaymentCreationAbort:(NSString *)errorMessage resolver:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
58
+
59
+ RCT_EXTERN_METHOD(handlePaymentCreationContinue:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
60
+
61
+
62
+ @end