import * as KIT from "@frontend/kitui"; import { Method, ResponseType, AxiosError } from "axios"; import { clearAuthToken } from "@frontend/kitui"; import { cleanAuthTicketData } from "@root/ticket"; import { clearUserData } from "@root/user"; import { clearQuizData } from "@root/quizes/store"; import { redirect } from "react-router-dom"; interface MakeRequest { method?: Method | undefined; url: string; body?: unknown; useToken?: boolean | undefined; contentType?: boolean | undefined; responseType?: ResponseType | undefined; signal?: AbortSignal | undefined; withCredentials?: boolean | undefined; } async function makeRequest( data: MakeRequest, ): Promise { try { const response = await KIT.makeRequest(data); return response as TResponse; } catch (e) { const error = e as AxiosError; if ( error.response?.status === 400 && error.response?.data?.message === "refreshToken is empty" ) { cleanAuthTicketData(); clearAuthToken(); clearUserData(); clearQuizData(); redirect("/"); } throw e; } } export default makeRequest;