import storage from '@/utils/storage'; const { setStorageSync, getStorageSync, removeStorageSync } = storage; const mutations = { /** * 初始化消息栈 * @param {object} state * @param {string} type * type: * syncMessages 同步消息栈 * faultMessages 故障消息 未处理消息栈 * faults 所有的故障消息栈 */ messagesInit(state, type) { const messages = getStorageSync(type) ? JSON.parse(getStorageSync(type)) : []; state[type] = messages; }, /** * 将新 消息添加到 消息栈 最前边 * @param { object } state * @param { object } data * data: message, type * message 消息对象 * type: * syncMessages 同步消息栈 * faultMessages 故障消息 未处理消息栈 * faults 所有的故障消息栈 * game 游戏的消息 * * cache: boolean true 本地存储 false 不存储 */ messagesAdd(state, data) { const messages = state[data.type]; if (messages.length > 0) { const result = messages.find(msg => msg.id === data.message.id); if (result) return; } messages.unshift(data.message); // eslint-disable-next-line no-param-reassign state[data.type] = messages; if (data.cache) { setStorageSync(data.type, JSON.stringify(messages)); } }, /** * 通过消息id移除指定 同步 消息 * @param { object } state * @param { object } data * data: messageId, type * messageId: 要移除的消息的messageId * type: * syncMessages 同步消息栈 * faultMessages 故障消息 未处理消息栈 * faults 所有的故障消息栈 * cache: boolean true 本地存储 false 不存储 */ messagesRemoveById(state, data) { const messages = state[data.type]; const index = messages.findIndex(msg => msg.id === data.messageId); if (index < 0) return; messages.splice(index, 1); // eslint-disable-next-line no-param-reassign state[data.type] = messages; if (data.cache) { setStorageSync(data.type, JSON.stringify(messages)); } }, /** * 清除指定type的消息 * @param {any} state * @param {object} data * data: type, cache */ messagesClear(state, data) { state[data.type] = []; if (data.cache) { removeStorageSync(data.type); } }, }; export default mutations;