import { useAuthStore } from '@/stores/auth' import { retryWithAuth } from './authRetry' import { createEveningDetectiveServerClient, type EveningDetectiveServer, } from './generated/crabs/evening_detective_server' import { createHttpHandler, type ExtraHeadersProvider, } from './generated/crabs/evening_detective_server/client' export function getAuthClient(getExtraHeaders?: ExtraHeadersProvider) { const authStore = useAuthStore() return buildAuthClient(authStore.refreshTokenAction, authStore.getToken, getExtraHeaders) } function buildAuthClient( refreshTokens: (failedToken?: string | null) => Promise, getToken: () => string | null, getExtraHeaders?: ExtraHeadersProvider, ): EveningDetectiveServer { const handler = createHttpHandler(getToken, getExtraHeaders) return createEveningDetectiveServerClient((request) => retryWithAuth(() => handler(request), refreshTokens, getToken), ) }