Files
evening_detective_frontend/src/api/auth_client.ts
T
2026-07-18 18:42:05 +07:00

34 lines
1.1 KiB
TypeScript

import { createEveningDetectiveServerClient, type EveningDetectiveServer } from "./generated/crabs/evening_detective_server";
import { createHttpHandler } from "./generated/crabs/evening_detective_server/client";
export function buildAuthClient(
refreshTokens: () => Promise<boolean>,
getToken: () => string | null,
): EveningDetectiveServer {
return createEveningDetectiveServerClient(
createAuthHttpHandler(
refreshTokens,
createHttpHandler(
getToken,
)
)
)
}
function createAuthHttpHandler(
refreshTokens: () => Promise<boolean>,
handler: (request: { path: string, method: string, body: string | null }) => Promise<unknown>
): (request: { path: string, method: string, body: string | null }) => Promise<unknown> {
return async (
request: { path: string, method: string, body: string | null },
) => {
try {
return await handler(request)
} catch (error) {
await refreshTokens()
return await handler(request)
}
}
}