🔧 chore(constants.ts): add URL_EXCLUDED_FROM_ERROR_RETRIES constant to store URLs excluded from error retries for better error handling
🔧 chore(api.tsx): add logic to exclude certain URLs from error retries in the ApiInterceptor component to improve error handling 🔧 chore(index.ts): update postCustomComponent function to use the api instance instead of axios for consistency and reusability
This commit is contained in:
parent
fb407cf9d1
commit
07b5419586
3 changed files with 13 additions and 2 deletions
|
|
@ -491,3 +491,10 @@ export const NOUNS: string[] = [
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
export const USER_PROJECTS_HEADER = "My Collection";
|
export const USER_PROJECTS_HEADER = "My Collection";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* URLs excluded from error retries.
|
||||||
|
* @constant
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
export const URL_EXCLUDED_FROM_ERROR_RETRIES = ["/api/v1/validate/code", "/api/v1/custom_component", "/api/v1/validate/prompt"];
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import axios, { AxiosError, AxiosInstance } from "axios";
|
import axios, { AxiosError, AxiosInstance } from "axios";
|
||||||
import { useContext, useEffect, useRef } from "react";
|
import { useContext, useEffect, useRef } from "react";
|
||||||
import { alertContext } from "../../contexts/alertContext";
|
import { alertContext } from "../../contexts/alertContext";
|
||||||
|
import { URL_EXCLUDED_FROM_ERROR_RETRIES } from "../../constants/constants";
|
||||||
|
|
||||||
// Create a new Axios instance
|
// Create a new Axios instance
|
||||||
const api: AxiosInstance = axios.create({
|
const api: AxiosInstance = axios.create({
|
||||||
|
|
@ -15,6 +16,9 @@ function ApiInterceptor() {
|
||||||
const interceptor = api.interceptors.response.use(
|
const interceptor = api.interceptors.response.use(
|
||||||
(response) => response,
|
(response) => response,
|
||||||
async (error: AxiosError) => {
|
async (error: AxiosError) => {
|
||||||
|
if (URL_EXCLUDED_FROM_ERROR_RETRIES.includes(error.config?.url)) {
|
||||||
|
return Promise.reject(error);
|
||||||
|
}
|
||||||
let retryCount = 0;
|
let retryCount = 0;
|
||||||
|
|
||||||
while (retryCount < 4) {
|
while (retryCount < 4) {
|
||||||
|
|
@ -31,7 +35,7 @@ function ApiInterceptor() {
|
||||||
"Refresh the page",
|
"Refresh the page",
|
||||||
"Use a new flow tab",
|
"Use a new flow tab",
|
||||||
"Check if the backend is up",
|
"Check if the backend is up",
|
||||||
"Endpoint: " + error.config.url,
|
"Endpoint: " + error.config?.url,
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
return Promise.reject(error);
|
return Promise.reject(error);
|
||||||
|
|
|
||||||
|
|
@ -344,5 +344,5 @@ export async function postCustomComponent(
|
||||||
code: string,
|
code: string,
|
||||||
apiClass: APIClassType
|
apiClass: APIClassType
|
||||||
): Promise<AxiosResponse<APIClassType>> {
|
): Promise<AxiosResponse<APIClassType>> {
|
||||||
return await axios.post(`/api/v1/custom_component`, { code });
|
return await api.post(`/api/v1/custom_component`, { code });
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue