From 5f5afbaf43466d8ec5115d58b0636cf1514dd214 Mon Sep 17 00:00:00 2001 From: Tiago Yamamoto Date: Wed, 31 Dec 2025 10:06:11 -0300 Subject: [PATCH] fix(frontend): robust runtime config loading in api layer --- frontend/src/contexts/ConfigContext.tsx | 8 -------- frontend/src/lib/api.ts | 8 +++++++- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/frontend/src/contexts/ConfigContext.tsx b/frontend/src/contexts/ConfigContext.tsx index 63e1e91..63af8e1 100644 --- a/frontend/src/contexts/ConfigContext.tsx +++ b/frontend/src/contexts/ConfigContext.tsx @@ -51,14 +51,6 @@ export function ConfigProvider({ children }: { children: ReactNode }) { fetchConfig(); }, []); - if (isLoading) { - return ( -
-
-
- ); - } - return ( {children} diff --git a/frontend/src/lib/api.ts b/frontend/src/lib/api.ts index 1a01b6b..2cde149 100644 --- a/frontend/src/lib/api.ts +++ b/frontend/src/lib/api.ts @@ -1,6 +1,6 @@ import { toast } from "sonner"; import { Job } from "./types"; -import { getApiUrl, getBackofficeUrl } from "./config"; +import { getApiUrl, getBackofficeUrl, initConfig } from "./config"; // API Base URL - now uses runtime config // Fetched from /api/config at runtime, falls back to build-time env or defaults @@ -16,6 +16,9 @@ function logCrudAction(action: string, entity: string, details?: any) { * Generic API Request Wrapper */ async function apiRequest(endpoint: string, options: RequestInit = {}): Promise { + // Ensure config is loaded before making request + await initConfig(); + // Token can be stored as 'auth_token' (from auth.ts login) or 'token' (legacy) const token = localStorage.getItem("auth_token") || localStorage.getItem("token"); const headers = { @@ -572,6 +575,9 @@ export const profileApi = { // Backoffice URL - now uses runtime config async function backofficeRequest(endpoint: string, options: RequestInit = {}): Promise { + // Ensure config is loaded before making request + await initConfig(); + const token = localStorage.getItem("token"); const headers = { "Content-Type": "application/json",