generated from VLADIMIR/template_frontend
28 lines
932 B
TypeScript
28 lines
932 B
TypeScript
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<boolean>,
|
|
getToken: () => string | null,
|
|
getExtraHeaders?: ExtraHeadersProvider,
|
|
): EveningDetectiveServer {
|
|
const handler = createHttpHandler(getToken, getExtraHeaders)
|
|
return createEveningDetectiveServerClient((request) =>
|
|
retryWithAuth(() => handler(request), refreshTokens, getToken),
|
|
)
|
|
}
|