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