boxpay-checkout-reactnative-sdk 1.0.11-beta3 → 1.0.11-beta5

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 (36) hide show
  1. package/lib/module/components/checkboxContainer.js +3 -3
  2. package/lib/module/components/checkboxContainer.js.map +1 -1
  3. package/lib/module/interface.js +1 -0
  4. package/lib/module/interface.js.map +1 -1
  5. package/lib/module/screens/bnplScreen.js +3 -2
  6. package/lib/module/screens/bnplScreen.js.map +1 -1
  7. package/lib/module/screens/cardScreen.js +3 -3
  8. package/lib/module/screens/cardScreen.js.map +1 -1
  9. package/lib/module/screens/emiScreen.js +3 -3
  10. package/lib/module/screens/emiScreen.js.map +1 -1
  11. package/lib/module/screens/mainScreen.js +8 -5
  12. package/lib/module/screens/mainScreen.js.map +1 -1
  13. package/lib/module/screens/netBankingScreen.js +3 -2
  14. package/lib/module/screens/netBankingScreen.js.map +1 -1
  15. package/lib/module/screens/walletScreen.js +3 -2
  16. package/lib/module/screens/walletScreen.js.map +1 -1
  17. package/lib/module/sdk-version.json +1 -1
  18. package/lib/module/sharedContext/handleAutoNavigation.js +3 -2
  19. package/lib/module/sharedContext/handleAutoNavigation.js.map +1 -1
  20. package/lib/typescript/src/interface.d.ts +1 -0
  21. package/lib/typescript/src/interface.d.ts.map +1 -1
  22. package/lib/typescript/src/screens/emiScreen.d.ts.map +1 -1
  23. package/lib/typescript/src/screens/mainScreen.d.ts.map +1 -1
  24. package/lib/typescript/src/sharedContext/handleAutoNavigation.d.ts +1 -1
  25. package/lib/typescript/src/sharedContext/handleAutoNavigation.d.ts.map +1 -1
  26. package/package.json +2 -2
  27. package/src/components/checkboxContainer.tsx +4 -4
  28. package/src/interface.ts +1 -0
  29. package/src/screens/bnplScreen.tsx +3 -3
  30. package/src/screens/cardScreen.tsx +3 -3
  31. package/src/screens/emiScreen.tsx +4 -3
  32. package/src/screens/mainScreen.tsx +8 -4
  33. package/src/screens/netBankingScreen.tsx +3 -3
  34. package/src/screens/walletScreen.tsx +3 -3
  35. package/src/sdk-version.json +1 -1
  36. package/src/sharedContext/handleAutoNavigation.ts +4 -1
@@ -38,12 +38,13 @@ const styles = StyleSheet.create({
38
38
  checkBoxContainer : {
39
39
  flexDirection: 'row',
40
40
  marginTop: 10,
41
- alignItems: 'center'
41
+ alignItems: 'center',
42
+ marginHorizontal: 16
42
43
  },
43
44
  checkBoxText : {
44
45
  color: '#2D2B32',
45
46
  fontSize: 14,
46
- marginLeft: 6,
47
+ marginLeft: 6
47
48
  },
48
49
  checkboxBox: {
49
50
  width: 20,
@@ -51,8 +52,7 @@ const styles = StyleSheet.create({
51
52
  borderWidth: 2,
52
53
  borderRadius: 3,
53
54
  justifyContent: 'center',
54
- alignItems: 'center',
55
- marginLeft: 16,
55
+ alignItems: 'center'
56
56
  },
57
57
  checkmark: {
58
58
  color: '#fff',
package/src/interface.ts CHANGED
@@ -457,6 +457,7 @@ export interface HandleFetchStatusOptions {
457
457
  }
458
458
 
459
459
  export enum TransactionStatus {
460
+ NoAction = "NOACTION",
460
461
  RequiresAction = 'REQUIRESACTION',
461
462
  Failed = 'FAILED',
462
463
  Rejected = 'REJECTED',
@@ -9,7 +9,7 @@ import { useEffect, useRef, useState } from 'react';
9
9
  import { checkoutDetailsHandler, setCheckOutDetailsHandlerToDefault } from '../sharedContext/checkoutDetailsHandler';
10
10
  import LottieView from 'lottie-react-native';
11
11
  import Header from '../components/header';
12
- import type { PaymentClass, PaymentResultObject, BNPLScreenParams } from '../interface';
12
+ import { type PaymentClass, type PaymentResultObject, type BNPLScreenParams, TransactionStatus } from '../interface';
13
13
  import ShimmerView from '../components/shimmerView';
14
14
  import PaymentSuccess from '../components/paymentSuccess';
15
15
  import SessionExpire from '../components/sessionExpire';
@@ -54,7 +54,7 @@ const BNPLScreen = ({ navigation, route }: Props) => {
54
54
  const [sessionExpireModalOpen, setSessionExppireModalState] = useState(false);
55
55
  const [successfulTimeStamp, setSuccessfulTimeStamp] = useState('');
56
56
 
57
- const [status, setStatus] = useState<string>("NOACTION");
57
+ const [status, setStatus] = useState<string>(TransactionStatus.NoAction);
58
58
  const [transactionId, setTransactionId] = useState<string | null>(null);
59
59
 
60
60
  const backgroundApiInterval = useRef<NodeJS.Timeout | null>(null);
@@ -76,7 +76,7 @@ const BNPLScreen = ({ navigation, route }: Props) => {
76
76
  if (showWebView) {
77
77
  setShowWebView(false);
78
78
  paymentFailedMessage.current = checkoutDetails.errorMessage;
79
- setStatus('Failed');
79
+ setStatus(TransactionStatus.Failed);
80
80
  setFailedModalState(true);
81
81
  setLoading(false);
82
82
  return true;
@@ -24,7 +24,7 @@ import KnowMoreBottomSheet from '../components/knowMoreBottomSheet';
24
24
  import PaymentFailed from '../components/paymentFailed';
25
25
  import PaymentSuccess from '../components/paymentSuccess';
26
26
  import SessionExpire from '../components/sessionExpire';
27
- import { APIStatus, type CardScreenParams, type PaymentResultObject } from '../interface';
27
+ import { APIStatus, TransactionStatus, type CardScreenParams, type PaymentResultObject } from '../interface';
28
28
  import type { CheckoutStackParamList } from '../navigation';
29
29
  import cardPostRequest from '../postRequest/cardPostRequest';
30
30
  import emiPostRequest from '../postRequest/emiPostRequest';
@@ -130,7 +130,7 @@ const CardScreen = ({ route, navigation }: Props) => {
130
130
  const [sessionExpireModalOpen, setSessionExppireModalState] = useState(false);
131
131
  const [successfulTimeStamp, setSuccessfulTimeStamp] = useState('');
132
132
 
133
- const [status, setStatus] = useState<string>("NOACTION");
133
+ const [status, setStatus] = useState<string>(TransactionStatus.NoAction);
134
134
  const [transactionId, setTransactionId] = useState<string | null>(null);
135
135
 
136
136
  const backgroundApiInterval = useRef<NodeJS.Timeout | null>(null);
@@ -557,7 +557,7 @@ const CardScreen = ({ route, navigation }: Props) => {
557
557
  if (showWebView) {
558
558
  setShowWebView(false);
559
559
  paymentFailedMessage.current = checkoutDetails.errorMessage;
560
- setStatus('Failed');
560
+ setStatus(TransactionStatus.Failed);
561
561
  setFailedModalState(true);
562
562
  setLoading(false);
563
563
  return true;
@@ -14,7 +14,8 @@ import {
14
14
  type PaymentResultObject,
15
15
  type PaymentMethod,
16
16
  APIStatus,
17
- type EmiScreenParams
17
+ type EmiScreenParams,
18
+ TransactionStatus
18
19
  } from '../interface';
19
20
  import { checkoutDetailsHandler, setCheckOutDetailsHandlerToDefault } from '../sharedContext/checkoutDetailsHandler';
20
21
  import fetchPaymentMethods from '../postRequest/fetchPaymentMethods';
@@ -83,7 +84,7 @@ const EmiScreen = ({ navigation, route }: Props) => {
83
84
  const [sessionExpireModalOpen, setSessionExppireModalOpen] = useState(false);
84
85
  const [successfulTimeStamp, setSuccessfulTimeStamp] = useState('');
85
86
 
86
- const [status, setStatus] = useState<string>("NOACTION");
87
+ const [status, setStatus] = useState<string>(TransactionStatus.NoAction);
87
88
  const [transactionId, setTransactionId] = useState<string | null>(null);
88
89
 
89
90
  const [paymentHtml, setPaymentHtml] = useState('');
@@ -392,7 +393,7 @@ const EmiScreen = ({ navigation, route }: Props) => {
392
393
  if (showWebView) {
393
394
  setShowWebView(false);
394
395
  paymentFailedMessage.current = checkoutDetails.errorMessage;
395
- setStatus('Failed');
396
+ setStatus(TransactionStatus.Failed);
396
397
  setFailedModalOpen(true);
397
398
  setLoading(false);
398
399
  return true;
@@ -55,7 +55,8 @@ const MainScreen = ({route, navigation} : MainScreenProps) => {
55
55
  shopperToken = null,
56
56
  uiConfiguration = null
57
57
  } = route.params as BoxpayCheckoutProps || {};
58
- const [status, setStatus] = useState('NOACTION');
58
+ const [status, setStatus] = useState<string>(TransactionStatus.NoAction);
59
+ const statusRef = useRef(TransactionStatus.NoAction);
59
60
  const [transactionId, setTransactionId] = useState('');
60
61
  const isScreenFocused = useIsFocused()
61
62
  const appStateListenerRef = useRef<any>(null);
@@ -309,7 +310,7 @@ const MainScreen = ({route, navigation} : MainScreenProps) => {
309
310
  setShowWebView(false);
310
311
  paymentFailedMessage.current =
311
312
  checkoutDetailsHandler.checkoutDetails.errorMessage;
312
- setStatus('Failed');
313
+ setStatus(TransactionStatus.Failed);
313
314
  setFailedModalState(true);
314
315
  setLoadingState(false);
315
316
  return true;
@@ -486,9 +487,11 @@ const MainScreen = ({route, navigation} : MainScreenProps) => {
486
487
  if (['APPROVED', 'SUCCESS', 'PAID'].includes(response.data.status)) {
487
488
  setSuccessfulTimeStamp(response.data.lastPaidAtTimestampLocale);
488
489
  setTransactionId(response.data.lastTransactionId);
490
+ statusRef.current = TransactionStatus.Success;
489
491
  setStatus(TransactionStatus.Success);
490
492
  setSuccessModalState(true);
491
493
  } else if (['EXPIRED'].includes(response.data.status)) {
494
+ statusRef.current = TransactionStatus.Expired;
492
495
  setStatus(TransactionStatus.Expired);
493
496
  setSessionExppireModalState(true);
494
497
  }
@@ -638,7 +641,7 @@ const MainScreen = ({route, navigation} : MainScreenProps) => {
638
641
  let validity: string | null = null;
639
642
  if (!isEmpty(data!.expiryDateLocale)) {
640
643
  const date = formatDate(data!.expiryDateLocale!.split(' ')[0] ?? "");
641
- validity = `Till ${date}`;
644
+ validity = `${date}`;
642
645
  } else if (!isEmpty(data!.recurringExpiryDateLocale)) {
643
646
  const date = formatDate(data!.recurringExpiryDateLocale!.split(' ')[0] ?? "");
644
647
  validity = `${date}`;
@@ -749,6 +752,7 @@ const MainScreen = ({route, navigation} : MainScreenProps) => {
749
752
 
750
753
  const checkAutoNavigation = () => {
751
754
  const targetScreen = handleAutoNavigation(
755
+ statusRef.current,
752
756
  savedCardArray
753
757
  )
754
758
  if (!targetScreen) {
@@ -836,7 +840,7 @@ const MainScreen = ({route, navigation} : MainScreenProps) => {
836
840
  if (timerRef.current) {
837
841
  clearInterval(timerRef.current);
838
842
  }
839
- setStatus('EXPIRED');
843
+ setStatus(TransactionStatus.Expired);
840
844
  setSessionExppireModalState(true);
841
845
  }
842
846
  // const hours = Math.floor((timeDiff / (1000 * 60 * 60)) % 24);
@@ -11,7 +11,7 @@ import { checkoutDetailsHandler, setCheckOutDetailsHandlerToDefault } from '../s
11
11
  import LottieView from 'lottie-react-native';
12
12
  import Header from '../components/header';
13
13
  import { TextInput } from 'react-native-paper';
14
- import type { NetBankingScreenParams, PaymentClass, PaymentResultObject } from '../interface';
14
+ import { TransactionStatus, type NetBankingScreenParams, type PaymentClass, type PaymentResultObject } from '../interface';
15
15
  import ShimmerView from '../components/shimmerView';
16
16
  import PaymentSuccess from '../components/paymentSuccess';
17
17
  import SessionExpire from '../components/sessionExpire';
@@ -77,7 +77,7 @@ const NetBankingScreen = ({ navigation, route }: Props) => {
77
77
  const [sessionExpireModalOpen, setSessionExppireModalState] = useState(false);
78
78
  const [successfulTimeStamp, setSuccessfulTimeStamp] = useState('');
79
79
 
80
- const [status, setStatus] = useState<string>("NOACTION");
80
+ const [status, setStatus] = useState<string>(TransactionStatus.NoAction);
81
81
  const [transactionId, setTransactionId] = useState<string | null>(null);
82
82
 
83
83
  const backgroundApiInterval = useRef<NodeJS.Timeout | null>(null);
@@ -105,7 +105,7 @@ const NetBankingScreen = ({ navigation, route }: Props) => {
105
105
  if (showWebView) {
106
106
  setShowWebView(false);
107
107
  paymentFailedMessage.current = checkoutDetails.errorMessage;
108
- setStatus('Failed');
108
+ setStatus(TransactionStatus.Failed);
109
109
  setFailedModalState(true);
110
110
  setLoading(false);
111
111
  return true;
@@ -11,7 +11,7 @@ import { checkoutDetailsHandler, setCheckOutDetailsHandlerToDefault } from '../s
11
11
  import LottieView from 'lottie-react-native';
12
12
  import Header from '../components/header';
13
13
  import { TextInput } from 'react-native-paper';
14
- import type { PaymentClass, PaymentResultObject, WalletScreenParams } from '../interface';
14
+ import { TransactionStatus, type PaymentClass, type PaymentResultObject, type WalletScreenParams } from '../interface';
15
15
  import PaymentSelectorView from '../components/paymentSelector';
16
16
  import PaymentSuccess from '../components/paymentSuccess';
17
17
  import SessionExpire from '../components/sessionExpire';
@@ -61,7 +61,7 @@ const WalletScreen = ({ navigation, route }: Props) => {
61
61
  const [sessionExpireModalOpen, setSessionExppireModalState] = useState(false);
62
62
  const [successfulTimeStamp, setSuccessfulTimeStamp] = useState('');
63
63
 
64
- const [status, setStatus] = useState<string>("NOACTION");
64
+ const [status, setStatus] = useState<string>(TransactionStatus.NoAction);
65
65
  const [transactionId, setTransactionId] = useState<string | null>(null);
66
66
 
67
67
  const backgroundApiInterval = useRef<NodeJS.Timeout | null>(null);
@@ -92,7 +92,7 @@ const WalletScreen = ({ navigation, route }: Props) => {
92
92
  if (showWebView) {
93
93
  setShowWebView(false);
94
94
  paymentFailedMessage.current = checkoutDetails.errorMessage;
95
- setStatus('Failed');
95
+ setStatus(TransactionStatus.Failed);
96
96
  setFailedModalState(true);
97
97
  setLoading(false);
98
98
  return true;
@@ -1 +1 @@
1
- { "version": "1.0.11-beta3" }
1
+ { "version": "1.0.11-beta5" }
@@ -1,9 +1,10 @@
1
- import { ScreenRouteMap, type AutoNavigationScreen, type PaymentClass } from '../interface';
1
+ import { ScreenRouteMap, TransactionStatus, type AutoNavigationScreen, type PaymentClass } from '../interface';
2
2
  import { checkoutDetailsHandler } from './checkoutDetailsHandler';
3
3
  import { userDataHandler } from './userdataHandler';
4
4
 
5
5
 
6
6
  export const handleAutoNavigation = (
7
+ status : String,
7
8
  savedCardArray : PaymentClass[]
8
9
  ) : AutoNavigationScreen | null => {
9
10
  const {checkoutDetails} = checkoutDetailsHandler
@@ -13,6 +14,8 @@ export const handleAutoNavigation = (
13
14
 
14
15
  if (savedCardArray.length > 0) return null;
15
16
 
17
+ if(status !== TransactionStatus.NoAction) return null
18
+
16
19
  const isPersonalDataMissing =
17
20
  (checkoutDetails.isFullNameEnabled && (!userData.firstName || userData.firstName.trim() === "")) ||
18
21
  (checkoutDetails.isEmailEnabled && (!userData.email || userData.email.trim() === "")) ||