﻿import type { RequestOptions } from '@@/plugin-request/request';
import type { RequestConfig } from '@umijs/max';
import { message } from 'antd';
import { history } from '@umijs/max';
import { decryptData } from '@/utils/utils';

const runtimeBaseUrl = typeof BASE_URL === 'undefined' ? '' : BASE_URL;

/**
 * @name 错误处理
 * pro 自带的错误处理， 可以在这里做自己的改动
 * @doc https://umijs.org/docs/max/request#配置
 */
export const errorConfig: RequestConfig = {
  baseURL: runtimeBaseUrl,

  // 请求拦截器
  requestInterceptors: [
    (config: RequestOptions) => {
      const authorization = decryptData(localStorage.getItem('token')) || '';
      const headers = {
        ...config.headers,
        Authorization: authorization,
      };
      const url = config?.url;
      return {
        ...config,
        url,
        headers,
      };
    },
  ],

  // 响应拦截器
  responseInterceptors: [
    (response: any) => {
      // 拦截响应数据，进行个性化处理
      const { data } = response as { data?: { code?: number; msg?: string } };
      if (data?.code === 103 || data?.code === 401) {
        localStorage.clear()
        history.replace('/login')
        return Promise.resolve(response)
      }
      if (typeof data?.code === 'number' && data.code !== 0) {
        message.error(data.msg);
        return Promise.reject(response)
      }
      return Promise.resolve(response)
    },
  ],
};
