diff --git a/front/packages/models/src/accounts.tsx b/front/packages/models/src/accounts.tsx index 327ed0fe..a0e05380 100644 --- a/front/packages/models/src/accounts.tsx +++ b/front/packages/models/src/accounts.tsx @@ -46,7 +46,7 @@ export const useAccounts = () => { setVerified({status: "loading"}); const selAcc = accounts![selected!]; setApiUrl(selAcc.apiUrl); - const verif = await loginFunc("refresh", selAcc.refresh_token); + const verif = await loginFunc("refresh", selAcc.refresh_token, undefined, 5_000); setVerified(verif.ok ? { status: "ok" } : { status: "error", error: verif.error }); } diff --git a/front/packages/models/src/login.ts b/front/packages/models/src/login.ts index 4e457ff1..6a349631 100644 --- a/front/packages/models/src/login.ts +++ b/front/packages/models/src/login.ts @@ -60,8 +60,11 @@ export const loginFunc = async ( action: "register" | "login" | "refresh", body: { username: string; password: string; email?: string } | string, apiUrl?: string, + timeout?: number, ): Promise> => { try { + const controller = timeout !== undefined ? new AbortController() : undefined; + if (controller) setTimeout(() => controller.abort(), timeout); const token = await queryFn( { path: ["auth", action, typeof body === "string" && `?token=${body}`], @@ -69,6 +72,7 @@ export const loginFunc = async ( body: typeof body === "object" ? body : undefined, authenticated: false, apiUrl, + abortSignal: controller?.signal, }, TokenP, ); diff --git a/front/packages/models/src/query.tsx b/front/packages/models/src/query.tsx index 5d7c61f7..0f0eeb38 100644 --- a/front/packages/models/src/query.tsx +++ b/front/packages/models/src/query.tsx @@ -54,7 +54,8 @@ export const queryFn = async ( body?: object; method: "GET" | "POST" | "DELETE"; authenticated?: boolean; - apiUrl?: string + apiUrl?: string; + abortSignal?: AbortSignal; }, type?: z.ZodType, token?: string | null, @@ -87,6 +88,7 @@ export const queryFn = async ( ...(token ? { Authorization: token } : {}), ...("body" in context ? { "Content-Type": "application/json" } : {}), }, + signal: "abortSignal" in context ? context.abortSignal : undefined, }); } catch (e) { console.log("Fetch error", e);