@os1-platform/dispatch-mobile 3.0.4 → 3.1.1
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/android/build.gradle +38 -9
- package/android/gradle.properties +17 -2
- package/lib/commonjs/components/dispatch/DispatchExecNavigator.js.map +1 -1
- package/lib/commonjs/components/executiontasks/forms/widgets/DateTimeWidget.js.map +1 -1
- package/lib/commonjs/components/executiontasks/imageCapture/CaptureUtils.js +1 -1
- package/lib/commonjs/components/executiontasks/imageCapture/CaptureUtils.js.map +1 -1
- package/lib/commonjs/components/executiontasks/validateOTP/ValidateOTPET.js +467 -287
- package/lib/commonjs/components/executiontasks/validateOTP/ValidateOTPET.js.map +1 -1
- package/lib/commonjs/components/executiontasks/validateOTP/ValidateOTPSchema.js +14 -1
- package/lib/commonjs/components/executiontasks/validateOTP/ValidateOTPSchema.js.map +1 -1
- package/lib/commonjs/components/executiontasks/validateOTP/ValidateOtpStyles.js +270 -0
- package/lib/commonjs/components/executiontasks/validateOTP/ValidateOtpStyles.js.map +1 -0
- package/lib/commonjs/components/executiontasks/validateOTP/components/ContactListView.js +99 -0
- package/lib/commonjs/components/executiontasks/validateOTP/components/ContactListView.js.map +1 -0
- package/lib/commonjs/components/executiontasks/validateOTP/components/OTPView.js +195 -0
- package/lib/commonjs/components/executiontasks/validateOTP/components/OTPView.js.map +1 -0
- package/lib/commonjs/components/executiontasks/validateOTP/components/VerificationComplete.js +106 -0
- package/lib/commonjs/components/executiontasks/validateOTP/components/VerificationComplete.js.map +1 -0
- package/lib/commonjs/components/executiontasks/validateOTP/constants.js +12 -5
- package/lib/commonjs/components/executiontasks/validateOTP/constants.js.map +1 -1
- package/lib/commonjs/components/executiontasks/validateOTP/sub-components/ContactCard.js +68 -0
- package/lib/commonjs/components/executiontasks/validateOTP/sub-components/ContactCard.js.map +1 -0
- package/lib/commonjs/components/executiontasks/validateOTP/sub-components/OTPInput.js +12 -5
- package/lib/commonjs/components/executiontasks/validateOTP/sub-components/OTPInput.js.map +1 -1
- package/lib/commonjs/components/executiontasks/validateOTP/sub-components/ResendOTPButton.js +61 -0
- package/lib/commonjs/components/executiontasks/validateOTP/sub-components/ResendOTPButton.js.map +1 -0
- package/lib/commonjs/components/executiontasks/validateOTP/utils.js +235 -114
- package/lib/commonjs/components/executiontasks/validateOTP/utils.js.map +1 -1
- package/lib/commonjs/components/utils/Scale.js +22 -0
- package/lib/commonjs/components/utils/Scale.js.map +1 -0
- package/lib/commonjs/components/widgets/ConfirmCancelModal.js +47 -0
- package/lib/commonjs/components/widgets/ConfirmCancelModal.js.map +1 -0
- package/lib/commonjs/components/widgets/SnackBarCustom.js +36 -4
- package/lib/commonjs/components/widgets/SnackBarCustom.js.map +1 -1
- package/lib/commonjs/components/widgets/SplitTextInput.js +48 -18
- package/lib/commonjs/components/widgets/SplitTextInput.js.map +1 -1
- package/lib/commonjs/constants/apiConstants.js +4 -1
- package/lib/commonjs/constants/apiConstants.js.map +1 -1
- package/lib/commonjs/constants/constants.js +2 -1
- package/lib/commonjs/constants/constants.js.map +1 -1
- package/lib/commonjs/icons/icExclamationcircleo_dark.svg +3 -0
- package/lib/commonjs/icons/icFailed.gif +0 -0
- package/lib/commonjs/icons/icRadioChecked.svg +4 -0
- package/lib/commonjs/icons/icRadioUnchecked.svg +4 -0
- package/lib/commonjs/icons/icSuccess.gif +0 -0
- package/lib/commonjs/icons/index.js +28 -0
- package/lib/commonjs/icons/index.js.map +1 -0
- package/lib/commonjs/index.js +19 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/manager/sdk/DispatchSDKManager.js +5 -4
- package/lib/commonjs/manager/sdk/DispatchSDKManager.js.map +1 -1
- package/lib/commonjs/manager/sdk/callbacksHandler.js +9 -2
- package/lib/commonjs/manager/sdk/callbacksHandler.js.map +1 -1
- package/lib/commonjs/manager/syncmanager/constants.js +3 -1
- package/lib/commonjs/manager/syncmanager/constants.js.map +1 -1
- package/lib/commonjs/manager/syncmanager/document/DocumentHttpClient.js +3 -2
- package/lib/commonjs/manager/syncmanager/document/DocumentHttpClient.js.map +1 -1
- package/lib/commonjs/manager/syncmanager/document/DocumentSyncManager.js +70 -80
- package/lib/commonjs/manager/syncmanager/document/DocumentSyncManager.js.map +1 -1
- package/lib/commonjs/models/sdk.js +1 -0
- package/lib/commonjs/models/sdk.js.map +1 -1
- package/lib/commonjs/ui/screens/ValidateOTPScreen.js +132 -12
- package/lib/commonjs/ui/screens/ValidateOTPScreen.js.map +1 -1
- package/lib/commonjs/utils/ApiUtils.js +122 -3
- package/lib/commonjs/utils/ApiUtils.js.map +1 -1
- package/lib/commonjs/utils/ExecTaskUtils.js +67 -7
- package/lib/commonjs/utils/ExecTaskUtils.js.map +1 -1
- package/lib/commonjs/utils/context/valdiateOTPContext.js +11 -0
- package/lib/commonjs/utils/context/valdiateOTPContext.js.map +1 -0
- package/lib/commonjs/utils/helper.js.map +1 -1
- package/lib/commonjs/utils/hooks/useTimer.js +68 -30
- package/lib/commonjs/utils/hooks/useTimer.js.map +1 -1
- package/lib/module/components/dispatch/DispatchExecNavigator.js.map +1 -1
- package/lib/module/components/executiontasks/forms/widgets/DateTimeWidget.js.map +1 -1
- package/lib/module/components/executiontasks/imageCapture/CaptureUtils.js +1 -1
- package/lib/module/components/executiontasks/imageCapture/CaptureUtils.js.map +1 -1
- package/lib/module/components/executiontasks/validateOTP/ValidateOTPET.js +480 -290
- package/lib/module/components/executiontasks/validateOTP/ValidateOTPET.js.map +1 -1
- package/lib/module/components/executiontasks/validateOTP/ValidateOTPSchema.js +14 -0
- package/lib/module/components/executiontasks/validateOTP/ValidateOTPSchema.js.map +1 -1
- package/lib/module/components/executiontasks/validateOTP/ValidateOtpStyles.js +264 -0
- package/lib/module/components/executiontasks/validateOTP/ValidateOtpStyles.js.map +1 -0
- package/lib/module/components/executiontasks/validateOTP/components/ContactListView.js +88 -0
- package/lib/module/components/executiontasks/validateOTP/components/ContactListView.js.map +1 -0
- package/lib/module/components/executiontasks/validateOTP/components/OTPView.js +194 -0
- package/lib/module/components/executiontasks/validateOTP/components/OTPView.js.map +1 -0
- package/lib/module/components/executiontasks/validateOTP/components/VerificationComplete.js +96 -0
- package/lib/module/components/executiontasks/validateOTP/components/VerificationComplete.js.map +1 -0
- package/lib/module/components/executiontasks/validateOTP/constants.js +11 -4
- package/lib/module/components/executiontasks/validateOTP/constants.js.map +1 -1
- package/lib/module/components/executiontasks/validateOTP/sub-components/ContactCard.js +59 -0
- package/lib/module/components/executiontasks/validateOTP/sub-components/ContactCard.js.map +1 -0
- package/lib/module/components/executiontasks/validateOTP/sub-components/OTPInput.js +11 -5
- package/lib/module/components/executiontasks/validateOTP/sub-components/OTPInput.js.map +1 -1
- package/lib/module/components/executiontasks/validateOTP/sub-components/ResendOTPButton.js +52 -0
- package/lib/module/components/executiontasks/validateOTP/sub-components/ResendOTPButton.js.map +1 -0
- package/lib/module/components/executiontasks/validateOTP/utils.js +219 -108
- package/lib/module/components/executiontasks/validateOTP/utils.js.map +1 -1
- package/lib/module/components/utils/Scale.js +14 -0
- package/lib/module/components/utils/Scale.js.map +1 -0
- package/lib/module/components/widgets/ConfirmCancelModal.js +40 -0
- package/lib/module/components/widgets/ConfirmCancelModal.js.map +1 -0
- package/lib/module/components/widgets/SnackBarCustom.js +36 -4
- package/lib/module/components/widgets/SnackBarCustom.js.map +1 -1
- package/lib/module/components/widgets/SplitTextInput.js +48 -19
- package/lib/module/components/widgets/SplitTextInput.js.map +1 -1
- package/lib/module/constants/apiConstants.js +4 -1
- package/lib/module/constants/apiConstants.js.map +1 -1
- package/lib/module/constants/constants.js +1 -0
- package/lib/module/constants/constants.js.map +1 -1
- package/lib/module/icons/icExclamationcircleo_dark.svg +3 -0
- package/lib/module/icons/icFailed.gif +0 -0
- package/lib/module/icons/icRadioChecked.svg +4 -0
- package/lib/module/icons/icRadioUnchecked.svg +4 -0
- package/lib/module/icons/icSuccess.gif +0 -0
- package/lib/module/icons/index.js +5 -0
- package/lib/module/icons/index.js.map +1 -0
- package/lib/module/index.js +2 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/manager/sdk/DispatchSDKManager.js +5 -3
- package/lib/module/manager/sdk/DispatchSDKManager.js.map +1 -1
- package/lib/module/manager/sdk/callbacksHandler.js +12 -3
- package/lib/module/manager/sdk/callbacksHandler.js.map +1 -1
- package/lib/module/manager/syncmanager/constants.js +2 -0
- package/lib/module/manager/syncmanager/constants.js.map +1 -1
- package/lib/module/manager/syncmanager/document/DocumentHttpClient.js +3 -2
- package/lib/module/manager/syncmanager/document/DocumentHttpClient.js.map +1 -1
- package/lib/module/manager/syncmanager/document/DocumentSyncManager.js +70 -80
- package/lib/module/manager/syncmanager/document/DocumentSyncManager.js.map +1 -1
- package/lib/module/models/sdk.js +2 -0
- package/lib/module/models/sdk.js.map +1 -1
- package/lib/module/ui/screens/ValidateOTPScreen.js +139 -11
- package/lib/module/ui/screens/ValidateOTPScreen.js.map +1 -1
- package/lib/module/utils/ApiUtils.js +118 -2
- package/lib/module/utils/ApiUtils.js.map +1 -1
- package/lib/module/utils/ExecTaskUtils.js +66 -7
- package/lib/module/utils/ExecTaskUtils.js.map +1 -1
- package/lib/module/utils/context/valdiateOTPContext.js +4 -0
- package/lib/module/utils/context/valdiateOTPContext.js.map +1 -0
- package/lib/module/utils/helper.js +1 -0
- package/lib/module/utils/helper.js.map +1 -1
- package/lib/module/utils/hooks/useTimer.js +67 -30
- package/lib/module/utils/hooks/useTimer.js.map +1 -1
- package/lib/typescript/components/executiontasks/collectPayment/PaymentStyles.d.ts +3 -3
- package/lib/typescript/components/executiontasks/deliver/DeliverETInput.d.ts +0 -1
- package/lib/typescript/components/executiontasks/scan/modalConstant.d.ts +0 -1
- package/lib/typescript/components/executiontasks/validateOTP/ValidateOTPET.d.ts +3 -3
- package/lib/typescript/components/executiontasks/validateOTP/ValidateOTPSchema.d.ts +169 -5
- package/lib/typescript/components/executiontasks/validateOTP/ValidateOtpStyles.d.ts +255 -0
- package/lib/typescript/components/executiontasks/validateOTP/components/ContactListView.d.ts +3 -0
- package/lib/typescript/components/executiontasks/validateOTP/components/OTPView.d.ts +3 -0
- package/lib/typescript/components/executiontasks/validateOTP/components/VerificationComplete.d.ts +3 -0
- package/lib/typescript/components/executiontasks/validateOTP/constants.d.ts +11 -4
- package/lib/typescript/components/executiontasks/validateOTP/sub-components/ContactCard.d.ts +8 -0
- package/lib/typescript/components/executiontasks/validateOTP/sub-components/ResendOTPButton.d.ts +12 -0
- package/lib/typescript/components/executiontasks/validateOTP/utils.d.ts +31 -7
- package/lib/typescript/components/utils/Scale.d.ts +4 -0
- package/lib/typescript/components/widgets/ConfirmCancelModal.d.ts +9 -0
- package/lib/typescript/components/widgets/SnackBarCustom.d.ts +4 -8
- package/lib/typescript/components/widgets/SplitTextInput.d.ts +1 -1
- package/lib/typescript/components/widgets/Timer.d.ts +3 -3
- package/lib/typescript/constants/apiConstants.d.ts +3 -0
- package/lib/typescript/constants/constants.d.ts +1 -0
- package/lib/typescript/icons/index.d.ts +4 -0
- package/lib/typescript/index.d.ts +2 -0
- package/lib/typescript/manager/sdk/callbacksHandler.d.ts +4 -1
- package/lib/typescript/manager/syncmanager/constants.d.ts +2 -0
- package/lib/typescript/models/execTasks/ETConfig.d.ts +1 -1
- package/lib/typescript/models/sdk.d.ts +3 -0
- package/lib/typescript/network/GraphQLClient.d.ts +4 -4
- package/lib/typescript/styles/executionTasks/CommonStyles.d.ts +2 -2
- package/lib/typescript/ui/screens/HttpRequestScreen.d.ts +0 -1
- package/lib/typescript/utils/ApiUtils.d.ts +6 -2
- package/lib/typescript/utils/ExecTaskUtils.d.ts +1 -0
- package/lib/typescript/utils/context/paymentContext.d.ts +0 -1
- package/lib/typescript/utils/context/valdiateOTPContext.d.ts +6 -0
- package/lib/typescript/utils/hooks/useModal.d.ts +0 -2
- package/lib/typescript/utils/hooks/useTimer.d.ts +7 -5
- package/package.json +46 -44
- package/src/components/dispatch/DispatchExecNavigator.tsx +1 -1
- package/src/components/executiontasks/forms/widgets/DateTimeWidget.tsx +2 -2
- package/src/components/executiontasks/imageCapture/CaptureUtils.ts +1 -1
- package/src/components/executiontasks/validateOTP/ValidateOTPET.tsx +654 -381
- package/src/components/executiontasks/validateOTP/ValidateOTPSchema.ts +193 -8
- package/src/components/executiontasks/validateOTP/ValidateOtpStyles.ts +296 -0
- package/src/components/executiontasks/validateOTP/components/ContactListView.tsx +109 -0
- package/src/components/executiontasks/validateOTP/components/OTPView.tsx +216 -0
- package/src/components/executiontasks/validateOTP/components/VerificationComplete.tsx +124 -0
- package/src/components/executiontasks/validateOTP/constants.ts +11 -4
- package/src/components/executiontasks/validateOTP/sub-components/ContactCard.tsx +72 -0
- package/src/components/executiontasks/validateOTP/sub-components/OTPInput.tsx +13 -7
- package/src/components/executiontasks/validateOTP/sub-components/ResendOTPButton.tsx +86 -0
- package/src/components/executiontasks/validateOTP/utils.ts +313 -143
- package/src/components/utils/Scale.ts +13 -0
- package/src/components/widgets/ConfirmCancelModal.tsx +49 -0
- package/src/components/widgets/SnackBarCustom.tsx +37 -13
- package/src/components/widgets/SplitTextInput.tsx +58 -21
- package/src/constants/apiConstants.ts +3 -0
- package/src/constants/constants.ts +2 -2
- package/src/icons/icExclamationcircleo_dark.svg +3 -0
- package/src/icons/icFailed.gif +0 -0
- package/src/icons/icRadioChecked.svg +4 -0
- package/src/icons/icRadioUnchecked.svg +4 -0
- package/src/icons/icSuccess.gif +0 -0
- package/src/icons/index.ts +5 -0
- package/src/index.tsx +2 -0
- package/src/manager/sdk/DispatchSDKManager.ts +6 -5
- package/src/manager/sdk/callbacksHandler.ts +29 -12
- package/src/manager/syncmanager/constants.ts +2 -0
- package/src/manager/syncmanager/document/DocumentHttpClient.ts +29 -29
- package/src/manager/syncmanager/document/DocumentSyncManager.ts +75 -84
- package/src/models/sdk.ts +6 -0
- package/src/ui/screens/ValidateOTPScreen.tsx +194 -32
- package/src/utils/ApiUtils.ts +131 -3
- package/src/utils/ExecTaskUtils.ts +77 -15
- package/src/utils/context/valdiateOTPContext.ts +9 -0
- package/src/utils/helper.ts +0 -1
- package/src/utils/hooks/useTimer.ts +94 -36
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
|
+
/* eslint-disable react-native/no-inline-styles */
|
|
3
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
4
|
+
import React, { useEffect, useLayoutEffect } from 'react';
|
|
5
|
+
import { BackHandler, Text, View } from 'react-native';
|
|
6
|
+
import { useFocusEffect } from '@react-navigation/native';
|
|
7
|
+
import Icon from 'react-native-vector-icons/MaterialIcons';
|
|
8
|
+
|
|
9
|
+
// Components
|
|
10
|
+
import OTPInput from '../sub-components/OTPInput';
|
|
11
|
+
import { ResendOTPButton } from '../sub-components/ResendOTPButton';
|
|
12
|
+
|
|
13
|
+
// Styles
|
|
14
|
+
import styles from '../ValidateOtpStyles';
|
|
15
|
+
|
|
16
|
+
// Utilities
|
|
17
|
+
import { maskContact } from '../../../../utils/ExecTaskUtils';
|
|
18
|
+
import { resendOTP, updateResendCount, VALIDATE_OTP_SCREENS } from '../utils';
|
|
19
|
+
import useResendOtpTimer from '../../../../utils/hooks/useTimer';
|
|
20
|
+
|
|
21
|
+
// Types
|
|
22
|
+
|
|
23
|
+
import { SnackBarType } from '../../../../components/widgets/SnackBarCustom';
|
|
24
|
+
import { ERROR_RESEND_OTP, OTP_SENT_SUCCESSFULLY } from '../constants';
|
|
25
|
+
|
|
26
|
+
// Analytics
|
|
27
|
+
import { fireEventWithScreenName } from '../../../../analytics/sentry/SentryAnalyticsUtils';
|
|
28
|
+
import { ScreenNameSdkConstants, SentryEventNameSdkConstants, SeverityLevelValue } from '../../../../analytics/sentry/SentrySdkConstants';
|
|
29
|
+
export const OTPView = props => {
|
|
30
|
+
var _props$resendConfig, _props$validateMessag, _props$selectedContac, _props$selectedContac2;
|
|
31
|
+
const {
|
|
32
|
+
formattedTime,
|
|
33
|
+
timer,
|
|
34
|
+
resetTimer
|
|
35
|
+
} = useResendOtpTimer((_props$resendConfig = props.resendConfig) === null || _props$resendConfig === void 0 ? void 0 : _props$resendConfig.enableDelay);
|
|
36
|
+
const handleBackPress = () => {
|
|
37
|
+
if (props.doorstepOTP && props.isContactVisited) {
|
|
38
|
+
props.setCurrentScreen(VALIDATE_OTP_SCREENS.CONTACT_LIST);
|
|
39
|
+
} else {
|
|
40
|
+
props.handleBackNavigation();
|
|
41
|
+
}
|
|
42
|
+
props.setOTPCode('');
|
|
43
|
+
return true;
|
|
44
|
+
};
|
|
45
|
+
const handleResendOtp = async () => {
|
|
46
|
+
var _props$orderData;
|
|
47
|
+
const payload = {
|
|
48
|
+
refId: props.refId,
|
|
49
|
+
meta: {
|
|
50
|
+
orderIds: (_props$orderData = props.orderData) === null || _props$orderData === void 0 ? void 0 : _props$orderData.map(order => {
|
|
51
|
+
var _order$displayInfo;
|
|
52
|
+
return order === null || order === void 0 || (_order$displayInfo = order.displayInfo) === null || _order$displayInfo === void 0 ? void 0 : _order$displayInfo.orderId;
|
|
53
|
+
})
|
|
54
|
+
},
|
|
55
|
+
...(props.doorstepOTP && {
|
|
56
|
+
contactInfo: {
|
|
57
|
+
id: props.selectedContact.id,
|
|
58
|
+
mode: props.selectedContact.mode,
|
|
59
|
+
type: props.selectedContact.type,
|
|
60
|
+
index: props.selectedContact.index
|
|
61
|
+
}
|
|
62
|
+
})
|
|
63
|
+
};
|
|
64
|
+
try {
|
|
65
|
+
// if (props.doorstepOTP && !props.isContactVisited) {
|
|
66
|
+
// props.setCurrentScreen(VALIDATE_OTP_SCREENS.CONTACT_LIST);// required may be in future
|
|
67
|
+
// } else {
|
|
68
|
+
props.setOTPCode('');
|
|
69
|
+
// Attempt to resend OTP
|
|
70
|
+
const response = await resendOTP(payload, {
|
|
71
|
+
...props,
|
|
72
|
+
domain: props.domain
|
|
73
|
+
});
|
|
74
|
+
if (!(response !== null && response !== void 0 && response.status) || !response) {
|
|
75
|
+
var _response$data;
|
|
76
|
+
props.setSnackBar({
|
|
77
|
+
show: true,
|
|
78
|
+
message: (response === null || response === void 0 || (_response$data = response.data) === null || _response$data === void 0 || (_response$data = _response$data.result) === null || _response$data === void 0 ? void 0 : _response$data.message) || ERROR_RESEND_OTP,
|
|
79
|
+
type: SnackBarType.OTP_FAILED
|
|
80
|
+
});
|
|
81
|
+
return;
|
|
82
|
+
} else {
|
|
83
|
+
var _response$data2, _response$additionalI;
|
|
84
|
+
const resendCountValue = Number((response === null || response === void 0 || (_response$data2 = response.data) === null || _response$data2 === void 0 || (_response$data2 = _response$data2.result) === null || _response$data2 === void 0 ? void 0 : _response$data2.resendCount) || (response === null || response === void 0 || (_response$additionalI = response.additionalInfo) === null || _response$additionalI === void 0 ? void 0 : _response$additionalI.resendCount)) || props.resendCount + 1;
|
|
85
|
+
props.setResendCount(resendCountValue);
|
|
86
|
+
await updateResendCount(resendCountValue);
|
|
87
|
+
props.setSnackBar({
|
|
88
|
+
show: true,
|
|
89
|
+
message: OTP_SENT_SUCCESSFULLY,
|
|
90
|
+
type: SnackBarType.OTP_SUCCESS
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
// Reset the timer
|
|
94
|
+
resetTimer();
|
|
95
|
+
}
|
|
96
|
+
const cta = props.resendConfig.buttonTitle;
|
|
97
|
+
fireEventWithScreenName({
|
|
98
|
+
severityLevel: SeverityLevelValue.LOG,
|
|
99
|
+
eventName: SentryEventNameSdkConstants.BUTTON_CLICKED,
|
|
100
|
+
screenName: ScreenNameSdkConstants.VALIDATE_OTP_ET_SCREEN,
|
|
101
|
+
cta: cta
|
|
102
|
+
});
|
|
103
|
+
// }
|
|
104
|
+
} catch (error) {
|
|
105
|
+
console.error('Error during OTP generation or timer reset:', error);
|
|
106
|
+
props.setSnackBar({
|
|
107
|
+
show: true,
|
|
108
|
+
message: ERROR_RESEND_OTP,
|
|
109
|
+
type: SnackBarType.OTP_FAILED
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
return;
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
// *reset timer on render
|
|
116
|
+
useEffect(() => {
|
|
117
|
+
resetTimer();
|
|
118
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
119
|
+
}, []);
|
|
120
|
+
|
|
121
|
+
// Handle back-button click
|
|
122
|
+
useFocusEffect(React.useCallback(() => {
|
|
123
|
+
BackHandler.addEventListener('hardwareBackPress', handleBackPress);
|
|
124
|
+
return () => BackHandler.removeEventListener('hardwareBackPress', handleBackPress);
|
|
125
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
126
|
+
}, []));
|
|
127
|
+
useLayoutEffect(() => {
|
|
128
|
+
props.navigation.setOptions({
|
|
129
|
+
title: props.title,
|
|
130
|
+
headerLeft: () => {
|
|
131
|
+
return /*#__PURE__*/React.createElement(Icon, {
|
|
132
|
+
onPress: () => {
|
|
133
|
+
handleBackPress();
|
|
134
|
+
const cta = 'Arrow Back';
|
|
135
|
+
fireEventWithScreenName({
|
|
136
|
+
severityLevel: SeverityLevelValue.LOG,
|
|
137
|
+
eventName: SentryEventNameSdkConstants.BUTTON_CLICKED,
|
|
138
|
+
screenName: ScreenNameSdkConstants.VALIDATE_OTP_ET_SCREEN,
|
|
139
|
+
cta: cta
|
|
140
|
+
});
|
|
141
|
+
},
|
|
142
|
+
name: "arrow-back",
|
|
143
|
+
color: 'black',
|
|
144
|
+
size: 25,
|
|
145
|
+
style: {
|
|
146
|
+
paddingRight: 15,
|
|
147
|
+
paddingTop: 5
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
153
|
+
}, []);
|
|
154
|
+
|
|
155
|
+
// *render error message for OTP input
|
|
156
|
+
const renderErrorMessage = () => {
|
|
157
|
+
return props.errorMessage ? /*#__PURE__*/React.createElement(Text, {
|
|
158
|
+
style: styles.errorMessage
|
|
159
|
+
}, props.errorMessage) : null;
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
// *render retry button
|
|
163
|
+
const renderRetryButton = () => {
|
|
164
|
+
const enableRetry = props.resendOTP.enableResends;
|
|
165
|
+
if (enableRetry) {
|
|
166
|
+
return /*#__PURE__*/React.createElement(ResendOTPButton, _extends({}, props, {
|
|
167
|
+
formattedTime: formattedTime,
|
|
168
|
+
handleResendOtp: handleResendOtp,
|
|
169
|
+
timer: timer
|
|
170
|
+
}));
|
|
171
|
+
} else return null;
|
|
172
|
+
};
|
|
173
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
174
|
+
style: {
|
|
175
|
+
flex: 1
|
|
176
|
+
}
|
|
177
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
178
|
+
style: styles.titleContainer
|
|
179
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
180
|
+
style: styles.titleText
|
|
181
|
+
}, (props === null || props === void 0 || (_props$validateMessag = props.validateMessage) === null || _props$validateMessag === void 0 || (_props$validateMessag = _props$validateMessag.toString()) === null || _props$validateMessag === void 0 ? void 0 : _props$validateMessag.length) > 0 ? props.validateMessage : 'Enter OTP received by consignee')), /*#__PURE__*/React.createElement(View, {
|
|
182
|
+
style: styles.otpContainer
|
|
183
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
184
|
+
style: styles.otpTextMsg
|
|
185
|
+
}, "OTP sent to", ' ', (props === null || props === void 0 || (_props$selectedContac = props.selectedContact) === null || _props$selectedContac === void 0 ? void 0 : _props$selectedContac.value) && maskContact(props === null || props === void 0 || (_props$selectedContac2 = props.selectedContact) === null || _props$selectedContac2 === void 0 ? void 0 : _props$selectedContac2.value)), /*#__PURE__*/React.createElement(OTPInput, {
|
|
186
|
+
input: props.otpInputConfig,
|
|
187
|
+
otpCode: props.otpCode,
|
|
188
|
+
setOTPCode: props.setOTPCode,
|
|
189
|
+
hasError: props.hasError,
|
|
190
|
+
setHasError: props.setHasError,
|
|
191
|
+
setErrorMessage: props.setErrorMessage
|
|
192
|
+
}), renderErrorMessage(), renderRetryButton()));
|
|
193
|
+
};
|
|
194
|
+
//# sourceMappingURL=OTPView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useEffect","useLayoutEffect","BackHandler","Text","View","useFocusEffect","Icon","OTPInput","ResendOTPButton","styles","maskContact","resendOTP","updateResendCount","VALIDATE_OTP_SCREENS","useResendOtpTimer","SnackBarType","ERROR_RESEND_OTP","OTP_SENT_SUCCESSFULLY","fireEventWithScreenName","ScreenNameSdkConstants","SentryEventNameSdkConstants","SeverityLevelValue","OTPView","props","_props$resendConfig","_props$validateMessag","_props$selectedContac","_props$selectedContac2","formattedTime","timer","resetTimer","resendConfig","enableDelay","handleBackPress","doorstepOTP","isContactVisited","setCurrentScreen","CONTACT_LIST","handleBackNavigation","setOTPCode","handleResendOtp","_props$orderData","payload","refId","meta","orderIds","orderData","map","order","_order$displayInfo","displayInfo","orderId","contactInfo","id","selectedContact","mode","type","index","response","domain","status","_response$data","setSnackBar","show","message","data","result","OTP_FAILED","_response$data2","_response$additionalI","resendCountValue","Number","resendCount","additionalInfo","setResendCount","OTP_SUCCESS","cta","buttonTitle","severityLevel","LOG","eventName","BUTTON_CLICKED","screenName","VALIDATE_OTP_ET_SCREEN","error","console","useCallback","addEventListener","removeEventListener","navigation","setOptions","title","headerLeft","createElement","onPress","name","color","size","style","paddingRight","paddingTop","renderErrorMessage","errorMessage","renderRetryButton","enableRetry","enableResends","_extends","flex","titleContainer","titleText","validateMessage","toString","length","otpContainer","otpTextMsg","value","input","otpInputConfig","otpCode","hasError","setHasError","setErrorMessage"],"sources":["OTPView.tsx"],"sourcesContent":["/* eslint-disable react-native/no-inline-styles */\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport React, { FC, useEffect, useLayoutEffect } from 'react';\nimport { BackHandler, Text, View } from 'react-native';\nimport { useFocusEffect } from '@react-navigation/native';\nimport Icon from 'react-native-vector-icons/MaterialIcons';\n\n// Components\nimport OTPInput from '../sub-components/OTPInput';\nimport { ResendOTPButton } from '../sub-components/ResendOTPButton';\n\n// Styles\nimport styles from '../ValidateOtpStyles';\n\n// Utilities\nimport { maskContact } from '../../../../utils/ExecTaskUtils';\nimport { resendOTP, updateResendCount, VALIDATE_OTP_SCREENS } from '../utils';\nimport useResendOtpTimer from '../../../../utils/hooks/useTimer';\n\n// Types\nimport { ValidateOTPInput } from '../ValidateOTPSchema';\nimport { SnackBarType } from '../../../../components/widgets/SnackBarCustom';\nimport { ERROR_RESEND_OTP, OTP_SENT_SUCCESSFULLY } from '../constants';\n\n// Analytics\nimport { fireEventWithScreenName } from '../../../../analytics/sentry/SentryAnalyticsUtils';\nimport {\n ScreenNameSdkConstants,\n SentryEventNameSdkConstants,\n SeverityLevelValue,\n} from '../../../../analytics/sentry/SentrySdkConstants';\n\nexport const OTPView: FC<ValidateOTPInput> = (props) => {\n const { formattedTime, timer, resetTimer } = useResendOtpTimer(\n props.resendConfig?.enableDelay\n );\n\n const handleBackPress = () => {\n if (props.doorstepOTP && props.isContactVisited) {\n props.setCurrentScreen(VALIDATE_OTP_SCREENS.CONTACT_LIST);\n } else {\n props.handleBackNavigation();\n }\n props.setOTPCode('');\n return true;\n };\n\n const handleResendOtp = async () => {\n const payload = {\n refId: props.refId,\n meta: {\n orderIds: props.orderData?.map((order) => order?.displayInfo?.orderId),\n },\n ...(props.doorstepOTP && {\n contactInfo: {\n id: props.selectedContact.id,\n mode: props.selectedContact.mode,\n type: props.selectedContact.type,\n index: props.selectedContact.index,\n },\n }),\n };\n try {\n // if (props.doorstepOTP && !props.isContactVisited) {\n // props.setCurrentScreen(VALIDATE_OTP_SCREENS.CONTACT_LIST);// required may be in future\n // } else {\n props.setOTPCode('');\n // Attempt to resend OTP\n const response = await resendOTP(payload, {\n ...props,\n domain: props.domain,\n });\n\n if (!response?.status || !response) {\n props.setSnackBar({\n show: true,\n message: response?.data?.result?.message || ERROR_RESEND_OTP,\n type: SnackBarType.OTP_FAILED,\n });\n return;\n } else {\n const resendCountValue =\n Number(\n response?.data?.result?.resendCount ||\n response?.additionalInfo?.resendCount\n ) || props.resendCount + 1;\n\n props.setResendCount(resendCountValue);\n await updateResendCount(resendCountValue);\n\n props.setSnackBar({\n show: true,\n message: OTP_SENT_SUCCESSFULLY,\n type: SnackBarType.OTP_SUCCESS,\n });\n\n // Reset the timer\n resetTimer();\n }\n const cta = props.resendConfig.buttonTitle;\n fireEventWithScreenName({\n severityLevel: SeverityLevelValue.LOG,\n eventName: SentryEventNameSdkConstants.BUTTON_CLICKED,\n screenName: ScreenNameSdkConstants.VALIDATE_OTP_ET_SCREEN,\n cta: cta,\n });\n // }\n } catch (error) {\n console.error('Error during OTP generation or timer reset:', error);\n props.setSnackBar({\n show: true,\n message: ERROR_RESEND_OTP,\n type: SnackBarType.OTP_FAILED,\n });\n }\n return;\n };\n\n // *reset timer on render\n useEffect(() => {\n resetTimer();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Handle back-button click\n useFocusEffect(\n React.useCallback(() => {\n BackHandler.addEventListener('hardwareBackPress', handleBackPress);\n return () =>\n BackHandler.removeEventListener('hardwareBackPress', handleBackPress);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n );\n\n useLayoutEffect(() => {\n props.navigation.setOptions({\n title: props.title,\n headerLeft: () => {\n return (\n <Icon\n onPress={() => {\n handleBackPress();\n const cta = 'Arrow Back';\n fireEventWithScreenName({\n severityLevel: SeverityLevelValue.LOG,\n eventName: SentryEventNameSdkConstants.BUTTON_CLICKED,\n screenName: ScreenNameSdkConstants.VALIDATE_OTP_ET_SCREEN,\n cta: cta,\n });\n }}\n name=\"arrow-back\"\n color={'black'}\n size={25}\n style={{\n paddingRight: 15,\n paddingTop: 5,\n }}\n />\n );\n },\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // *render error message for OTP input\n const renderErrorMessage = () => {\n return props.errorMessage ? (\n <Text style={styles.errorMessage}>{props.errorMessage}</Text>\n ) : null;\n };\n\n // *render retry button\n const renderRetryButton = () => {\n const enableRetry = props.resendOTP.enableResends;\n\n if (enableRetry) {\n return (\n <ResendOTPButton\n {...props}\n formattedTime={formattedTime}\n handleResendOtp={handleResendOtp}\n timer={timer}\n />\n );\n } else return null;\n };\n\n return (\n <View style={{ flex: 1 }}>\n <View style={styles.titleContainer}>\n <Text style={styles.titleText}>\n {props?.validateMessage?.toString()?.length > 0\n ? props.validateMessage\n : 'Enter OTP received by consignee'}\n </Text>\n </View>\n <View style={styles.otpContainer}>\n <Text style={styles.otpTextMsg}>\n OTP sent to{' '}\n {props?.selectedContact?.value &&\n maskContact(props?.selectedContact?.value)}\n </Text>\n <OTPInput\n input={props.otpInputConfig}\n otpCode={props.otpCode}\n setOTPCode={props.setOTPCode}\n hasError={props.hasError}\n setHasError={props.setHasError}\n setErrorMessage={props.setErrorMessage}\n />\n {renderErrorMessage()}\n {renderRetryButton()}\n </View>\n </View>\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
2
|
+
/* eslint-disable react-native/no-inline-styles */
|
|
3
|
+
import React, { useEffect, useLayoutEffect } from 'react';
|
|
4
|
+
import { Text, View } from 'react-native';
|
|
5
|
+
|
|
6
|
+
// Styles
|
|
7
|
+
import styles from '../ValidateOtpStyles';
|
|
8
|
+
|
|
9
|
+
// Components
|
|
10
|
+
import FastImage from 'react-native-fast-image';
|
|
11
|
+
|
|
12
|
+
// Utilities
|
|
13
|
+
import { getBaseETResponse } from '../../../../utils/ExecTaskUtils';
|
|
14
|
+
import { getEventCodeByET } from '../../../../manager/dispatchCodes/EventCodeContainer';
|
|
15
|
+
import { RETRY_LIMIT_REACHED_CODE } from '../../../../constants/constants';
|
|
16
|
+
|
|
17
|
+
// Types
|
|
18
|
+
import { BaseEventCodes, EntityCode, ExecutionTaskID } from '../../../../models/execTasks/ETConfig';
|
|
19
|
+
const DefaultSubmitTimeout = 3000;
|
|
20
|
+
const VerificationComplete = props => {
|
|
21
|
+
// TO hide header for modal screen
|
|
22
|
+
useLayoutEffect(() => {
|
|
23
|
+
props.navigation.setOptions({
|
|
24
|
+
headerShown: false
|
|
25
|
+
});
|
|
26
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
27
|
+
}, []);
|
|
28
|
+
const sendSuccessOutput = async () => {
|
|
29
|
+
var _props$applicableReas;
|
|
30
|
+
const _etOutput = await getBaseETResponse(EntityCode.VALIDATE_OTP_ET, true, getEventCodeByET(ExecutionTaskID.VALIDATE_OTP_ET, true, (_props$applicableReas = props.applicableReasons) === null || _props$applicableReas === void 0 ? void 0 : _props$applicableReas.success), '', props.mergedObjectiveId, ExecutionTaskID.VALIDATE_OTP_ET);
|
|
31
|
+
setTimeout(async () => {
|
|
32
|
+
props.onSubmitET({
|
|
33
|
+
..._etOutput,
|
|
34
|
+
retryCount: props.retryCount
|
|
35
|
+
});
|
|
36
|
+
}, DefaultSubmitTimeout);
|
|
37
|
+
};
|
|
38
|
+
const sendFailedOutput = async () => {
|
|
39
|
+
const _etOutput = await getBaseETResponse(EntityCode.VALIDATE_OTP_ET, false, BaseEventCodes.ENTITY_FAILURE, RETRY_LIMIT_REACHED_CODE, props.mergedObjectiveId, ExecutionTaskID.VALIDATE_OTP_ET);
|
|
40
|
+
setTimeout(async () => {
|
|
41
|
+
props.onSubmitET({
|
|
42
|
+
..._etOutput,
|
|
43
|
+
retryCount: props.retryCount
|
|
44
|
+
});
|
|
45
|
+
}, DefaultSubmitTimeout);
|
|
46
|
+
};
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
props.setLoading(false);
|
|
49
|
+
if (props.success) {
|
|
50
|
+
sendSuccessOutput();
|
|
51
|
+
} else {
|
|
52
|
+
sendFailedOutput();
|
|
53
|
+
}
|
|
54
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
55
|
+
}, []);
|
|
56
|
+
const renderSuccessCard = () => {
|
|
57
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FastImage, {
|
|
58
|
+
source: require('../../../../icons/icSuccess.gif'),
|
|
59
|
+
style: {
|
|
60
|
+
height: 116,
|
|
61
|
+
width: 116
|
|
62
|
+
} // Use consistent dimensions here
|
|
63
|
+
,
|
|
64
|
+
resizeMode: "contain" // Ensures the GIF is displayed properly without distortion
|
|
65
|
+
}), /*#__PURE__*/React.createElement(Text, {
|
|
66
|
+
style: styles.otpResponseText
|
|
67
|
+
}, "OTP verified successfully!"));
|
|
68
|
+
};
|
|
69
|
+
const renderFailedCard = () => {
|
|
70
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FastImage, {
|
|
71
|
+
source: require('../../../../icons/icFailed.gif'),
|
|
72
|
+
style: {
|
|
73
|
+
height: 116,
|
|
74
|
+
width: 116
|
|
75
|
+
} // Use consistent dimensions here
|
|
76
|
+
,
|
|
77
|
+
resizeMode: "contain" // Ensures the GIF is displayed properly without distortion
|
|
78
|
+
}), /*#__PURE__*/React.createElement(Text, {
|
|
79
|
+
style: styles.otpResponseText
|
|
80
|
+
}, "OTP verification Failed!"));
|
|
81
|
+
};
|
|
82
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
83
|
+
style: {
|
|
84
|
+
flex: 1
|
|
85
|
+
}
|
|
86
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
87
|
+
style: {
|
|
88
|
+
flex: 1,
|
|
89
|
+
justifyContent: 'center'
|
|
90
|
+
}
|
|
91
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
92
|
+
style: styles.responseCard
|
|
93
|
+
}, props.success ? renderSuccessCard() : renderFailedCard())));
|
|
94
|
+
};
|
|
95
|
+
export default VerificationComplete;
|
|
96
|
+
//# sourceMappingURL=VerificationComplete.js.map
|
package/lib/module/components/executiontasks/validateOTP/components/VerificationComplete.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useEffect","useLayoutEffect","Text","View","styles","FastImage","getBaseETResponse","getEventCodeByET","RETRY_LIMIT_REACHED_CODE","BaseEventCodes","EntityCode","ExecutionTaskID","DefaultSubmitTimeout","VerificationComplete","props","navigation","setOptions","headerShown","sendSuccessOutput","_props$applicableReas","_etOutput","VALIDATE_OTP_ET","applicableReasons","success","mergedObjectiveId","setTimeout","onSubmitET","retryCount","sendFailedOutput","ENTITY_FAILURE","setLoading","renderSuccessCard","createElement","Fragment","source","require","style","height","width","resizeMode","otpResponseText","renderFailedCard","flex","justifyContent","responseCard"],"sources":["VerificationComplete.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable react-native/no-inline-styles */\nimport React, { FC, useEffect, useLayoutEffect } from 'react';\nimport { Text, View } from 'react-native';\n\n// Styles\nimport styles from '../ValidateOtpStyles';\n\n// Components\nimport FastImage from 'react-native-fast-image';\n\n// Utilities\nimport { getBaseETResponse } from '../../../../utils/ExecTaskUtils';\nimport { getEventCodeByET } from '../../../../manager/dispatchCodes/EventCodeContainer';\nimport { RETRY_LIMIT_REACHED_CODE } from '../../../../constants/constants';\n\n// Types\nimport {\n BaseEventCodes,\n EntityCode,\n ExecutionTaskID,\n} from '../../../../models/execTasks/ETConfig';\n\nconst DefaultSubmitTimeout = 3000;\n\nconst VerificationComplete: FC<any> = (props) => {\n // TO hide header for modal screen\n useLayoutEffect(() => {\n props.navigation.setOptions({\n headerShown: false,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const sendSuccessOutput = async () => {\n const _etOutput = await getBaseETResponse(\n EntityCode.VALIDATE_OTP_ET,\n true,\n getEventCodeByET(\n ExecutionTaskID.VALIDATE_OTP_ET,\n true,\n props.applicableReasons?.success\n ),\n '',\n props.mergedObjectiveId,\n ExecutionTaskID.VALIDATE_OTP_ET\n );\n setTimeout(async () => {\n props.onSubmitET({\n ..._etOutput,\n retryCount: props.retryCount,\n });\n }, DefaultSubmitTimeout);\n };\n\n const sendFailedOutput = async () => {\n const _etOutput = await getBaseETResponse(\n EntityCode.VALIDATE_OTP_ET,\n false,\n BaseEventCodes.ENTITY_FAILURE,\n RETRY_LIMIT_REACHED_CODE,\n props.mergedObjectiveId,\n ExecutionTaskID.VALIDATE_OTP_ET\n );\n setTimeout(async () => {\n props.onSubmitET({\n ..._etOutput,\n retryCount: props.retryCount,\n });\n }, DefaultSubmitTimeout);\n };\n\n useEffect(() => {\n props.setLoading(false);\n if (props.success) {\n sendSuccessOutput();\n } else {\n sendFailedOutput();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const renderSuccessCard = () => {\n return (\n <>\n <FastImage\n source={require('../../../../icons/icSuccess.gif')}\n style={{ height: 116, width: 116 }} // Use consistent dimensions here\n resizeMode=\"contain\" // Ensures the GIF is displayed properly without distortion\n />\n <Text style={styles.otpResponseText}>OTP verified successfully!</Text>\n </>\n );\n };\n\n const renderFailedCard = () => {\n return (\n <>\n <FastImage\n source={require('../../../../icons/icFailed.gif')}\n style={{ height: 116, width: 116 }} // Use consistent dimensions here\n resizeMode=\"contain\" // Ensures the GIF is displayed properly without distortion\n />\n <Text style={styles.otpResponseText}>OTP verification Failed!</Text>\n </>\n );\n };\n\n return (\n <View style={{ flex: 1 }}>\n <View\n style={{\n flex: 1,\n justifyContent: 'center',\n }}\n >\n <View style={styles.responseCard}>\n {props.success ? renderSuccessCard() : renderFailedCard()}\n </View>\n </View>\n </View>\n );\n};\nexport default VerificationComplete;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,7 +1,13 @@
|
|
|
1
|
-
export const INVALID_OTP = `
|
|
1
|
+
export const INVALID_OTP = `Entered incorrect OTP. <length> attempts left.`;
|
|
2
|
+
export const INVALID_OTP_ONE_ATTEMPT_LEFT = `OTP verification failed! Please enter the correct OTP within 1 attempt.`;
|
|
2
3
|
export const INVALID_OTP_LENGTH = `OTP should be of length <length>`;
|
|
3
4
|
export const INVALID_REGEX = `Invalid OTP entered. Must match the expected pattern.`;
|
|
4
|
-
export const ERROR_GENERATING_OTP = `
|
|
5
|
+
export const ERROR_GENERATING_OTP = `Unable to send OTP. Please try again.`;
|
|
6
|
+
export const UNABLE_TO_SEND_OTP = `Unable to send new OTP as maximum limit reached.`;
|
|
7
|
+
export const ERROR_RESEND_OTP = 'Failed to resend OTP. Try again.';
|
|
8
|
+
export const ERROR_VALIDATE_OTP = 'Failed to validate OTP. Try again.';
|
|
9
|
+
export const OTP_SENT_SUCCESSFULLY = 'OTP sent to the customer!';
|
|
10
|
+
export const OTP_VERIFIED_SUCCESSFULLY = 'OTP verified successfully!';
|
|
5
11
|
export const mobileSVG = `<svg width="164" height="164" viewBox="0 0 164 164" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
6
12
|
<mask id="mask0_3391_199849" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="164" height="164">
|
|
7
13
|
<rect width="164" height="164" fill="url(#pattern0)"/>
|
|
@@ -19,7 +25,8 @@ export const mobileSVG = `<svg width="164" height="164" viewBox="0 0 164 164" fi
|
|
|
19
25
|
`;
|
|
20
26
|
export const DEFAULT_RETRY_CONFIG = {
|
|
21
27
|
buttonTitle: 'Resend OTP',
|
|
22
|
-
|
|
23
|
-
|
|
28
|
+
enableResends: true,
|
|
29
|
+
enableDelay: 60,
|
|
30
|
+
maxResends: 5
|
|
24
31
|
};
|
|
25
32
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["INVALID_OTP","INVALID_OTP_LENGTH","INVALID_REGEX","ERROR_GENERATING_OTP","mobileSVG","DEFAULT_RETRY_CONFIG","buttonTitle","
|
|
1
|
+
{"version":3,"names":["INVALID_OTP","INVALID_OTP_ONE_ATTEMPT_LEFT","INVALID_OTP_LENGTH","INVALID_REGEX","ERROR_GENERATING_OTP","UNABLE_TO_SEND_OTP","ERROR_RESEND_OTP","ERROR_VALIDATE_OTP","OTP_SENT_SUCCESSFULLY","OTP_VERIFIED_SUCCESSFULLY","mobileSVG","DEFAULT_RETRY_CONFIG","buttonTitle","enableResends","enableDelay","maxResends"],"sources":["constants.ts"],"sourcesContent":["export const INVALID_OTP = `Entered incorrect OTP. <length> attempts left.`;\nexport const INVALID_OTP_ONE_ATTEMPT_LEFT = `OTP verification failed! Please enter the correct OTP within 1 attempt.`;\nexport const INVALID_OTP_LENGTH = `OTP should be of length <length>`;\nexport const INVALID_REGEX = `Invalid OTP entered. Must match the expected pattern.`;\nexport const ERROR_GENERATING_OTP = `Unable to send OTP. Please try again.`;\nexport const UNABLE_TO_SEND_OTP = `Unable to send new OTP as maximum limit reached.`;\nexport const ERROR_RESEND_OTP = 'Failed to resend OTP. Try again.';\nexport const ERROR_VALIDATE_OTP = 'Failed to validate OTP. Try again.';\nexport const OTP_SENT_SUCCESSFULLY = 'OTP sent to the customer!';\nexport const OTP_VERIFIED_SUCCESSFULLY = 'OTP verified successfully!';\nexport const mobileSVG = `<svg width=\"164\" height=\"164\" viewBox=\"0 0 164 164\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n<mask id=\"mask0_3391_199849\" style=\"mask-type:alpha\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"164\" height=\"164\">\n<rect width=\"164\" height=\"164\" fill=\"url(#pattern0)\"/>\n</mask>\n<g mask=\"url(#mask0_3391_199849)\">\n<rect x=\"-28\" y=\"-29\" width=\"221\" height=\"221\" fill=\"#5B80F7\"/>\n</g>\n<defs>\n<pattern id=\"pattern0\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\">\n<use xlink:href=\"#image0_3391_199849\" transform=\"scale(0.0078125)\"/>\n</pattern>\n<image id=\"image0_3391_199849\" width=\"128\" height=\"128\" xlink:href=\"data:image/png;base64,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\"/>\n</defs>\n</svg>\n`;\nexport const DEFAULT_RETRY_CONFIG = {\n buttonTitle: 'Resend OTP',\n enableResends: true,\n enableDelay: 60,\n maxResends: 5,\n};\n"],"mappings":"AAAA,OAAO,MAAMA,WAAW,GAAG,gDAAgD;AAC3E,OAAO,MAAMC,4BAA4B,GAAG,yEAAyE;AACrH,OAAO,MAAMC,kBAAkB,GAAG,kCAAkC;AACpE,OAAO,MAAMC,aAAa,GAAG,uDAAuD;AACpF,OAAO,MAAMC,oBAAoB,GAAG,uCAAuC;AAC3E,OAAO,MAAMC,kBAAkB,GAAG,kDAAkD;AACpF,OAAO,MAAMC,gBAAgB,GAAG,kCAAkC;AAClE,OAAO,MAAMC,kBAAkB,GAAG,oCAAoC;AACtE,OAAO,MAAMC,qBAAqB,GAAG,2BAA2B;AAChE,OAAO,MAAMC,yBAAyB,GAAG,4BAA4B;AACrE,OAAO,MAAMC,SAAS,GAAG;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,OAAO,MAAMC,oBAAoB,GAAG;EAClCC,WAAW,EAAE,YAAY;EACzBC,aAAa,EAAE,IAAI;EACnBC,WAAW,EAAE,EAAE;EACfC,UAAU,EAAE;AACd,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/* eslint-disable react-native/no-inline-styles */
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Text, TouchableOpacity, View } from 'react-native';
|
|
4
|
+
|
|
5
|
+
// Styles
|
|
6
|
+
import styles from '../ValidateOtpStyles';
|
|
7
|
+
|
|
8
|
+
// Types
|
|
9
|
+
|
|
10
|
+
// Icons
|
|
11
|
+
import { RadioCheckedIcon, RadioUncheckedIcon } from '../../../../icons';
|
|
12
|
+
|
|
13
|
+
// Utilities
|
|
14
|
+
import { isNotNullOrEmpty, truncateOrderId } from '../utils';
|
|
15
|
+
import { sHeight } from '../../../../components/utils/Scale';
|
|
16
|
+
import { maskContact } from '../../../../utils/ExecTaskUtils';
|
|
17
|
+
export const ContactCard = props => {
|
|
18
|
+
const {
|
|
19
|
+
handleSelectContact,
|
|
20
|
+
contactDetails
|
|
21
|
+
} = props;
|
|
22
|
+
return /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
23
|
+
activeOpacity: 0.75,
|
|
24
|
+
style: [styles.contactCard, (contactDetails === null || contactDetails === void 0 ? void 0 : contactDetails.isSelected) && styles.selectedCard],
|
|
25
|
+
onPress: () => handleSelectContact(contactDetails)
|
|
26
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
27
|
+
style: [styles.rowContainer]
|
|
28
|
+
}, contactDetails !== null && contactDetails !== void 0 && contactDetails.isSelected ? /*#__PURE__*/React.createElement(RadioCheckedIcon, {
|
|
29
|
+
style: [styles.radioIcon]
|
|
30
|
+
}) : /*#__PURE__*/React.createElement(RadioUncheckedIcon, {
|
|
31
|
+
style: [styles.radioIcon]
|
|
32
|
+
}), /*#__PURE__*/React.createElement(View, {
|
|
33
|
+
style: styles.columnContainer
|
|
34
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
35
|
+
style: [styles.rowContainer, {
|
|
36
|
+
marginBottom: 8
|
|
37
|
+
}]
|
|
38
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
39
|
+
style: [styles.contactTitle, {
|
|
40
|
+
padding: 0,
|
|
41
|
+
margin: 0
|
|
42
|
+
}]
|
|
43
|
+
}, (contactDetails === null || contactDetails === void 0 ? void 0 : contactDetails.value) && maskContact(contactDetails === null || contactDetails === void 0 ? void 0 : contactDetails.value))), isNotNullOrEmpty(contactDetails === null || contactDetails === void 0 ? void 0 : contactDetails.orderId) && /*#__PURE__*/React.createElement(View, {
|
|
44
|
+
style: styles.rowContainer
|
|
45
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
46
|
+
style: [styles.titleText, styles.contactLabel]
|
|
47
|
+
}, "Order ID"), /*#__PURE__*/React.createElement(Text, {
|
|
48
|
+
style: [styles.titleText, styles.contactText]
|
|
49
|
+
}, (contactDetails === null || contactDetails === void 0 ? void 0 : contactDetails.orderId) && truncateOrderId(contactDetails === null || contactDetails === void 0 ? void 0 : contactDetails.orderId))), isNotNullOrEmpty(contactDetails === null || contactDetails === void 0 ? void 0 : contactDetails.orderFrom) && /*#__PURE__*/React.createElement(View, {
|
|
50
|
+
style: [styles.rowContainer, {
|
|
51
|
+
marginTop: sHeight(4)
|
|
52
|
+
}]
|
|
53
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
54
|
+
style: [styles.titleText, styles.contactLabel]
|
|
55
|
+
}, "Order From"), /*#__PURE__*/React.createElement(Text, {
|
|
56
|
+
style: [styles.titleText, styles.contactText]
|
|
57
|
+
}, contactDetails === null || contactDetails === void 0 ? void 0 : contactDetails.orderFrom)))));
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=ContactCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Text","TouchableOpacity","View","styles","RadioCheckedIcon","RadioUncheckedIcon","isNotNullOrEmpty","truncateOrderId","sHeight","maskContact","ContactCard","props","handleSelectContact","contactDetails","createElement","activeOpacity","style","contactCard","isSelected","selectedCard","onPress","rowContainer","radioIcon","columnContainer","marginBottom","contactTitle","padding","margin","value","orderId","titleText","contactLabel","contactText","orderFrom","marginTop"],"sources":["ContactCard.tsx"],"sourcesContent":["/* eslint-disable react-native/no-inline-styles */\nimport React from 'react';\nimport { Text, TouchableOpacity, View } from 'react-native';\n\n// Styles\nimport styles from '../ValidateOtpStyles';\n\n// Types\nimport { ContactTypes } from '../ValidateOTPSchema';\n\n// Icons\nimport { RadioCheckedIcon, RadioUncheckedIcon } from '../../../../icons';\n\n// Utilities\nimport { isNotNullOrEmpty, truncateOrderId } from '../utils';\nimport { sHeight } from '../../../../components/utils/Scale';\nimport { maskContact } from '../../../../utils/ExecTaskUtils';\n\ninterface ContactCardPropType {\n handleSelectContact: (contactDetails: ContactTypes) => void;\n contactDetails: ContactTypes;\n}\nexport const ContactCard = (props: ContactCardPropType) => {\n const { handleSelectContact, contactDetails } = props;\n return (\n <TouchableOpacity\n activeOpacity={0.75}\n style={[\n styles.contactCard,\n contactDetails?.isSelected && styles.selectedCard,\n ]}\n onPress={() => handleSelectContact(contactDetails)}\n >\n <View style={[styles.rowContainer]}>\n {contactDetails?.isSelected ? (\n <RadioCheckedIcon style={[styles.radioIcon]} />\n ) : (\n <RadioUncheckedIcon style={[styles.radioIcon]} />\n )}\n <View style={styles.columnContainer}>\n {/* Contact */}\n <View style={[styles.rowContainer, { marginBottom: 8 }]}>\n <Text style={[styles.contactTitle, { padding: 0, margin: 0 }]}>\n {contactDetails?.value && maskContact(contactDetails?.value)}\n </Text>\n </View>\n {isNotNullOrEmpty(contactDetails?.orderId) && (\n <View style={styles.rowContainer}>\n <Text style={[styles.titleText, styles.contactLabel]}>\n Order ID\n </Text>\n <Text style={[styles.titleText, styles.contactText]}>\n {contactDetails?.orderId &&\n truncateOrderId(contactDetails?.orderId)}\n </Text>\n </View>\n )}\n {isNotNullOrEmpty(contactDetails?.orderFrom) && (\n <View style={[styles.rowContainer, { marginTop: sHeight(4) }]}>\n <Text style={[styles.titleText, styles.contactLabel]}>\n Order From\n </Text>\n <Text style={[styles.titleText, styles.contactText]}>\n {contactDetails?.orderFrom}\n </Text>\n </View>\n )}\n </View>\n </View>\n </TouchableOpacity>\n );\n};\n"],"mappings":"AAAA;AACA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,gBAAgB,EAAEC,IAAI,QAAQ,cAAc;;AAE3D;AACA,OAAOC,MAAM,MAAM,sBAAsB;;AAEzC;;AAGA;AACA,SAASC,gBAAgB,EAAEC,kBAAkB,QAAQ,mBAAmB;;AAExE;AACA,SAASC,gBAAgB,EAAEC,eAAe,QAAQ,UAAU;AAC5D,SAASC,OAAO,QAAQ,oCAAoC;AAC5D,SAASC,WAAW,QAAQ,iCAAiC;AAM7D,OAAO,MAAMC,WAAW,GAAIC,KAA0B,IAAK;EACzD,MAAM;IAAEC,mBAAmB;IAAEC;EAAe,CAAC,GAAGF,KAAK;EACrD,oBACEZ,KAAA,CAAAe,aAAA,CAACb,gBAAgB;IACfc,aAAa,EAAE,IAAK;IACpBC,KAAK,EAAE,CACLb,MAAM,CAACc,WAAW,EAClB,CAAAJ,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEK,UAAU,KAAIf,MAAM,CAACgB,YAAY,CACjD;IACFC,OAAO,EAAEA,CAAA,KAAMR,mBAAmB,CAACC,cAAc;EAAE,gBAEnDd,KAAA,CAAAe,aAAA,CAACZ,IAAI;IAACc,KAAK,EAAE,CAACb,MAAM,CAACkB,YAAY;EAAE,GAChCR,cAAc,aAAdA,cAAc,eAAdA,cAAc,CAAEK,UAAU,gBACzBnB,KAAA,CAAAe,aAAA,CAACV,gBAAgB;IAACY,KAAK,EAAE,CAACb,MAAM,CAACmB,SAAS;EAAE,CAAE,CAAC,gBAE/CvB,KAAA,CAAAe,aAAA,CAACT,kBAAkB;IAACW,KAAK,EAAE,CAACb,MAAM,CAACmB,SAAS;EAAE,CAAE,CACjD,eACDvB,KAAA,CAAAe,aAAA,CAACZ,IAAI;IAACc,KAAK,EAAEb,MAAM,CAACoB;EAAgB,gBAElCxB,KAAA,CAAAe,aAAA,CAACZ,IAAI;IAACc,KAAK,EAAE,CAACb,MAAM,CAACkB,YAAY,EAAE;MAAEG,YAAY,EAAE;IAAE,CAAC;EAAE,gBACtDzB,KAAA,CAAAe,aAAA,CAACd,IAAI;IAACgB,KAAK,EAAE,CAACb,MAAM,CAACsB,YAAY,EAAE;MAAEC,OAAO,EAAE,CAAC;MAAEC,MAAM,EAAE;IAAE,CAAC;EAAE,GAC3D,CAAAd,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEe,KAAK,KAAInB,WAAW,CAACI,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEe,KAAK,CACvD,CACF,CAAC,EACNtB,gBAAgB,CAACO,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEgB,OAAO,CAAC,iBACxC9B,KAAA,CAAAe,aAAA,CAACZ,IAAI;IAACc,KAAK,EAAEb,MAAM,CAACkB;EAAa,gBAC/BtB,KAAA,CAAAe,aAAA,CAACd,IAAI;IAACgB,KAAK,EAAE,CAACb,MAAM,CAAC2B,SAAS,EAAE3B,MAAM,CAAC4B,YAAY;EAAE,GAAC,UAEhD,CAAC,eACPhC,KAAA,CAAAe,aAAA,CAACd,IAAI;IAACgB,KAAK,EAAE,CAACb,MAAM,CAAC2B,SAAS,EAAE3B,MAAM,CAAC6B,WAAW;EAAE,GACjD,CAAAnB,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEgB,OAAO,KACtBtB,eAAe,CAACM,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEgB,OAAO,CACrC,CACF,CACP,EACAvB,gBAAgB,CAACO,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEoB,SAAS,CAAC,iBAC1ClC,KAAA,CAAAe,aAAA,CAACZ,IAAI;IAACc,KAAK,EAAE,CAACb,MAAM,CAACkB,YAAY,EAAE;MAAEa,SAAS,EAAE1B,OAAO,CAAC,CAAC;IAAE,CAAC;EAAE,gBAC5DT,KAAA,CAAAe,aAAA,CAACd,IAAI;IAACgB,KAAK,EAAE,CAACb,MAAM,CAAC2B,SAAS,EAAE3B,MAAM,CAAC4B,YAAY;EAAE,GAAC,YAEhD,CAAC,eACPhC,KAAA,CAAAe,aAAA,CAACd,IAAI;IAACgB,KAAK,EAAE,CAACb,MAAM,CAAC2B,SAAS,EAAE3B,MAAM,CAAC6B,WAAW;EAAE,GACjDnB,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEoB,SACb,CACF,CAEJ,CACF,CACU,CAAC;AAEvB,CAAC","ignoreList":[]}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
|
-
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
2
|
+
// External imports
|
|
2
3
|
import React, { useEffect } from 'react';
|
|
4
|
+
import { StyleSheet, Pressable, Keyboard, Platform } from 'react-native';
|
|
5
|
+
|
|
6
|
+
// Internal imports
|
|
3
7
|
import SplitTextInput from '../../../widgets/SplitTextInput';
|
|
4
8
|
import { Fonts } from '../../../../styles/executionTasks/CommonStyles';
|
|
5
9
|
import { InputType } from '../ValidateOTPSchema';
|
|
6
10
|
import { INVALID_REGEX } from '../constants';
|
|
7
11
|
const OTPInput = props => {
|
|
8
|
-
const maximumCodeLength = props.input.length;
|
|
9
|
-
const keyboardType = props.input.inputType === InputType.NUMBER ? 'number-pad' : 'default';
|
|
12
|
+
const maximumCodeLength = props.input.length || 6;
|
|
13
|
+
const keyboardType = props.input.inputType === InputType.NUMBER || InputType.NUMERIC ? 'number-pad' : 'default';
|
|
10
14
|
useEffect(() => {
|
|
11
15
|
if (props.input.validationRegex && props.otpCode.length === maximumCodeLength) {
|
|
12
16
|
const regex = new RegExp(props.input.validationRegex);
|
|
@@ -14,7 +18,7 @@ const OTPInput = props => {
|
|
|
14
18
|
props.setHasError(hasError);
|
|
15
19
|
if (hasError) props.setErrorMessage(INVALID_REGEX);else props.setErrorMessage('');
|
|
16
20
|
}
|
|
17
|
-
}, [props.otpCode]);
|
|
21
|
+
}, [maximumCodeLength, props, props.otpCode]);
|
|
18
22
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Pressable, {
|
|
19
23
|
onPress: Keyboard.dismiss
|
|
20
24
|
}, /*#__PURE__*/React.createElement(SplitTextInput, {
|
|
@@ -38,7 +42,9 @@ const styles = StyleSheet.create({
|
|
|
38
42
|
text: {
|
|
39
43
|
fontFamily: Platform.OS === 'android' ? Fonts.IBMPlexSans_400Regular : 'IBMPlexSans-Regular',
|
|
40
44
|
color: '#3D445C',
|
|
41
|
-
fontSize:
|
|
45
|
+
fontSize: 16,
|
|
46
|
+
lineHeight: 24,
|
|
47
|
+
fontWeight: '400',
|
|
42
48
|
textAlign: 'center'
|
|
43
49
|
},
|
|
44
50
|
errorMessage: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["React","useEffect","StyleSheet","Pressable","Keyboard","Platform","SplitTextInput","Fonts","InputType","INVALID_REGEX","OTPInput","props","maximumCodeLength","input","length","keyboardType","inputType","NUMBER","NUMERIC","validationRegex","otpCode","regex","RegExp","hasError","test","setHasError","setErrorMessage","createElement","Fragment","onPress","dismiss","styles","text","value","onChange","setOTPCode","maxLength","create","fontFamily","OS","IBMPlexSans_400Regular","color","fontSize","lineHeight","fontWeight","textAlign","errorMessage","marginTop","marginHorizontal"],"sources":["OTPInput.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n// External imports\nimport React, { useEffect } from 'react';\nimport { StyleSheet, Pressable, Keyboard, Platform } from 'react-native';\n\n// Internal imports\nimport SplitTextInput from '../../../widgets/SplitTextInput';\nimport { Fonts } from '../../../../styles/executionTasks/CommonStyles';\nimport { InputType, CaptureInput } from '../ValidateOTPSchema';\nimport { INVALID_REGEX } from '../constants';\n\nexport interface OTPInputProps {\n input: CaptureInput;\n otpCode: string;\n setOTPCode: (otpCode: string) => void;\n hasError: boolean;\n setHasError: (hasError: boolean) => void;\n setErrorMessage: (errorMessage: string) => void;\n}\n\nconst OTPInput = (props: OTPInputProps) => {\n const maximumCodeLength = props.input.length || 6;\n const keyboardType =\n props.input.inputType === InputType.NUMBER || InputType.NUMERIC\n ? 'number-pad'\n : 'default';\n\n useEffect(() => {\n if (\n props.input.validationRegex &&\n props.otpCode.length === maximumCodeLength\n ) {\n const regex = new RegExp(props.input.validationRegex);\n const hasError = !regex.test(props.otpCode);\n\n props.setHasError(hasError);\n if (hasError) props.setErrorMessage(INVALID_REGEX);\n else props.setErrorMessage('');\n }\n }, [maximumCodeLength, props, props.otpCode]);\n\n return (\n <>\n <Pressable onPress={Keyboard.dismiss}>\n <SplitTextInput\n styles={styles.text}\n value={props.otpCode}\n onChange={(text) => {\n if (props.input.validationRegex) {\n }\n if (props.hasError) {\n props.setErrorMessage('');\n props.setHasError(false);\n }\n props.setOTPCode(text);\n }}\n maxLength={maximumCodeLength}\n keyboardType={keyboardType}\n hasError={props.hasError}\n />\n </Pressable>\n </>\n );\n};\n\nexport default OTPInput;\n\nconst styles = StyleSheet.create({\n text: {\n fontFamily:\n Platform.OS === 'android'\n ? Fonts.IBMPlexSans_400Regular\n : 'IBMPlexSans-Regular',\n color: '#3D445C',\n fontSize: 16,\n lineHeight: 24,\n fontWeight: '400',\n textAlign: 'center',\n },\n errorMessage: {\n marginTop: 16,\n marginHorizontal: 10,\n color: '#DC2626',\n fontFamily:\n Platform.OS === 'android'\n ? Fonts.IBMPlexSans_400Regular\n : 'IBMPlexSans-Regular',\n fontSize: 12,\n lineHeight: 16,\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/* eslint-disable react-native/no-inline-styles */
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { Text, TouchableOpacity, View } from 'react-native';
|
|
5
|
+
|
|
6
|
+
// Styles
|
|
7
|
+
import styles from '../ValidateOtpStyles';
|
|
8
|
+
|
|
9
|
+
// Types
|
|
10
|
+
|
|
11
|
+
// Icons
|
|
12
|
+
import { InfoExclamatoryDarkIcon } from '../../../../icons';
|
|
13
|
+
export const ResendOTPButton = props => {
|
|
14
|
+
var _props$resendOTP;
|
|
15
|
+
const {
|
|
16
|
+
timer,
|
|
17
|
+
resendConfig,
|
|
18
|
+
formattedTime,
|
|
19
|
+
handleResendOtp,
|
|
20
|
+
resendCount
|
|
21
|
+
} = props;
|
|
22
|
+
const enableRetry = props === null || props === void 0 || (_props$resendOTP = props.resendOTP) === null || _props$resendOTP === void 0 ? void 0 : _props$resendOTP.enableResends;
|
|
23
|
+
return /*#__PURE__*/React.createElement(View, null, resendCount >= resendConfig.maxResends ? /*#__PURE__*/React.createElement(View, null, /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
24
|
+
disabled: true,
|
|
25
|
+
onPress: handleResendOtp
|
|
26
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
27
|
+
style: [styles.resendOtpMsg, styles.resendOtpBtn, {
|
|
28
|
+
color: '#E0E3EB'
|
|
29
|
+
}]
|
|
30
|
+
}, resendConfig.buttonTitle)), /*#__PURE__*/React.createElement(View, {
|
|
31
|
+
style: styles.maxLimitReachBox
|
|
32
|
+
}, /*#__PURE__*/React.createElement(InfoExclamatoryDarkIcon, {
|
|
33
|
+
height: 22,
|
|
34
|
+
width: 22,
|
|
35
|
+
style: {
|
|
36
|
+
padding: 4
|
|
37
|
+
},
|
|
38
|
+
fill: '#525B7A'
|
|
39
|
+
}), /*#__PURE__*/React.createElement(Text, {
|
|
40
|
+
style: styles.maxLimitReachText
|
|
41
|
+
}, "Maximum resend limit reached."))) : Number(timer) !== 0 ? /*#__PURE__*/React.createElement(Text, {
|
|
42
|
+
style: styles.resendOtpMsg
|
|
43
|
+
}, `${resendConfig.buttonTitle} ${timer ? `in ${formattedTime}` : ''}`) : /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
44
|
+
disabled: Boolean(timer) || resendCount >= resendConfig.maxResends || !enableRetry,
|
|
45
|
+
onPress: handleResendOtp
|
|
46
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
47
|
+
style: [styles.resendOtpMsg, styles.resendOtpBtn, !enableRetry && {
|
|
48
|
+
color: '#E0E3EB'
|
|
49
|
+
}]
|
|
50
|
+
}, resendConfig.buttonTitle)));
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=ResendOTPButton.js.map
|
package/lib/module/components/executiontasks/validateOTP/sub-components/ResendOTPButton.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Text","TouchableOpacity","View","styles","InfoExclamatoryDarkIcon","ResendOTPButton","props","_props$resendOTP","timer","resendConfig","formattedTime","handleResendOtp","resendCount","enableRetry","resendOTP","enableResends","createElement","maxResends","disabled","onPress","style","resendOtpMsg","resendOtpBtn","color","buttonTitle","maxLimitReachBox","height","width","padding","fill","maxLimitReachText","Number","Boolean"],"sources":["ResendOTPButton.tsx"],"sourcesContent":["/* eslint-disable react-native/no-inline-styles */\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport React from 'react';\nimport { Text, TouchableOpacity, View } from 'react-native';\n\n// Styles\nimport styles from '../ValidateOtpStyles';\n\n// Types\nimport { ResendOTPConfigType } from '../ValidateOTPSchema';\n\n// Icons\nimport { InfoExclamatoryDarkIcon } from '../../../../icons';\n\ninterface ResendOTPButtonPropType {\n timer: number;\n resendConfig: ResendOTPConfigType;\n resendCount: number;\n formattedTime: string;\n handleResendOtp: () => void;\n resendOTP?: any;\n}\n\nexport const ResendOTPButton = (props: ResendOTPButtonPropType) => {\n const { timer, resendConfig, formattedTime, handleResendOtp, resendCount } =\n props;\n const enableRetry = props?.resendOTP?.enableResends;\n return (\n <View>\n {resendCount >= resendConfig.maxResends ? (\n <View>\n <TouchableOpacity disabled onPress={handleResendOtp}>\n <Text\n style={[\n styles.resendOtpMsg,\n styles.resendOtpBtn,\n {\n color: '#E0E3EB',\n },\n ]}\n >\n {resendConfig.buttonTitle}\n </Text>\n </TouchableOpacity>\n\n <View style={styles.maxLimitReachBox}>\n <InfoExclamatoryDarkIcon\n height={22}\n width={22}\n style={{ padding: 4 }}\n fill={'#525B7A'}\n />\n <Text style={styles.maxLimitReachText}>\n Maximum resend limit reached.\n </Text>\n </View>\n </View>\n ) : Number(timer) !== 0 ? (\n <Text style={styles.resendOtpMsg}>\n {`${resendConfig.buttonTitle} ${timer ? `in ${formattedTime}` : ''}`}\n </Text>\n ) : (\n <TouchableOpacity\n disabled={\n Boolean(timer) ||\n resendCount >= resendConfig.maxResends ||\n !enableRetry\n }\n onPress={handleResendOtp}\n >\n <Text\n style={[\n styles.resendOtpMsg,\n styles.resendOtpBtn,\n !enableRetry && {\n color: '#E0E3EB',\n },\n ]}\n >\n {resendConfig.buttonTitle}\n </Text>\n </TouchableOpacity>\n )}\n </View>\n );\n};\n"],"mappings":"AAAA;AACA;AACA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,gBAAgB,EAAEC,IAAI,QAAQ,cAAc;;AAE3D;AACA,OAAOC,MAAM,MAAM,sBAAsB;;AAEzC;;AAGA;AACA,SAASC,uBAAuB,QAAQ,mBAAmB;AAW3D,OAAO,MAAMC,eAAe,GAAIC,KAA8B,IAAK;EAAA,IAAAC,gBAAA;EACjE,MAAM;IAAEC,KAAK;IAAEC,YAAY;IAAEC,aAAa;IAAEC,eAAe;IAAEC;EAAY,CAAC,GACxEN,KAAK;EACP,MAAMO,WAAW,GAAGP,KAAK,aAALA,KAAK,gBAAAC,gBAAA,GAALD,KAAK,CAAEQ,SAAS,cAAAP,gBAAA,uBAAhBA,gBAAA,CAAkBQ,aAAa;EACnD,oBACEhB,KAAA,CAAAiB,aAAA,CAACd,IAAI,QACFU,WAAW,IAAIH,YAAY,CAACQ,UAAU,gBACrClB,KAAA,CAAAiB,aAAA,CAACd,IAAI,qBACHH,KAAA,CAAAiB,aAAA,CAACf,gBAAgB;IAACiB,QAAQ;IAACC,OAAO,EAAER;EAAgB,gBAClDZ,KAAA,CAAAiB,aAAA,CAAChB,IAAI;IACHoB,KAAK,EAAE,CACLjB,MAAM,CAACkB,YAAY,EACnBlB,MAAM,CAACmB,YAAY,EACnB;MACEC,KAAK,EAAE;IACT,CAAC;EACD,GAEDd,YAAY,CAACe,WACV,CACU,CAAC,eAEnBzB,KAAA,CAAAiB,aAAA,CAACd,IAAI;IAACkB,KAAK,EAAEjB,MAAM,CAACsB;EAAiB,gBACnC1B,KAAA,CAAAiB,aAAA,CAACZ,uBAAuB;IACtBsB,MAAM,EAAE,EAAG;IACXC,KAAK,EAAE,EAAG;IACVP,KAAK,EAAE;MAAEQ,OAAO,EAAE;IAAE,CAAE;IACtBC,IAAI,EAAE;EAAU,CACjB,CAAC,eACF9B,KAAA,CAAAiB,aAAA,CAAChB,IAAI;IAACoB,KAAK,EAAEjB,MAAM,CAAC2B;EAAkB,GAAC,+BAEjC,CACF,CACF,CAAC,GACLC,MAAM,CAACvB,KAAK,CAAC,KAAK,CAAC,gBACrBT,KAAA,CAAAiB,aAAA,CAAChB,IAAI;IAACoB,KAAK,EAAEjB,MAAM,CAACkB;EAAa,GAC9B,GAAGZ,YAAY,CAACe,WAAW,IAAIhB,KAAK,GAAG,MAAME,aAAa,EAAE,GAAG,EAAE,EAC9D,CAAC,gBAEPX,KAAA,CAAAiB,aAAA,CAACf,gBAAgB;IACfiB,QAAQ,EACNc,OAAO,CAACxB,KAAK,CAAC,IACdI,WAAW,IAAIH,YAAY,CAACQ,UAAU,IACtC,CAACJ,WACF;IACDM,OAAO,EAAER;EAAgB,gBAEzBZ,KAAA,CAAAiB,aAAA,CAAChB,IAAI;IACHoB,KAAK,EAAE,CACLjB,MAAM,CAACkB,YAAY,EACnBlB,MAAM,CAACmB,YAAY,EACnB,CAACT,WAAW,IAAI;MACdU,KAAK,EAAE;IACT,CAAC;EACD,GAEDd,YAAY,CAACe,WACV,CACU,CAEhB,CAAC;AAEX,CAAC","ignoreList":[]}
|