|
@@ -591,8 +591,9 @@ export const useWebSocketStore = defineStore("webSocketStore", {
|
|
|
let index = systemStore.ImsessionList.findIndex(val=> val.uuid == sessionId);
|
|
|
// 已读未读
|
|
|
let unReadNum = 0;
|
|
|
- const ts = message.timestamp || Math.floor(Date.now() / 1000);
|
|
|
- const time = new Date(ts).toISOString().replace("T", " ").split(".")[0];
|
|
|
+ const ts = message.timestamp || Math.floor(Date.now());
|
|
|
+
|
|
|
+ const time = new Date(ts).toLocaleString().replaceAll("/", "-");
|
|
|
// 消息类型映射
|
|
|
const mapSet = {
|
|
|
[MsgType.MSG_TYPE.FILE]: '[文件]',
|
|
@@ -607,7 +608,8 @@ export const useWebSocketStore = defineStore("webSocketStore", {
|
|
|
// [Constant.REJECT_VIDEO_ONLINE]: '[对方拒绝]',
|
|
|
};
|
|
|
// 检测最新消息
|
|
|
- let lastMsg = message.contentType === MsgType.MSG_TYPE.TEXT || message.contentType === MsgType.MSG_TYPE.NOTICE ? (msg?msg.content : message.content) : (mapSet[message.contentType] || '[语音视频]');
|
|
|
+ // let lastMsg = message.contentType === MsgType.MSG_TYPE.TEXT || message.contentType === MsgType.MSG_TYPE.NOTICE ? (msg?msg.content : message.content) : (mapSet[message.contentType] || '[语音视频]');
|
|
|
+ let lastMsg = msg ? msg.content : message.content;
|
|
|
// 阅后即焚消息
|
|
|
if(message.isTemp){
|
|
|
lastMsg = '[阅后即焚]';
|
|
@@ -617,7 +619,7 @@ export const useWebSocketStore = defineStore("webSocketStore", {
|
|
|
|
|
|
// 修改群公告信息
|
|
|
if (message.nickname) {
|
|
|
- ext.nickname = message.nickname
|
|
|
+ ext.sessionName = message.nickname
|
|
|
}
|
|
|
if (message.notice) {
|
|
|
ext.notice = message.notice
|
|
@@ -628,12 +630,12 @@ export const useWebSocketStore = defineStore("webSocketStore", {
|
|
|
if (message.stick || message.stick === 0) {
|
|
|
ext.stick = message.stick
|
|
|
}
|
|
|
-
|
|
|
// 更新
|
|
|
if(index >= 0){
|
|
|
systemStore.ImsessionList = systemStore.ImsessionList.map((item, i)=>{
|
|
|
- if(i == index){
|
|
|
- return { ...item, ...ext, unReadNum: item.unReadNum + 1, message: lastMsg, lastTime: time};
|
|
|
+ if (item.uuid == sessionId){
|
|
|
+ console.log('111', item, lastMsg, lastMsg,item.message)
|
|
|
+ return { ...item, ...ext, unReadNum: item.unReadNum + 1, message: lastMsg || item.message, updatedAt: time};
|
|
|
}
|
|
|
return item;
|
|
|
})
|
|
@@ -661,97 +663,96 @@ export const useWebSocketStore = defineStore("webSocketStore", {
|
|
|
},
|
|
|
|
|
|
// 更新缓存里面的会话列表 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)){
|
|
|
- console.log(211111)
|
|
|
- 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;
|
|
|
- },
|
|
|
+ // 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;
|
|
|
+ // },
|
|
|
|
|
|
|
|
|
// ************ 接收方 方法 ************//
|
|
@@ -808,7 +809,17 @@ export const useWebSocketStore = defineStore("webSocketStore", {
|
|
|
// 处理群置顶
|
|
|
if (message.messageType === MsgType.MESSAGE_STICKY_GROUP) {
|
|
|
}
|
|
|
-
|
|
|
+ if (message.messageType != MsgType.DELETE_GROUP){
|
|
|
+ // 更新群成员列表
|
|
|
+ this.fetchGroupMembers(true);
|
|
|
+ }
|
|
|
+ // 处理@群成员
|
|
|
+ if (message.messageType == MsgType.MESSAGE_CC_GROUP){
|
|
|
+ let ccArr = msg?.cc.split(',');
|
|
|
+ if (this.groupMembersList && this.groupMembersList[message.from]) {
|
|
|
+ this.isassign = this.groupMembersList[message.from].filter(val => ccArr.includes(val.userId + '')).find(val => val.uuid == message.to)
|
|
|
+ }
|
|
|
+ }
|
|
|
},
|
|
|
|
|
|
// 语音视频通知
|