import axios, { AxiosInstance } from 'axios';
import { boot } from 'quasar/wrappers';
import { StateInterface } from '../store';
import config from '../config';

declare module 'vue/types/vue' {
  interface Vue {
    $axios: AxiosInstance;
  }
}

export default boot(({ Vue, store }) => {
  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
  Vue.prototype.$axios = axios;
  axios.defaults.baseURL = config.baseURL;

  axios.interceptors.request.use(config => {
    const token = (<StateInterface>store.state).user.token;
    if (token) {
      config.headers['Authorization'] = 'Token ' + token.token;
    }
    return config;
  });
});

export { axios };