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

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 (37) hide show
  1. package/lib/module/components/checkboxContainer.js +2 -1
  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 +5 -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/components/checkboxContainer.d.ts.map +1 -1
  21. package/lib/typescript/src/interface.d.ts +1 -0
  22. package/lib/typescript/src/interface.d.ts.map +1 -1
  23. package/lib/typescript/src/screens/emiScreen.d.ts.map +1 -1
  24. package/lib/typescript/src/screens/mainScreen.d.ts.map +1 -1
  25. package/lib/typescript/src/sharedContext/handleAutoNavigation.d.ts +1 -1
  26. package/lib/typescript/src/sharedContext/handleAutoNavigation.d.ts.map +1 -1
  27. package/package.json +2 -2
  28. package/src/components/checkboxContainer.tsx +1 -0
  29. package/src/interface.ts +1 -0
  30. package/src/screens/bnplScreen.tsx +3 -3
  31. package/src/screens/cardScreen.tsx +3 -3
  32. package/src/screens/emiScreen.tsx +4 -3
  33. package/src/screens/mainScreen.tsx +5 -4
  34. package/src/screens/netBankingScreen.tsx +3 -3
  35. package/src/screens/walletScreen.tsx +3 -3
  36. package/src/sdk-version.json +1 -1
  37. package/src/sharedContext/handleAutoNavigation.ts +4 -1
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,7 @@ 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
59
  const [transactionId, setTransactionId] = useState('');
60
60
  const isScreenFocused = useIsFocused()
61
61
  const appStateListenerRef = useRef<any>(null);
@@ -309,7 +309,7 @@ const MainScreen = ({route, navigation} : MainScreenProps) => {
309
309
  setShowWebView(false);
310
310
  paymentFailedMessage.current =
311
311
  checkoutDetailsHandler.checkoutDetails.errorMessage;
312
- setStatus('Failed');
312
+ setStatus(TransactionStatus.Failed);
313
313
  setFailedModalState(true);
314
314
  setLoadingState(false);
315
315
  return true;
@@ -638,7 +638,7 @@ const MainScreen = ({route, navigation} : MainScreenProps) => {
638
638
  let validity: string | null = null;
639
639
  if (!isEmpty(data!.expiryDateLocale)) {
640
640
  const date = formatDate(data!.expiryDateLocale!.split(' ')[0] ?? "");
641
- validity = `Till ${date}`;
641
+ validity = `${date}`;
642
642
  } else if (!isEmpty(data!.recurringExpiryDateLocale)) {
643
643
  const date = formatDate(data!.recurringExpiryDateLocale!.split(' ')[0] ?? "");
644
644
  validity = `${date}`;
@@ -749,6 +749,7 @@ const MainScreen = ({route, navigation} : MainScreenProps) => {
749
749
 
750
750
  const checkAutoNavigation = () => {
751
751
  const targetScreen = handleAutoNavigation(
752
+ status,
752
753
  savedCardArray
753
754
  )
754
755
  if (!targetScreen) {
@@ -836,7 +837,7 @@ const MainScreen = ({route, navigation} : MainScreenProps) => {
836
837
  if (timerRef.current) {
837
838
  clearInterval(timerRef.current);
838
839
  }
839
- setStatus('EXPIRED');
840
+ setStatus(TransactionStatus.Expired);
840
841
  setSessionExppireModalState(true);
841
842
  }
842
843
  // 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-beta4" }
@@ -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() === "")) ||