import router from '@/router'
import axios from 'axios'

const instance = axios.create({
  baseURL: 'http://localhost:4000'
})

function delay(sec: number) {
  return new Promise((resolve, reject) => {
    setTimeout(() => resolve(sec), sec * 1000)
  })
}

instance.interceptors.request.use(
  async function (config) {
    const token = localStorage.getItem('access_token')
    console.log('request interceptor ' + token)

    if (token) {
      config.headers.Authorization = 'Bearer ' + token
    }
    console.log(config)
    return config
  },
  function (error) {
    return Promise.reject(error)
  }
)
// this is when after request it will respond
instance.interceptors.response.use(
  async function (res) {
    console.log('response interceptor')

    await delay(0.1)
    return res
  },
  function (error) {
    if (401 === error.response.status) {
      router.replace('login')
    }
    return Promise.reject(error)
  }
)
export default instance