diff --git a/modules/frontend/src/api/AuthClient/AuthClient.ts b/modules/frontend/src/api/AuthClient/AuthClient.ts index 2619db9..b71f5e7 100644 --- a/modules/frontend/src/api/AuthClient/AuthClient.ts +++ b/modules/frontend/src/api/AuthClient/AuthClient.ts @@ -10,13 +10,15 @@ async function getRefreshed(): Promise { if (!refreshPromise) { refreshPromise = (async () => { try { - const res = await refreshTokens({ throwOnError: true }); + const res = await refreshTokens(); + // consider refresh successful if res.data exists return !!res.data; - } catch { - return false; + } catch (err) { + return false; // failed to refresh } })(); } + return refreshPromise; } @@ -25,33 +27,29 @@ const baseClient = createClient(createConfig({ baseUrl: '/api/v1 export const authClient: Client = { ...baseClient, - // Force the function to match the expected signature exactly - request: (async < + request: function < TData = unknown, TError = unknown, - ThrowOnError extends boolean = false, + ThrowOnError extends boolean = true, TResponseStyle extends ResponseStyle = 'fields', >( options: Omit, 'method'> & Pick>, 'method'> - ): Promise> => { - - // Initial request - let result = await baseClient.request(options); + ): RequestResult { - // Check for 401 - if ((result as any)?.error?.response?.status === 401) { - const refreshed = await getRefreshed(); - - if (refreshed) { - // Retry - result = await baseClient.request(options); - } else { - localStorage.clear(); - window.location.href = "/login"; + // Wrap logic inside a Promise to satisfy RequestResult type + return baseClient.request(options).catch(async (err: any) => { + if (err?.status === 401) { + const refreshed = await getRefreshed(); + if (!refreshed) { + localStorage.clear(); + window.location.href = "/login"; + throw err; + } + // Retry original request + return baseClient.request(options); } - } - - return result as RequestResult; - }) as Client['request'], // Cast the function itself to match the Client interface -}; \ No newline at end of file + throw err; + }) as RequestResult; + }, +};