import type { AxiosError } from 'axios'; import axios from 'axios'; import { router } from '@/lib/router'; import { getToken, hasToken } from './token'; export const axiosClient = axios.create({ baseURL: '/api/', }); axiosClient.interceptors.request.use((config) => { const token = getToken(); if (token !== null) { config.headers.Authorization = `Bearer ${token}`; } return config; }); axiosClient.interceptors.response.use(undefined, async (error: AxiosError) => { if (error.response && error?.response.status === 401) { // TODO: refresh token if (!hasToken()) { await router.navigate({ to: '/login' }); return; } if (error.config) { return axiosClient(error.config); } } return Promise.reject(error); });