25 lines
827 B
TypeScript
25 lines
827 B
TypeScript
import { paths } from './schema.ts'
|
|
import createClient, { Middleware } from 'openapi-fetch'
|
|
import { dispatchMessage } from '../messageBus/messageBus.ts'
|
|
import { useUserStore } from '../user/user.ts'
|
|
import { getUserFromCookie } from '../auth/getUserFromCookie.ts'
|
|
|
|
export const initClient = () => {
|
|
const client = createClient<paths>({ baseUrl: import.meta.env.VITE_API_URL })
|
|
const UnauthorizedHandlerMiddleware: Middleware = {
|
|
async onResponse({ response }) {
|
|
if (response.status === 401) {
|
|
dispatchMessage('auth:unauthorized', null)
|
|
}
|
|
|
|
const user = getUserFromCookie()
|
|
console.debug('got user cookie', user)
|
|
useUserStore.getState().setUser(user)
|
|
},
|
|
}
|
|
|
|
client.use(UnauthorizedHandlerMiddleware)
|
|
return client
|
|
}
|
|
|
|
export type ApiClient = ReturnType<typeof initClient>
|