// import LoginAction from './LoginAction'
import ArticleAction from './ArticleAction'

// let loginAction = new LoginAction()

let articleAction = new ArticleAction()

const cAction = {
  // loginAction,
  articleAction
}

/**
 * 统一处理接口返回请求
 * 由于使用 axios ，返回 then + finally 可能存在 部分浏览器不支持情况
 * 需要 添加兼容
 * @param {[object]} obj 整个对象
 * @param {[object]} obj.component 当前调用组件对象 传过来，必传
 * @param {[string]} obj.actionName action名字，必传
 * @param {[string]} obj.functionName action类中的方法名，必传
 * @param {[object]} obj.data 传输数据，必传
 * @param {[function]} obj.thenCallback 异步成功返回回调值，必传
 * @param {[function]} obj.catchCallback 异常抛出时，返回错误抓取回调值，必传
 * @param {[function]} obj.finallyCallback 最终finally回调，必传
 */
export const request = obj => {
  cAction[obj.actionName]
    [obj.functionName](obj.data)
    .then(res => {
      obj.thenCallback(res)
    })
    .catch(e => {
      obj.component.$message.error(e.message)
      obj.catchCallback(e)
    })
    .finally(e => {
      obj.finallyCallback(e)
    })
}

export default cAction
