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.
- package/lib/module/components/checkboxContainer.js +3 -3
- package/lib/module/components/checkboxContainer.js.map +1 -1
- package/lib/module/interface.js +1 -0
- package/lib/module/interface.js.map +1 -1
- package/lib/module/screens/bnplScreen.js +3 -2
- package/lib/module/screens/bnplScreen.js.map +1 -1
- package/lib/module/screens/cardScreen.js +3 -3
- package/lib/module/screens/cardScreen.js.map +1 -1
- package/lib/module/screens/emiScreen.js +3 -3
- package/lib/module/screens/emiScreen.js.map +1 -1
- package/lib/module/screens/mainScreen.js +8 -5
- package/lib/module/screens/mainScreen.js.map +1 -1
- package/lib/module/screens/netBankingScreen.js +3 -2
- package/lib/module/screens/netBankingScreen.js.map +1 -1
- package/lib/module/screens/walletScreen.js +3 -2
- package/lib/module/screens/walletScreen.js.map +1 -1
- package/lib/module/sdk-version.json +1 -1
- package/lib/module/sharedContext/handleAutoNavigation.js +3 -2
- package/lib/module/sharedContext/handleAutoNavigation.js.map +1 -1
- package/lib/typescript/src/interface.d.ts +1 -0
- package/lib/typescript/src/interface.d.ts.map +1 -1
- package/lib/typescript/src/screens/emiScreen.d.ts.map +1 -1
- package/lib/typescript/src/screens/mainScreen.d.ts.map +1 -1
- package/lib/typescript/src/sharedContext/handleAutoNavigation.d.ts +1 -1
- package/lib/typescript/src/sharedContext/handleAutoNavigation.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/components/checkboxContainer.tsx +4 -4
- package/src/interface.ts +1 -0
- package/src/screens/bnplScreen.tsx +3 -3
- package/src/screens/cardScreen.tsx +3 -3
- package/src/screens/emiScreen.tsx +4 -3
- package/src/screens/mainScreen.tsx +8 -4
- package/src/screens/netBankingScreen.tsx +3 -3
- package/src/screens/walletScreen.tsx +3 -3
- package/src/sdk-version.json +1 -1
- 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
|
@@ -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
|
|
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>(
|
|
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(
|
|
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>(
|
|
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(
|
|
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>(
|
|
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(
|
|
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(
|
|
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(
|
|
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 =
|
|
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(
|
|
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
|
|
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>(
|
|
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(
|
|
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
|
|
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>(
|
|
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(
|
|
95
|
+
setStatus(TransactionStatus.Failed);
|
|
96
96
|
setFailedModalState(true);
|
|
97
97
|
setLoading(false);
|
|
98
98
|
return true;
|
package/src/sdk-version.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{ "version": "1.0.11-
|
|
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() === "")) ||
|