You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

87 lines
2.1 KiB

3 years ago
export default {
state: {
activeIndex: -1,
chats: []
},
mutations: {
openChat(state,chatInfo){
let chat = null;
for(let i in state.chats){
if(state.chats[i].targetId === chatInfo.targetId){
chat = state.chats[i];
// 放置头部
state.chats.splice(i,1);
state.chats.unshift(chat);
break;
}
}
// 创建会话
if (chat == null) {
chat = {
targetId: chatInfo.targetId,
type: chatInfo.type,
showName: chatInfo.showName,
headImage: chatInfo.headImage,
lastContent: "",
lastSendTime: new Date().getTime(),
unreadCount: 0,
messages: [],
};
state.chats.unshift(chat);
}
},
activeChat(state,idx){
state.activeIndex = idx;
state.chats[idx].unreadCount=0;
},
removeChat(state,idx){
state.chats.splice(idx, 1);
if(state.activeIndex >= state.chats.length){
state.activeIndex = state.chats.length-1;
}
},
3 years ago
insertMessage(state, msgInfo) {
let targetId = msgInfo.selfSend?msgInfo.recvUserId:msgInfo.sendUserId;
let chat = state.chats.find((chat)=>chat.targetId==targetId);
chat.lastContent = msgInfo.content;
chat.lastSendTime = msgInfo.sendTime;
chat.messages.push(msgInfo);
// 如果不是当前会话,未读加1
if(state.activeIndex == -1 || state.chats[state.activeIndex].targetId != targetId){
chat.unreadCount++;
}
},
handleFileUpload(state,info){
// 文件上传后数据更新
let chat = state.chats.find((c)=>c.targetId === info.targetId);
if(chat){
let msg = chat.messages.find((m)=>info.fileId==m.fileId);
msg.loadStatus = info.loadStatus;
if(info.content){
msg.content = info.content;
}
}
},
3 years ago
setChatUserInfo(state, userInfo){
for(let i in state.chats){
if(state.chats[i].targetId == userInfo.id){
state.chats[i].headImage = userInfo.headImageThumb;
3 years ago
state.chats[i].showName = userInfo.nickName;
break;
}
}
},
resetChatStore(state){
console.log("清空store")
state.activeIndex = -1;
state.chats = [];
}
},
}