import { fetchMenuTree } from '@/api/base/index';

const GET_MENUS_TREE = 'GET_MENUS_TREE';
const FETCH_STATE = 'FETCH_STATE';

const state = () => ({
  list: [],
  fetching: false,
});

const getters = {
  MenuTree: state => state.list,
};

const actions = {
  fetchMenuTree({ state, commit }) {
    if (state.fetching) return;
    commit(FETCH_STATE, true);
    return fetchMenuTree().then(res => {
      const list = res.data;
      commit(GET_MENUS_TREE, list);
      commit(FETCH_STATE, false);
    });
  },
};

const mutations = {
  [GET_MENUS_TREE](state, list) {
    state.list = list;
  },
  [FETCH_STATE](state, fetching) {
    state.fetching = fetching;
  },
};

export default {
  namespaced: true,
  state,
  getters,
  actions,
  mutations,
};