mirror of
https://github.com/acid-info/logos-ordinals-dashboard.git
synced 2025-01-28 22:27:01 +00:00
62 lines
1.4 KiB
TypeScript
62 lines
1.4 KiB
TypeScript
import axios, { AxiosError } from 'axios'
|
|
|
|
export const API_BASE =
|
|
process.env.NEXT_PUBLIC_API_MODE === 'development'
|
|
? 'https://exit-test-567058b69f45.herokuapp.com/api'
|
|
: 'https://exit.logos.co/api'
|
|
|
|
const api = axios.create({
|
|
baseURL: API_BASE,
|
|
withCredentials: true,
|
|
})
|
|
|
|
api.interceptors.request.use(
|
|
async (config) => {
|
|
return config
|
|
},
|
|
(error) => {
|
|
Promise.reject(error)
|
|
},
|
|
)
|
|
|
|
api.interceptors.response.use(
|
|
(response) => {
|
|
return response
|
|
},
|
|
async (error: AxiosError) => {
|
|
const originalRequest = error.config
|
|
|
|
if (error.response?.status === 401) {
|
|
try {
|
|
const refreshToken = await sessionStorage.getItem('refreshToken')
|
|
|
|
await api
|
|
.post('/token/refresh', {
|
|
refresh: refreshToken,
|
|
})
|
|
.then(async (res) => {
|
|
sessionStorage.setItem('accessToken', res.data.access)
|
|
|
|
api.defaults.headers.common['Authorization'] =
|
|
'Bearer ' + res.data.access
|
|
|
|
return await axios(originalRequest as any)
|
|
})
|
|
} catch (e) {
|
|
console.log('refresh token', e)
|
|
}
|
|
}
|
|
|
|
if (error.response?.status === 429) {
|
|
return Promise.reject(error)
|
|
}
|
|
return Promise.reject(error)
|
|
},
|
|
)
|
|
|
|
api.defaults.withCredentials = true
|
|
|
|
export const fetcher = (url: string) => api.get(url).then((res) => res)
|
|
|
|
export { api }
|