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) { 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) { //#ifndef APP return []; //#endif try { const {data} = await IMSDK.asyncApi( IMSDK.IMMethods.GetConversationListSplit, uuidv4(), { offset: isFirstPage ? 0 : state.conversationList.length, count: 500, }, ); //console.log(data); commit("SET_CONVERSATION_LIST", [ ...(isFirstPage ? [] : state.conversationList), ...data, ]); return [...data]; } catch (e) { console.log(e); commit("SET_CONVERSATION_LIST", []); return []; } }, getCurrentGroup({commit}, groupID) { //#ifndef APP return []; //#endif IMSDK.asyncApi(IMSDK.IMMethods.GetSpecifiedGroupsInfo, uuidv4(), [ groupID, ]).then(({ data }) => { commit("SET_CURRENT_GROUP", data[0] ?? {}); }); }, getCurrentMemberInGroup({commit,rootState}, groupID) { //#ifndef APP return []; //#endif IMSDK.asyncApi(IMSDK.IMMethods.GetSpecifiedGroupMembersInfo, uuidv4(), { groupID, userIDList: [rootState.user.selfInfo.userID], }).then(({ data }) => { commit("SET_CURRENT_MEMBER_IN_GROUP", data[0] ?? {}); }); }, getUnReadCount({commit}) { //#ifndef APP return []; //#endif 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", {}); }, deleteConversation({state,commit},conversationID) { return new Promise((reject,resolve)=>{ IMSDK.asyncApi('deleteConversationAndDeleteAllMsg',uuidv4(), conversationID).then(res=>{ const list = state.conversationList.filter((item)=>{ return item.conversationID != conversationID; }); commit("SET_CONVERSATION_LIST", [...list]); resolve(); }).catch((e)=>{ console.error(e); reject(e); }) }) }, }; export default { namespaced: true, state, mutations, actions, };