femto-webapp/src/app/api/client.ts
2025-08-10 16:16:23 +02:00

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>