From 07b541958671b456992370cac711ea0a6fa6c1fc Mon Sep 17 00:00:00 2001 From: Cristhian Zanforlin Lousa Date: Thu, 27 Jul 2023 12:13:45 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20chore(constants.ts):=20add=20URL?= =?UTF-8?q?=5FEXCLUDED=5FFROM=5FERROR=5FRETRIES=20constant=20to=20store=20?= =?UTF-8?q?URLs=20excluded=20from=20error=20retries=20for=20better=20error?= =?UTF-8?q?=20handling=20=F0=9F=94=A7=20chore(api.tsx):=20add=20logic=20to?= =?UTF-8?q?=20exclude=20certain=20URLs=20from=20error=20retries=20in=20the?= =?UTF-8?q?=20ApiInterceptor=20component=20to=20improve=20error=20handling?= =?UTF-8?q?=20=F0=9F=94=A7=20chore(index.ts):=20update=20postCustomCompone?= =?UTF-8?q?nt=20function=20to=20use=20the=20api=20instance=20instead=20of?= =?UTF-8?q?=20axios=20for=20consistency=20and=20reusability?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/frontend/src/constants/constants.ts | 7 +++++++ src/frontend/src/controllers/API/api.tsx | 6 +++++- src/frontend/src/controllers/API/index.ts | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/frontend/src/constants/constants.ts b/src/frontend/src/constants/constants.ts index 195570be0..d77a4f471 100644 --- a/src/frontend/src/constants/constants.ts +++ b/src/frontend/src/constants/constants.ts @@ -491,3 +491,10 @@ export const NOUNS: string[] = [ * */ 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"]; \ No newline at end of file diff --git a/src/frontend/src/controllers/API/api.tsx b/src/frontend/src/controllers/API/api.tsx index 8dd9eac9f..d5af8f4b0 100644 --- a/src/frontend/src/controllers/API/api.tsx +++ b/src/frontend/src/controllers/API/api.tsx @@ -1,6 +1,7 @@ import axios, { AxiosError, AxiosInstance } from "axios"; import { useContext, useEffect, useRef } from "react"; import { alertContext } from "../../contexts/alertContext"; +import { URL_EXCLUDED_FROM_ERROR_RETRIES } from "../../constants/constants"; // Create a new Axios instance const api: AxiosInstance = axios.create({ @@ -15,6 +16,9 @@ function ApiInterceptor() { const interceptor = api.interceptors.response.use( (response) => response, async (error: AxiosError) => { + if (URL_EXCLUDED_FROM_ERROR_RETRIES.includes(error.config?.url)) { + return Promise.reject(error); + } let retryCount = 0; while (retryCount < 4) { @@ -31,7 +35,7 @@ function ApiInterceptor() { "Refresh the page", "Use a new flow tab", "Check if the backend is up", - "Endpoint: " + error.config.url, + "Endpoint: " + error.config?.url, ], }); return Promise.reject(error); diff --git a/src/frontend/src/controllers/API/index.ts b/src/frontend/src/controllers/API/index.ts index e13886e5d..992197146 100644 --- a/src/frontend/src/controllers/API/index.ts +++ b/src/frontend/src/controllers/API/index.ts @@ -344,5 +344,5 @@ export async function postCustomComponent( code: string, apiClass: APIClassType ): Promise> { - return await axios.post(`/api/v1/custom_component`, { code }); + return await api.post(`/api/v1/custom_component`, { code }); }