import { createAlova } from 'alova'
import VueHook from 'alova/vue'
import adapterFetch from 'alova/fetch'
import { createDiscreteApi } from 'naive-ui'

const { message } = createDiscreteApi(['message'])

export * from './url'

export const Alova = createAlova({
  baseURL: '',
  statesHook: VueHook,
  requestAdapter: adapterFetch(),
  timeout: 3000,
  cacheFor: null,
  cacheLogger: process.env.NODE_ENV === 'development',
  responded: {
    onSuccess: async (response, method) => {
      const res = (response.json && (await response.json())) || response.body

      // 是否返回原生响应头 比如：需要获取响应头时使用该属性
      if (method.meta?.isReturnNativeResponse) {
        return res
      }
      // 请根据自身情况修改数据结构
      const { message: info, code, data } = res

      // 不进行任何处理，直接返回
      // 用于需要直接获取 code、result、 message 这些信息时开启
      if (method.meta?.isTransformResponse === false) {
        return res.data
      }
      // debugger
      // console.log(message, code, data)
      if (code === 0) {
        return data
      } else {

        // console.log('Message',Message)
        message.error('代号错误 ：' + code)
      }
    }
  }
})
