text: import { getToken, setToken, removeToken } from '@/utils/token'
  import { login, getInfo } from '@api/user.js'
  
  const getDefaultState = () => {
      return {
          token: getToken(),
          name: '',
          avatar: ''
      }
  }
  
  const state = getDefaultState()
  
  const getters = {
      token: (state) => state.token,
      name: (state) => state.name,
      avatar: (state) => state.avatar
  }
  
  const mutations = {
      RESET_STATE: (state) => {
          Object.assign(state, getDefaultState())
      },
      SET_TOKEN: (state, token) => {
          state.token = token
      },
      SET_NAME: (state, name) => {
          state.name = name
      },
      SET_AVATAR: (state, avatar) => {
          state.avatar = avatar
      }
  }
  
  const actions = {
      login: ({ commit }, userInfo) => {
          const { username, password } = userInfo
          return new Promise((resolve, reject) => {
              login({ username: username.trim(), password }).then(response => {
                  const { data } = response
                  commit('SET_TOKEN', data.token)
                  setToken(data.token)
                  resolve()
              }).catch(error => {
                  reject(error)
              })
          })
      },
      getInfo: ({ commit, state }) => {
          return new Promise((resolve, reject) => {
              getInfo(state.token).then(response => {
                  const { data } = response
                  if (!data) {
                      return reject('校验失败，请重新登录')
                  }
  
                  const { name, avatar } = data
  
                  commit('SET_NAME', name)
                  commit('SET_AVATAR', avatar)
                  resolve(data)
              })
          })
      },
      resetToken: ({ commit }) => {
          return new Promise(resolve => {
              removeToken()
              commit('RESET_STATE')
              resolve()
          })
      }
  }
  
  export default { state, getters, mutations, actions }