import { message } from 'ant-design-vue'

const errorHandlerMap = {
  '-1': function(data) {
    errorUtil.handleErrorDefault(data)
  },
  '401': function(data) {
    message.error('您没有访问权限')
  },
  '403': function(data) {
    message.error('您没有访问权限')
  },
}
class ErrorUtil {
  getMessage(obj) {
    // eslint-disable-next-line no-console
    console.warn('该方法已废弃，错误提示请使用ErrorUtil.addHandler')
    return obj.response?.data?.message?.split(':').pop()
  }

  addHandler(codes, callback) {
    if (!Array.isArray(codes)) {
      codes = [codes]
    }
    codes.forEach((code) => {
      if (!errorHandlerMap[code]) {
        errorHandlerMap[code] = callback
      } else {
        throw new Error(
          `错误码${code}已有对应的处理事件,如果想覆盖该错误码请用API:ErrorUtil.replaceHandler`
        )
      }
    })
  }

  replaceHandler(codes, callback) {
    if (!Array.isArray(codes)) {
      codes = [codes]
    }
    codes.forEach((code) => {
      errorHandlerMap[code] = callback
    })
  }

  handleError(data) {
    if (errorHandlerMap[data.code]) {
      errorHandlerMap[data.code](data)
    } else {
      // message.error('加载数据失败')
      console.log('ErrorUtil.handleError loading error:')
      console.log(data)
    }
  }

  handleErrorDefault(data) {
    message.error(data.message)
  }
}
const errorUtil = new ErrorUtil()
export default errorUtil
