import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

export default new Vuex.Store({
    state: {
        // 初始化 tokens，存储为以 userId 为键的对象
        tokens: JSON.parse(localStorage.getItem('tokens')) || {}, // 从 localStorage 获取 tokens
    },
    mutations: {
        // 设置指定 userId 的 token
        setToken(state, { userId, token }) {
            Vue.set(state.tokens, userId, token);  // 使用 Vue.set 保证响应式更新
            localStorage.setItem('tokens', JSON.stringify(state.tokens)); // 更新 localStorage
        },
        // 清除指定 userId 的 token
        clearToken(state, userId) {
            Vue.delete(state.tokens, userId); // 删除指定 userId 的 token
            localStorage.setItem('tokens', JSON.stringify(state.tokens)); // 更新 localStorage
        },
        // 清除所有用户的 token
        logout(state) {
            state.tokens = {}; // 清空所有 tokens
            localStorage.removeItem('tokens'); // 清除 localStorage 中的 tokens
        },
    },
    actions: {
        // 设置指定 userId 的 token
        setToken({ commit }, { userId, token }) {
            commit('setToken', { userId, token });
        },
        // 清除指定 userId 的 token
        clearToken({ commit }, userId) {
            commit('clearToken', userId);
        },
        // 退出登录，清除所有 token
        logout({ commit }) {
            commit('logout'); // 清空所有 tokens
        },
    },
});
