@primer-io/react-native 2.5.1 → 2.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 (77) hide show
  1. package/android/build.gradle +1 -1
  2. package/android/src/main/java/com/primerioreactnative/PrimerRN.kt +1 -0
  3. package/android/src/main/java/com/primerioreactnative/PrimerRNEventListener.kt +24 -1
  4. package/android/src/main/java/com/primerioreactnative/PrimerRNHeadlessUniversalCheckoutListener.kt +24 -1
  5. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerCheckoutAdditionalInfoRN.kt +13 -0
  6. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerCheckoutDataRN.kt +4 -1
  7. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerEvents.kt +1 -0
  8. package/android/src/main/java/com/primerioreactnative/extensions/PrimerCheckoutAdditionalInfo.kt +12 -0
  9. package/android/src/main/java/com/primerioreactnative/extensions/PrimerCheckoutData.kt +1 -1
  10. package/android/src/main/java/com/primerioreactnative/huc/datamodels/manager/raw/{PrimerRNHeadlessCheckoutInputData.kt → card/PrimerRNPRawCardData.kt} +2 -2
  11. package/android/src/main/java/com/primerioreactnative/huc/datamodels/manager/raw/phoneNumber/PrimerRNRawPhoneNumberData.kt +14 -0
  12. package/android/src/main/java/com/primerioreactnative/huc/manager/raw/PrimerRNHeadlessUniversalCheckoutRawManager.kt +33 -11
  13. package/android/src/main/java/com/primerioreactnative/utils/PrimerHeadlessUniversalCheckoutImplementedRNCallbacks.kt +2 -0
  14. package/android/src/main/java/com/primerioreactnative/utils/PrimerImplementedRNCallbacks.kt +2 -0
  15. package/ios/DataModels/ImplementedRNCallbacks.swift +6 -3
  16. package/ios/DataModels/RNTPrimerPhoneNumberData.swift +38 -0
  17. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.swift +23 -1
  18. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckoutRawDataManager.swift +11 -5
  19. package/ios/RNTPrimer.swift +72 -49
  20. package/lib/commonjs/Primer.js +14 -3
  21. package/lib/commonjs/Primer.js.map +1 -1
  22. package/lib/commonjs/RNPrimer.js +1 -1
  23. package/lib/commonjs/RNPrimer.js.map +1 -1
  24. package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckout.js +17 -6
  25. package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckout.js.map +1 -1
  26. package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckoutRawDataManager.js +4 -0
  27. package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckoutRawDataManager.js.map +1 -1
  28. package/lib/commonjs/headless_checkout/RNPrimerHeadlessUniversalCheckout.js +1 -1
  29. package/lib/commonjs/headless_checkout/RNPrimerHeadlessUniversalCheckout.js.map +1 -1
  30. package/lib/commonjs/headless_checkout/RNPrimerHeadlessUniversalCheckoutRawDataManager.js +10 -0
  31. package/lib/commonjs/headless_checkout/RNPrimerHeadlessUniversalCheckoutRawDataManager.js.map +1 -1
  32. package/lib/commonjs/index.js +14 -0
  33. package/lib/commonjs/index.js.map +1 -1
  34. package/lib/commonjs/models/PrimerCheckoutAdditionalInfo.js +2 -0
  35. package/lib/commonjs/models/PrimerCheckoutAdditionalInfo.js.map +1 -0
  36. package/lib/commonjs/models/PrimerCheckoutData.js +3 -0
  37. package/lib/commonjs/models/PrimerCheckoutData.js.map +1 -1
  38. package/lib/module/Primer.js +14 -3
  39. package/lib/module/Primer.js.map +1 -1
  40. package/lib/module/RNPrimer.js +1 -1
  41. package/lib/module/RNPrimer.js.map +1 -1
  42. package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckout.js +17 -6
  43. package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckout.js.map +1 -1
  44. package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckoutRawDataManager.js +4 -0
  45. package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckoutRawDataManager.js.map +1 -1
  46. package/lib/module/headless_checkout/RNPrimerHeadlessUniversalCheckout.js +1 -1
  47. package/lib/module/headless_checkout/RNPrimerHeadlessUniversalCheckout.js.map +1 -1
  48. package/lib/module/headless_checkout/RNPrimerHeadlessUniversalCheckoutRawDataManager.js +10 -0
  49. package/lib/module/headless_checkout/RNPrimerHeadlessUniversalCheckoutRawDataManager.js.map +1 -1
  50. package/lib/module/index.js +1 -0
  51. package/lib/module/index.js.map +1 -1
  52. package/lib/module/models/PrimerCheckoutAdditionalInfo.js +2 -0
  53. package/lib/module/models/PrimerCheckoutAdditionalInfo.js.map +1 -0
  54. package/lib/module/models/PrimerCheckoutData.js +2 -0
  55. package/lib/module/models/PrimerCheckoutData.js.map +1 -1
  56. package/lib/typescript/src/RNPrimer.d.ts +1 -1
  57. package/lib/typescript/src/headless_checkout/PrimerHeadlessUniversalCheckoutRawDataManager.d.ts +1 -0
  58. package/lib/typescript/src/headless_checkout/RNPrimerHeadlessUniversalCheckout.d.ts +1 -1
  59. package/lib/typescript/src/headless_checkout/RNPrimerHeadlessUniversalCheckoutRawDataManager.d.ts +1 -0
  60. package/lib/typescript/src/index.d.ts +1 -0
  61. package/lib/typescript/src/models/PrimerCheckoutAdditionalInfo.d.ts +10 -0
  62. package/lib/typescript/src/models/PrimerCheckoutData.d.ts +3 -1
  63. package/lib/typescript/src/models/PrimerRawData.d.ts +3 -0
  64. package/lib/typescript/src/models/PrimerSettings.d.ts +2 -0
  65. package/package.json +1 -1
  66. package/primer-io-react-native.podspec +1 -1
  67. package/src/Primer.ts +16 -0
  68. package/src/RNPrimer.ts +2 -0
  69. package/src/headless_checkout/PrimerHeadlessUniversalCheckout.ts +16 -0
  70. package/src/headless_checkout/PrimerHeadlessUniversalCheckoutRawDataManager.ts +4 -0
  71. package/src/headless_checkout/RNPrimerHeadlessUniversalCheckout.ts +2 -0
  72. package/src/headless_checkout/RNPrimerHeadlessUniversalCheckoutRawDataManager.ts +11 -0
  73. package/src/index.tsx +5 -1
  74. package/src/models/PrimerCheckoutAdditionalInfo.ts +11 -0
  75. package/src/models/PrimerCheckoutData.ts +5 -2
  76. package/src/models/PrimerRawData.ts +5 -1
  77. package/src/models/PrimerSettings.ts +8 -6
@@ -17,5 +17,5 @@ Pod::Spec.new do |s|
17
17
  s.source_files = "ios/**/*.{h,m,mm,swift}"
18
18
 
19
19
  s.dependency "React-Core"
20
- s.dependency "PrimerSDK", "2.5.0"
20
+ s.dependency "PrimerSDK", "2.7.0"
21
21
  end
package/src/Primer.ts CHANGED
@@ -7,6 +7,7 @@ import type { PrimerClientSession } from './models/PrimerClientSession';
7
7
  import type { PrimerPaymentMethodTokenData } from './models/PrimerPaymentMethodTokenData';
8
8
  import { PrimerError } from './models/PrimerError';
9
9
  import type { IPrimer, PrimerErrorHandler, PrimerPaymentCreationHandler, PrimerResumeHandler, PrimerTokenizationHandler } from './models/PrimerInterfaces';
10
+ import type { PrimerCheckoutAdditionalInfo } from './models/PrimerCheckoutAdditionalInfo';
10
11
 
11
12
  ///////////////////////////////////////////
12
13
  // DECISION HANDLERS
@@ -114,6 +115,7 @@ async function configureListeners(): Promise<void> {
114
115
  onClientSessionUpdate: (primerSettings?.onClientSessionUpdate !== undefined),
115
116
  onTokenizeSuccess: (primerSettings?.onTokenizeSuccess !== undefined),
116
117
  onResumeSuccess: (primerSettings?.onResumeSuccess !== undefined),
118
+ onResumePending: (primerSettings?.onResumePending !== undefined),
117
119
  onDismiss: (primerSettings?.onDismiss !== undefined),
118
120
  onError: (primerSettings?.onError !== undefined),
119
121
  };
@@ -172,6 +174,20 @@ async function configureListeners(): Promise<void> {
172
174
  });
173
175
  }
174
176
 
177
+ if (implementedRNCallbacks.onResumePending) {
178
+ RNPrimer.addListener(
179
+ 'onResumePending',
180
+ (additionalInfo) => {
181
+ if (primerSettings && primerSettings.onResumePending) {
182
+ const checkoutAdditionalInfo: PrimerCheckoutAdditionalInfo = additionalInfo;
183
+ primerSettings.onResumePending(checkoutAdditionalInfo);
184
+ } else {
185
+ // Ignore!
186
+ }
187
+ }
188
+ );
189
+ }
190
+
175
191
  if (implementedRNCallbacks.onDismiss) {
176
192
  RNPrimer.addListener('onDismiss', _ => {
177
193
  if (primerSettings && primerSettings.onDismiss) {
package/src/RNPrimer.ts CHANGED
@@ -14,6 +14,7 @@ type EventType =
14
14
  | 'onDismiss'
15
15
  | 'onTokenizeSuccess'
16
16
  | 'onResumeSuccess'
17
+ | 'onResumePending'
17
18
  | 'detectImplementedRNCallbacks';
18
19
 
19
20
  export interface IPrimerError {
@@ -31,6 +32,7 @@ const eventTypes: EventType[] = [
31
32
  'onDismiss',
32
33
  'onTokenizeSuccess',
33
34
  'onResumeSuccess',
35
+ 'onResumePending',
34
36
  'detectImplementedRNCallbacks'
35
37
  ];
36
38
 
@@ -1,5 +1,6 @@
1
1
  import RNPrimerHeadlessUniversalCheckout from './RNPrimerHeadlessUniversalCheckout';
2
2
  import type { PrimerCheckoutData } from '../models/PrimerCheckoutData';
3
+ import type { PrimerCheckoutAdditionalInfo } from '../models/PrimerCheckoutAdditionalInfo';
3
4
  import type { PrimerCheckoutPaymentMethodData } from '../models/PrimerCheckoutPaymentMethodData';
4
5
  import type { PrimerTokenizationHandler, PrimerResumeHandler, PrimerPaymentCreationHandler } from '../models/PrimerInterfaces';
5
6
  import type { PrimerHeadlessUniversalCheckoutStartResponse } from './types';
@@ -102,6 +103,7 @@ async function configureListeners(): Promise<void> {
102
103
  onClientSessionUpdate: (primerSettings?.onClientSessionUpdate !== undefined),
103
104
  onTokenizeSuccess: (primerSettings?.onTokenizeSuccess !== undefined),
104
105
  onResumeSuccess: (primerSettings?.onResumeSuccess !== undefined),
106
+ onResumePending: (primerSettings?.onResumePending !== undefined),
105
107
  onDismiss: false,
106
108
  onError: (primerSettings?.onError !== undefined),
107
109
  onHUCAvailablePaymentMethodsLoaded: (primerSettings?.onAvailablePaymentMethodsLoad !== undefined),
@@ -127,6 +129,20 @@ async function configureListeners(): Promise<void> {
127
129
  );
128
130
  }
129
131
 
132
+ if (implementedRNCallbacks.onResumePending) {
133
+ RNPrimerHeadlessUniversalCheckout.addListener(
134
+ 'onResumePending',
135
+ (additionalInfo) => {
136
+ if (primerSettings && primerSettings.onResumePending) {
137
+ const checkoutAdditionalInfo: PrimerCheckoutAdditionalInfo = additionalInfo;
138
+ primerSettings.onResumePending(checkoutAdditionalInfo);
139
+ } else {
140
+ // Ignore!
141
+ }
142
+ }
143
+ );
144
+ }
145
+
130
146
  if (implementedRNCallbacks.onHUCPrepareStart) {
131
147
  RNPrimerHeadlessUniversalCheckout.addListener(
132
148
  'onHUCPrepareStart',
@@ -99,6 +99,10 @@ class PrimerHeadlessUniversalCheckoutRawDataManagerClass {
99
99
  submit(): Promise<void> {
100
100
  return RNPrimerHeadlessUniversalCheckoutRawDataManager.submit();
101
101
  }
102
+
103
+ disposeRawDataManager(): Promise<void> {
104
+ return RNPrimerHeadlessUniversalCheckoutRawDataManager.disposeRawDataManager();
105
+ }
102
106
  }
103
107
 
104
108
  export const PrimerHeadlessUniversalCheckoutRawDataManager = new PrimerHeadlessUniversalCheckoutRawDataManagerClass();
@@ -11,6 +11,7 @@ type EventType =
11
11
  | 'onHUCPaymentMethodShow'
12
12
  | 'onTokenizeSuccess'
13
13
  | 'onResumeSuccess'
14
+ | 'onResumePending'
14
15
  | 'onBeforePaymentCreate'
15
16
  | 'onBeforeClientSessionUpdate'
16
17
  | 'onClientSessionUpdate'
@@ -24,6 +25,7 @@ const eventTypes: EventType[] = [
24
25
  'onHUCPaymentMethodShow',
25
26
  'onTokenizeSuccess',
26
27
  'onResumeSuccess',
28
+ 'onResumePending',
27
29
  'onBeforePaymentCreate',
28
30
  'onBeforeClientSessionUpdate',
29
31
  'onClientSessionUpdate',
@@ -86,6 +86,17 @@ const RNPrimerHeadlessUniversalCheckoutRawDataManager = {
86
86
  }
87
87
  });
88
88
  },
89
+
90
+ disposeRawDataManager: (): Promise<void> => {
91
+ return new Promise(async (resolve, reject) => {
92
+ try {
93
+ await PrimerHeadlessUniversalCheckoutRawDataManager.disposeRawDataManager();
94
+ resolve();
95
+ } catch (e) {
96
+ reject(e);
97
+ }
98
+ });
99
+ },
89
100
  }
90
101
 
91
102
  export default RNPrimerHeadlessUniversalCheckoutRawDataManager;
package/src/index.tsx CHANGED
@@ -25,7 +25,11 @@ export {
25
25
  PrimerRawData,
26
26
  PrimerRawCardData
27
27
  } from './models/PrimerRawData';
28
- export {
28
+ export {
29
+ PrimerCheckoutAdditionalInfo,
30
+ MultibancoCheckoutAdditionalInfo
31
+ } from './models/PrimerCheckoutAdditionalInfo';
32
+ export {
29
33
  PrimerCheckoutData,
30
34
  PrimerCheckoutDataPayment,
31
35
  } from './models/PrimerCheckoutData';
@@ -0,0 +1,11 @@
1
+ export type PrimerCheckoutAdditionalInfo = IPrimerCheckoutAdditionalInfo;
2
+
3
+ interface IPrimerCheckoutAdditionalInfo {}
4
+
5
+ export type MultibancoCheckoutAdditionalInfo = IMultibancoCheckoutAdditionalInfo;
6
+
7
+ interface IMultibancoCheckoutAdditionalInfo extends IPrimerCheckoutAdditionalInfo {
8
+ expiresAt?: string;
9
+ entity?: string;
10
+ reference?: string;
11
+ }
@@ -1,7 +1,10 @@
1
+ import type { PrimerCheckoutAdditionalInfo } from "./PrimerCheckoutAdditionalInfo";
2
+
1
3
  export type PrimerCheckoutData = IPrimerCheckoutData;
2
4
 
3
5
  interface IPrimerCheckoutData {
4
- payment: IPrimerCheckoutDataPayment;
6
+ payment?: IPrimerCheckoutDataPayment;
7
+ additionalInfo?: PrimerCheckoutAdditionalInfo
5
8
  }
6
9
 
7
10
  export type PrimerCheckoutDataPayment = IPrimerCheckoutDataPayment;
@@ -15,4 +18,4 @@ interface IPrimerCheckoutDataPayment {
15
18
  enum PrimerPaymentErrorCode {
16
19
  FAILED = 'payment-failed',
17
20
  CANCELLED_BY_CUSTOMER = 'cancelled-by-customer',
18
- }
21
+ }
@@ -6,4 +6,8 @@ export interface PrimerRawCardData extends PrimerRawData {
6
6
  expiryYear: string;
7
7
  cvv: string;
8
8
  cardholderName?: string;
9
- }
9
+ }
10
+
11
+ export interface PrimerRawPhoneNumberData extends PrimerRawData {
12
+ phoneNumber: string;
13
+ }
@@ -1,10 +1,11 @@
1
- import type {
2
- PrimerErrorHandler,
3
- PrimerPaymentCreationHandler,
4
- PrimerResumeHandler,
5
- PrimerTokenizationHandler
1
+ import type {
2
+ PrimerErrorHandler,
3
+ PrimerPaymentCreationHandler,
4
+ PrimerResumeHandler,
5
+ PrimerTokenizationHandler
6
6
  } from "./PrimerInterfaces";
7
7
  import type { PrimerCheckoutData } from "./PrimerCheckoutData";
8
+ import type { PrimerCheckoutAdditionalInfo } from "./PrimerCheckoutAdditionalInfo";
8
9
  import type { PrimerCheckoutPaymentMethodData } from "./PrimerCheckoutPaymentMethodData";
9
10
  import type { PrimerClientSession } from "./PrimerClientSession";
10
11
  import type { PrimerPaymentMethodTokenData } from "./PrimerPaymentMethodTokenData";
@@ -27,9 +28,10 @@ interface IPrimerSettings {
27
28
  onCheckoutComplete?: (checkoutData: PrimerCheckoutData) => void;
28
29
  onTokenizeSuccess?: (paymentMethodTokenData: PrimerPaymentMethodTokenData, handler: PrimerTokenizationHandler) => void;
29
30
  onResumeSuccess?: (resumeToken: string, handler: PrimerResumeHandler) => void;
31
+ onResumePending?: (additionalInfo: PrimerCheckoutAdditionalInfo) => void;
30
32
  // PrimerErrorHandler will be undefined on the HUC flow.
31
33
  onError?: (error: PrimerError, checkoutData: PrimerCheckoutData | null, handler: PrimerErrorHandler | undefined) => void;
32
-
34
+
33
35
  // Only on main SDK
34
36
  onDismiss?: () => void;
35
37