/**
 * 用户信息
 * */
export default {
    namespaced: true,
    state: {
        // 用户信息
        info: {},
        // 附加数据
        data: {}
    },
    actions: {
        /**
         * @description 设置用户数据
         * @param {Object} state vuex state
         * @param {Object} dispatch vuex dispatch
         * @param {*} info info
         */
        set({ state, dispatch }, info) {
            return new Promise(async resolve => {
                // store 赋值
                state.info = info;
                // 持久化
                await dispatch(
                    'admin/db/set',
                    {
                        dbName: 'sys',
                        path: 'user.info',
                        value: info,
                        user: true
                    },
                    { root: true }
                );
                // end
                resolve();
            });
        },
        /**
         * @description 设置用户附加数据
         * @param {Object} state vuex state
         * @param {Object} dispatch vuex dispatch
         * @param {*} data data
         */
        setData({ state, dispatch }, data) {
            return new Promise(async resolve => {
                // store 赋值
                state.data = data;
                // 持久化
                await dispatch(
                    'admin/db/set',
                    {
                        dbName: 'sys',
                        path: 'user.data',
                        value: data,
                        user: true
                    },
                    { root: true }
                );
                // end
                resolve();
            });
        },
        /**
         * @description 从数据库取用户数据
         * @param {Object} state vuex state
         * @param {Object} dispatch vuex dispatch
         */
        load({ state, dispatch }) {
            return new Promise(async resolve => {
                // store 赋值
                state.info = await dispatch(
                    'admin/db/get',
                    {
                        dbName: 'sys',
                        path: 'user.info',
                        defaultValue: {},
                        user: true
                    },
                    { root: true }
                );
                state.data = await dispatch(
                    'admin/db/get',
                    {
                        dbName: 'sys',
                        path: 'user.data',
                        defaultValue: {},
                        user: true
                    },
                    { root: true }
                );
                // end
                resolve();
            });
        }
    }
};
