import axios from 'axios' import { localCache } from '@/io/cache' import { showToast } from 'vant' import { useAuthModal } from '@/stores/authModal'; const service = axios.create({ baseURL: import.meta.env.VITE_API_BASE_URL, timeout: 200000, withCredentials: false }) service.interceptors.request.use( config => { const token = localCache.get('auth') && localCache.get('auth').token; if (token) { config.headers[ 'Authorization' ] = `Bearer ${token}` } if (config.requestBaseUrl == 'chat') { config.baseURL = import.meta.env.VITE_API_CHAT_URL } return config }, error => { return Promise.reject(error) } ) service.interceptors.response.use( response => { const { requestBaseUrl } = response.config const res = response.data const authModal = useAuthModal(); if (requestBaseUrl == 'chat') { return res } else { if (res.status != 0) { if (res.status == 401) { authModal.setAuthModalType('login'); authModal.showAuthModal(); localCache.remove('auth'); localCache.remove('userInfo'); } else { showToast(res.msg || 'Error') } return Promise.reject(res.message || 'Error') } else { return res.data } } }, error => { const authModal = useAuthModal(); if (error.message == 'canceled') return Promise.reject(error) const res = error.response?.data const { requestBaseUrl } = error.config if (requestBaseUrl == 'chat') { if (res.errcode == 401) { authModal.setAuthModalType('login'); authModal.showAuthModal(); localCache.remove('auth'); localCache.remove('userInfo'); } else { showToast(res.errmsg || 'Error') } return Promise.reject(res) } else { showToast(res.errmsg || 'Error') return Promise.reject(error) } } ) export default service