import router from '@/router/index'
import { computed } from 'vue'
import axios from 'axios'
import { ElMessage } from 'element-plus'
const api = import.meta.env.VITE_API_HOST
const platform = computed(() => {
  const u = navigator.userAgent
  return {
    mobile: !!u.match(/AppleWebKit.*Mobile.*/), // 是否为移动终端
    ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), // ios终端
    android: u.indexOf('Android') > -1 || u.indexOf('Adr') > -1, // android终端
    iPhone: u.indexOf('iPhone') > -1, // 是否为iPhone或者QQHD浏览器
    iPad: u.indexOf('iPad') > -1, // 是否iPad
    webApp: u.indexOf('Safari') === -1, // 是否web应该程序，没有头部与底部
    weixin: u.indexOf('MicroMessenger') > -1 // 是否微信
  }
})
const instance = axios.create({
  baseURL: api
})

// 请求拦截器
instance.interceptors.request.use((config:any) => {
  config.headers['Authorization'] = sessionStorage.getItem('token')
  return config
}, err => {
  return Promise.reject(err)
})

// 响应拦截器
instance.interceptors.response.use(response => {
  return response
}, err => {
  if (err.response.status === 401) {
    sessionStorage.removeItem('token')
    ElMessage.error('登录状态已失效！请重新登录！')
    setTimeout(() => {
      if (platform.value.mobile) {
        router.push({ path: '/login' })
      } else {
        router.push({ path: '/home', query: { tologin: 1 }})
      }
      // location.reload()
    }, 1000)
  }
  return Promise.reject(err.response)
})

// 导出工具函数
export default instance
