1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- import Vue from 'vue'
- import Vuex from 'vuex'
- Vue.use(Vuex)
- const store = new Vuex.Store({
- state: {
- isLogin: false,
- isSDKReady: false, // TIM SDK 是否 ready
- conversationActive: {}, //聊天进行中的会话
- toUserId: '', // 聊天对象id
- conversationList: [], // 会话列表
- currentMessageList: [], // 消息列表
- isBusy: false
- },
- mutations: {
- //更新登录状态
- toggleIsLogin(state, isLogin) {
- state.isLogin = typeof isLogin === 'undefined' ? !state.isLogin : isLogin
- },
- //更新TIMSDK状态
- toggleIsSDKReady(state, isSDKReady) {
- state.isSDKReady = typeof isSDKReady === 'undefined' ? !state.isSDKReady : isSDKReady
- },
- //退出登录重置状态
- reset(state) {
- state.isLogin = false
- state.isSDKReady = false
- },
- //选择好友聊天--创建会话/拼接会话id
- createConversationActive(state, toUserId) {
- state.conversationActive.conversationID = 'C2C' + toUserId
- state.toUserId = toUserId
- state.currentMessageList = []
- },
- //选择已有会话聊天--更新选中会话详情
- updateConversationActive(state, conversationItem) {
- state.conversationActive = Object.assign({}, conversationItem);
- state.toUserId = conversationItem.userProfile.userID
- state.currentMessageList = []
- },
- //更新会话列表
- updateConversationList(state, newConversationList) {
- state.conversationList = newConversationList
- },
- UPDATE_ISBUSY(state, isBusy) {
- state.isBusy = isBusy
- },
- /**
- * 将消息插入当前会话列表
- * 调用时机:收/发消息事件触发时
- * @param {Object} state
- * @param {Message[]|Message} data
- * @returns
- */
- pushCurrentMessageList(state, data) {
- // 还没当前会话,则跳过
- if (Array.isArray(data)) {
- // 筛选出当前会话的消息
- const result = data.filter(item => item.conversationID === state.conversationActive
- .conversationID)
- state.currentMessageList = [...state.currentMessageList, ...result]
- } else if (data.conversationID === state.conversationActive.conversationID) {
- state.currentMessageList = [...state.currentMessageList, data]
- }
- },
- /**
- * 滑到顶部请求更多的历史消息
- * */
- unshiftCurrentMessageList(state, data) {
- if (data) {
- state.currentMessageList = [...data, ...state.currentMessageList]
- }
- }
- },
- actions: {
- }
- })
- export default store
|