// http.js

import { ref } from 'vue';

// 封装请求拦截器
function requestInterceptor(options) {
	 
  // 在请求发送之前做一些处理
  // 比如添加请求头、修改请求参数等
  options.header = {
	 'Authorization': 'Bearer ' + sessionStorage.getItem("access_token"), // 假设需要添加 token
    'Content-Type': 'application/json' // 设置请求头
  };
  return options;
}

// 封装响应拦截器
function responseInterceptor(response) {
  // 对响应数据进行处理
  // 比如根据响应状态码进行不同的操作
  if (response.statusCode === 200) {
    // 请求成功
	if(response.data.status==false){
		uni.showToast({
		  title: response.data.msg ,
		  icon: 'none'
		});
	}
    return response.data;
  } else {
    // 请求失败
    uni.showToast({
      title: '请求失败，请稍后重试',
      icon: 'none'
    });
    return Promise.reject(response.data);
  }
}

// 发送请求的方法，内部使用拦截器
export function useHttp() {
  const isLoading = ref(false);

  function sendRequest(options) {
	  isLoading.value = true;
	  uni.showLoading({
	  	title: '加载中'
	  });
    // 请求发送之前，先经过请求拦截器处理
    let processedOptions = requestInterceptor(options);

    

    return new Promise((resolve, reject) => {
      uni.request({
        ...processedOptions,
        success: (res) => {
          // 请求成功后，经过响应拦截器处理
          let processedResponse = responseInterceptor(res);
          isLoading.value = false;
		  uni.hideLoading();
          resolve(processedResponse);
        },
        fail: (err) => { 
          // 请求失败
          isLoading.value = false;
		  uni.hideLoading();
          reject(err);
        }
      });
    });
  }

  return {
    isLoading,
    sendRequest
  };
}