signoz/frontend/src/api/ErrorResponseHandler.ts
rahulkeswani101 a6848f6abd
fix: added card to show message for deleted alert id (#5565)
* fix: added card to show message for deleted alert id

* refactor: added new constants for handling error message when alert is deleted

* refactor: added error response to error message field

* refactor: removed console statement

* refactor: renamed the variables
2024-08-06 19:09:49 +05:30

64 lines
1.5 KiB
TypeScript

import { AxiosError, AxiosResponse } from 'axios';
import { ErrorResponse } from 'types/api';
import { ErrorStatusCode } from 'types/common';
export function ErrorResponseHandler(error: AxiosError): ErrorResponse {
const { response, request } = error;
if (response) {
// client received an error response (5xx, 4xx)
// making the error status code as standard Error Status Code
const statusCode = response.status as ErrorStatusCode;
const { data } = response as AxiosResponse;
if (statusCode >= 400 && statusCode < 500) {
if (statusCode === 404) {
return {
statusCode,
payload: null,
error: data.errorType || data.type,
message: null,
};
}
const { errors, error } = data;
const errorMessage =
Array.isArray(errors) && errors.length >= 1 ? errors[0].msg : error;
return {
statusCode,
payload: null,
error: errorMessage,
message: (response.data as any)?.status,
body: JSON.stringify((response.data as any).data),
};
}
return {
statusCode,
payload: null,
error: 'Something went wrong',
message: data?.error,
};
}
if (request) {
// client never received a response, or request never left
console.error('client never received a response, or request never left');
return {
statusCode: 500,
payload: null,
error: 'Something went wrong',
message: null,
};
}
// anything else
console.error('any');
return {
statusCode: 500,
payload: null,
error: String(error),
message: null,
};
}