|
@@ -692,98 +692,6 @@ export const useWebSocketStore = defineStore("webSocketStore", {
|
|
|
this.chatRefresh += 1;
|
|
|
},
|
|
|
|
|
|
- // 更新缓存里面的会话列表 type:0 发送者 1:接收者
|
|
|
- // updateSessionList(payload,type = 0,msg) {
|
|
|
- // const walletStore = useWalletStore();
|
|
|
- // const message = {...payload};
|
|
|
- // console.log('缓存中的列表数据', message, msg)
|
|
|
- // const systemStore = useSystemStore();
|
|
|
- // const selfUuid = useWalletStore().account; // 当前用户ID
|
|
|
- // let sessions = systemStore.ImsessionList ? [...systemStore.ImsessionList] : [];
|
|
|
- // const mapSet = {
|
|
|
- // [MsgType.MSG_TYPE.FILE]: '[文件]',
|
|
|
- // [MsgType.MSG_TYPE.IMAGE]: '[图片]',
|
|
|
- // [MsgType.MSG_TYPE.AUDIO]: '[音频]',
|
|
|
- // [MsgType.MSG_TYPE.VIDEO]: '[视频]',
|
|
|
- // [MsgType.MSG_TYPE.AUDIO_ONLINE]: '[语音通话]',
|
|
|
- // [MsgType.MSG_TYPE.VIDEO_ONLINE]: '[视频通话]',
|
|
|
- // // [Constant.CANCELL_AUDIO_ONLINE]:'[通话结束]',
|
|
|
- // // [Constant.REJECT_AUDIO_ONLINE]: '[对方拒绝]',
|
|
|
- // // [Constant.CANCELL_VIDEO_ONLINE]: '[通话结束]',
|
|
|
- // // [Constant.REJECT_VIDEO_ONLINE]: '[对方拒绝]',
|
|
|
-
|
|
|
- // };
|
|
|
- // // console.log(sessions, sessions.length)
|
|
|
- // let lastMsg = message.contentType === MsgType.MSG_TYPE.TEXT || message.contentType === MsgType.MSG_TYPE.NOTICE ? (msg?msg.content : message.content) : (mapSet[message.contentType] || '[语音视频]');
|
|
|
- // if ([MsgType.MESSAGE_REVOKE, MsgType.MESSAGE_REVOKE_GROUP].includes(message.messageType)){
|
|
|
- // lastMsg = `${message.from == walletStore.account ? '你' : (message.fromUsername || '对方')}撤回了一条消息`
|
|
|
- // }
|
|
|
-
|
|
|
- // let index = -1;
|
|
|
- // let uuid = type == 0 ? message.to : message.from;
|
|
|
- // index = sessions.findIndex(s => (s.uuid || s.id) === uuid);
|
|
|
- // if (message.messageType === 2 && type == 0 && index < 0){
|
|
|
- // systemStore.needRefreshIm = true;
|
|
|
- // return;
|
|
|
- // }
|
|
|
- // // 过滤无效的消息体
|
|
|
- // if (!uuid) {
|
|
|
- // return;
|
|
|
- // }
|
|
|
- // // if (message.messageType === 2) {
|
|
|
- // // // 群聊
|
|
|
- // // index = sessions.findIndex(s => (s.uuid || s.id) === message.to);
|
|
|
- // // } else {
|
|
|
- // // 单聊
|
|
|
- // // if (message.from === selfUuid) {
|
|
|
- // // index = sessions.findIndex(s => (s.uuid || s.id) === message.to);
|
|
|
- // // } else {
|
|
|
- // // index = sessions.findIndex(s => (s.uuid || s.id) === message.from);
|
|
|
- // // }
|
|
|
- // // }
|
|
|
- // let unReadNum = 0;
|
|
|
- // const ts = message.timestamp || Math.floor(Date.now() / 1000);
|
|
|
- // const time = new Date(ts).toISOString().replace("T", " ").split(".")[0];
|
|
|
- // if (index > -1) {
|
|
|
- // // 如果退群和踢人需要将用户头像移除
|
|
|
- // // let avatar = sessions[index].avatar;
|
|
|
- // // if (message.messageType == MsgType.EXIT_GROUP || message.messageType == MsgType.REMOVE_GROUP){
|
|
|
- // // avatar = avatar.filter(val=>{
|
|
|
- // // return !message.avatar.includes(val);
|
|
|
- // // })
|
|
|
- // // }
|
|
|
- // unReadNum = sessions[index].unReadNum + 1;
|
|
|
- // // 更新已有会话
|
|
|
- // const updated = {
|
|
|
- // ...sessions[index],
|
|
|
- // message: lastMsg,
|
|
|
- // updatedAt: time,
|
|
|
- // unReadNum: type == 0 ? 0 : unReadNum
|
|
|
- // // avatar
|
|
|
- // };
|
|
|
- // sessions.splice(index, 1);
|
|
|
- // sessions.unshift(updated);
|
|
|
- // } else {
|
|
|
- // const isSelfSend = message.from === selfUuid;
|
|
|
- // const newSession = {
|
|
|
- // // uuid: message.messageType === 2 ? message.to : (isSelfSend ? message.to : message.from),
|
|
|
- // uuid,
|
|
|
- // name: message.toUsername || message.fromUsername || message.to || message.from,
|
|
|
- // type: message.messageType == 2?'group':'user',
|
|
|
- // message: lastMsg,
|
|
|
- // updatedAt: time,
|
|
|
- // avatar: message.avatar || '',
|
|
|
- // unReadNum: type == 0 ? 0 : unReadNum
|
|
|
- // };
|
|
|
- // sessions.unshift(newSession);
|
|
|
- // }
|
|
|
- // systemStore.ImsessionList = [...sessions];
|
|
|
- // // if(type != 0){
|
|
|
- // // this.needRefreshIm +=1;
|
|
|
- // // }
|
|
|
- // this.needRefreshIm += 1;
|
|
|
- // },
|
|
|
-
|
|
|
|
|
|
// ************ 接收方 方法 ************//
|
|
|
// 监听好友系统消息
|
|
@@ -843,10 +751,7 @@ export const useWebSocketStore = defineStore("webSocketStore", {
|
|
|
if (message.messageType === MsgType.MESSAGE_STICKY_GROUP) {
|
|
|
}
|
|
|
// 更新群成员列表
|
|
|
- this.fetchGroupMembers(true);
|
|
|
- // if (message.messageType != MsgType.DELETE_GROUP){
|
|
|
- // this.fetchGroupMembers(true);
|
|
|
- // }
|
|
|
+ this.fetchGroupMembers(message.from,true);
|
|
|
// 处理@群成员
|
|
|
if (message.messageType == MsgType.MESSAGE_CC_GROUP){
|
|
|
let ccArr = msg?.cc.split(',');
|
|
@@ -856,7 +761,13 @@ export const useWebSocketStore = defineStore("webSocketStore", {
|
|
|
}
|
|
|
// 处理群个人昵称
|
|
|
if (message.messageType == MsgType.MESSAGE_NICKNAME_GROUP){
|
|
|
-
|
|
|
+ this.modifyMessage(message,(val)=>{
|
|
|
+ return msg.uuid == val.fromUuid?{
|
|
|
+ fromUsername: msg.name
|
|
|
+ } : (msg.uuid == val.toUuid ? {
|
|
|
+ toUsername: msg.name
|
|
|
+ }:{})
|
|
|
+ })
|
|
|
}
|
|
|
},
|
|
|
|
|
@@ -887,12 +798,15 @@ export const useWebSocketStore = defineStore("webSocketStore", {
|
|
|
// 刷新/更新会话列表
|
|
|
this.chatRefresh += 1;
|
|
|
}
|
|
|
+ this.funDeleteFriend(message)
|
|
|
},
|
|
|
// 删除好友操作
|
|
|
funDeleteFriend(message) {
|
|
|
if (message.messageType == MsgType.MESSAGE_DELETE_FRIEND) {
|
|
|
// 禁用会话功能
|
|
|
this.funDeleteDelAuth(message.to);
|
|
|
+ // 删除本地消息记录
|
|
|
+ this.deleteMessage(message, true,message.to);
|
|
|
// 更新会话列表
|
|
|
}
|
|
|
},
|
|
@@ -993,21 +907,21 @@ export const useWebSocketStore = defineStore("webSocketStore", {
|
|
|
}
|
|
|
},
|
|
|
// 群成员列表
|
|
|
- async fetchGroupMembers(force = false) {
|
|
|
- if (this.toUserInfo.type !== 'group') {
|
|
|
- return []
|
|
|
- }
|
|
|
+ async fetchGroupMembers(uuid,force = false) {
|
|
|
+ // if (this.toUserInfo.type !== 'group') {
|
|
|
+ // return []
|
|
|
+ // }
|
|
|
|
|
|
// 如果已有缓存且不强制刷新,直接返回
|
|
|
- if (!force && this.groupMembersList[this.toUserInfo.uuid]) {
|
|
|
- return this.groupMembersList[this.toUserInfo.uuid]
|
|
|
+ if (!force && this.groupMembersList[uuid]) {
|
|
|
+ return this.groupMembersList[uuid]
|
|
|
}
|
|
|
|
|
|
try {
|
|
|
- const res = await groupList(this.toUserInfo.uuid)
|
|
|
+ const res = await groupList(uuid)
|
|
|
const members = res.data || []
|
|
|
// 更新缓存
|
|
|
- this.groupMembersList[this.toUserInfo.uuid] = members
|
|
|
+ this.groupMembersList[uuid] = members
|
|
|
return members
|
|
|
} catch (e) {
|
|
|
console.error('获取群成员失败', e)
|