import store from '@/store'
import {
	customTotast
} from "@/utils/index"

export function runInterceptors(instance) {
	const requestUse = instance.interceptors.request.use.bind(instance.interceptors.request); //请求拦截
	const responsetUse = instance.interceptors.response.use.bind(instance.interceptors.response);//响应拦截
	// 添加token
	requestUse((config) => {
		const {
			token
		} = store.state.users;
		token && (config.header['token'] = token)
		return config;
	});

	// 设置post的data不为空
	requestUse((config) => {
		if (config.method === "post" && !config.data) {
			config.data = {};
		}
		return config;
	});

	// 处理登录过期
	responsetUse((respone) => {
		
		const {
			code
		} = respone.data;

		// 如果失效跳转
		if (code == 1005 || code == 1006 || code == 1103 || code == 1100 || code == 1101 || code == 1102 ||
			code == 1300) {
			uni.showToast({
				title: '登录已失效',
				duration: 3000,
			});
			// store.dispatch('users/logout')
			
			return Promise.reject('没有登录');
		}
		return respone;
	});

	// 处理响应结果
	responsetUse((instance) => {
		console.log(instance);
		const {
			code,
			msg
		} = instance.data;

		if (code != 0 ) {
			// customTotast({
			// 	title: msg
			// })()
			return Promise.reject(instance.data)
		} 
		console.log(instance);
		return instance.data;
	}, handleResponseError);
	return instance;
}

// 处理错误
function handleResponseError(err) {
	console.log(err,'6666');
	const errType = typeof err;
	if (err && errType === "string") {
		customTotast({
			title: err
		})()
		return new Promise(() => {});
	}
	if (errType === "object") {
		err = "请求错误";
	}
	return Promise.reject(err);
}