Skip to content

Commit e379517

Browse files
authored
BAH-4137 | Fix. Enable resend OTP only when OTP response is success (#101)
* BAH-4137 | Fix. Enable resend OTP only when OTP response is success * BAH-4137 | Refactor. Error message parsing * BAH-4137 | Refactor. Otp empty validation check and method naming
1 parent 06109a8 commit e379517

File tree

2 files changed

+32
-21
lines changed

2 files changed

+32
-21
lines changed

src/api/apiUtils.js

+26-17
Original file line numberDiff line numberDiff line change
@@ -3,29 +3,38 @@ export const parseAPIError = (error) => {
33
if (!error.response?.data) {
44
return Constants.serviceUnavailableError;
55
}
6+
var errorObject = { "error": { "message": "An error occurred while processing your request", "status": error.response.status}}
7+
68
var errorResponseData = error.response.data;
79
if (errorResponseData instanceof Array){
810
errorResponseData = errorResponseData[0];
911
}
10-
if (errorResponseData.message)
11-
return { "error": { "message": errorResponseData.message } }
12-
if (errorResponseData.error?.message)
13-
return { "error": { "message": errorResponseData.error.message } }
14-
if (errorResponseData.details !== undefined && errorResponseData.details.length > 0)
15-
return { "error": { "message": errorResponseData.details[0].message } }
16-
if (errorResponseData.error !== undefined && typeof errorResponseData.error === 'string')
17-
return { "error": { "message": errorResponseData.error } }
18-
let extractedErrorMessage = extractErrorMessage(errorResponseData)
19-
if (extractedErrorMessage !== undefined)
20-
return extractedErrorMessage
21-
if (error.status === 400)
22-
return { "error": { "message": "Bad Request: Please verify the entered input" } }
23-
if (error.status === 500)
24-
return { "error": { "message": "Internal Server Error: Please try again later" } }
25-
return { "error": { "message": "An error occurred while processing your request" } }
12+
let extractedErrorMessage = extractErrorMessageFromPayload(errorResponseData)
13+
if (extractedErrorMessage)
14+
{
15+
errorObject.error.message = extractedErrorMessage;
16+
return errorObject;
17+
}
18+
if (error.response.status === 400)
19+
{
20+
errorObject.error.message = "Bad Request: Please verify the entered input";
21+
return errorObject;
22+
}
23+
if (error.response.status === 500)
24+
{
25+
errorObject.error.message = "Internal Server Error: Please try again later";
26+
return errorObject;
27+
}
28+
return errorObject;
2629
}
2730

28-
const extractErrorMessage = (errorResponseData) => {
31+
const extractErrorMessageFromPayload = (errorResponseData) => {
32+
let errorMessage = errorResponseData?.message || errorResponseData?.error?.message || errorResponseData?.details?.[0]?.message;
33+
if(errorMessage)
34+
return errorMessage
35+
if (typeof errorResponseData?.error === 'string') {
36+
return errorResponseData.error;
37+
}
2938
if (typeof errorResponseData === 'object')
3039
for (var key in errorResponseData) {
3140
if (key !== 'timestamp') {

src/components/creation/VerifyMobile.jsx

+6-4
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ const VerifyMobile = (props) => {
1515
const [proceed, setProceed] = useState(false);
1616
const [otp, setOtp] = useState('');
1717
const [otpVerified, setOtpVerified] = useState(false);
18-
const [showResendOtp, setshowResendOtp] = useState(false);
18+
const [showResendOtp, setShowResendOtp] = useState(false);
1919
const [showResendSuccessMessage,setShowResendSuccessMessage] = useState(false);
2020

2121

@@ -31,11 +31,11 @@ const VerifyMobile = (props) => {
3131
setLoader(true);
3232
var response = await generateMobileOtp(mobile);
3333
setLoader(false);
34-
setshowResendOtp(true);
3534
if (response.error) {
36-
setError(response.error.message);
35+
setError(response.error.message);
3736
}
3837
else{
38+
setShowResendOtp(true);
3939
setShowOtpInput(true);
4040
}
4141
}
@@ -46,6 +46,8 @@ const VerifyMobile = (props) => {
4646
var response = await generateMobileOtp(mobile);
4747
setLoader(false);
4848
if (response.error) {
49+
if(response.error.status === 429)
50+
setShowResendOtp(false);
4951
setError(response.error.message);
5052
}
5153
else{
@@ -55,7 +57,7 @@ const VerifyMobile = (props) => {
5557
}
5658

5759
async function verifyOtp() {
58-
if (otp === '') {
60+
if (!otp.trim()) {
5961
setError("otp cannot be empty")
6062
} else {
6163
setLoader(true);

0 commit comments

Comments
 (0)