import { v4 as uuidv4 } from "uuid"; import IMSDK from "openim-uniapp-polyfill"; const state = { conversationList: [], currentConversation: {}, unReadCount: 0, currentGroup: {}, currentMemberInGroup: {}, }; const mutations = { SET_CONVERSATION_LIST(state, list) { state.conversationList = [...list]; }, SET_CURRENT_CONVERSATION(state, conversation) { state.currentConversation = { ...conversation, }; }, SET_UNREAD_COUNT(state, count) { if (count) { uni.setTabBarBadge({ index: 0, text: count < 99 ? count + "" : "99+", }); } else { uni.removeTabBarBadge({ index: 0, }); } state.unReadCount = count; }, SET_CURRENT_GROUP(state, group) { state.currentGroup = { ...group, }; }, SET_CURRENT_MEMBER_IN_GROUP(state, member) { state.currentMemberInGroup = { ...member, }; }, }; const actions = { async getConversationList({ state, commit }, isFirstPage = true) { try { const { data } = await IMSDK.asyncApi( IMSDK.IMMethods.GetConversationListSplit, uuidv4(), { offset: isFirstPage ? 0 : state.conversationList.length, count: 500, }, ); commit("SET_CONVERSATION_LIST", [ ...(isFirstPage ? [] : state.conversationList), ...data, ]); return [...data]; } catch (e) { console.log(e); commit("SET_CONVERSATION_LIST", []); return []; } }, getCurrentGroup({ commit }, groupID) { IMSDK.asyncApi(IMSDK.IMMethods.GetSpecifiedGroupsInfo, uuidv4(), [ groupID, ]).then(({ data }) => { commit("SET_CURRENT_GROUP", data[0] ?? {}); }); }, getCurrentMemberInGroup({ commit, rootState }, groupID) { IMSDK.asyncApi(IMSDK.IMMethods.GetSpecifiedGroupMembersInfo, uuidv4(), { groupID, userIDList: [rootState.user.selfInfo.userID], }).then(({ data }) => { commit("SET_CURRENT_MEMBER_IN_GROUP", data[0] ?? {}); }); }, getUnReadCount({ commit }) { IMSDK.asyncApi(IMSDK.IMMethods.GetTotalUnreadMsgCount, uuidv4()).then( (res) => { console.log(res); commit("SET_UNREAD_COUNT", res.data); }, ); }, updateCurrentMemberInGroup({ commit, state }, memberInfo) { console.log(memberInfo); if ( memberInfo.groupID === state.currentMemberInGroup.groupID && memberInfo.userID === state.currentMemberInGroup.userID ) { commit("SET_CURRENT_MEMBER_IN_GROUP", memberInfo); } }, resetConversationState({ commit }) { commit("SET_CURRENT_MEMBER_IN_GROUP", {}); commit("SET_CURRENT_GROUP", {}); commit("SET_CURRENT_CONVERSATION", {}); }, }; export default { namespaced: true, state, mutations, actions, };