Browse Source

个人备注优化

wkw 1 month ago
parent
commit
b67f5fec42

+ 31 - 14
src/stores/modules/webSocketStore.js

@@ -461,7 +461,7 @@ export const useWebSocketStore = defineStore("webSocketStore", {
       if (!systemStore.messageList[sessionId]) {
         systemStore.messageList[sessionId] = [];
         if (sessionId == message.from){
-          this.getMessages({ uuid: message.from, friendUsername: message.to, messageType: message.messageType },true);
+          // this.getMessages({ uuid: message.from, friendUsername: message.to, messageType: message.messageType },true);
         }
       }
       systemStore.messageList[sessionId].push(message);
@@ -483,20 +483,24 @@ export const useWebSocketStore = defineStore("webSocketStore", {
       if (!systemStore.messageList[sessionId]) {
         systemStore.messageList[sessionId] = [];
       }
-      systemStore.messageList[sessionId] = systemStore.messageList[sessionId].map(item => {
-        if (!item.id && item.msgId + '' === msg?.msgId + '') return {...item, id: msg.id, fromUuids:msg.fromUuid, msgId: undefined, err: !msg.id?true:undefined};
-        if (item.id + '' === msg?.msgId + '') return {...item, content: "", url: ""};
+      systemStore.messageList[sessionId] = [...systemStore.messageList[sessionId]].map(item => {
+        // 消息发送成功确认
+        if (!item.id && item.msgId + '' === msg?.msgId + '') return {...item, id: msg.id, msgId: undefined, err: !msg.id?true:undefined};
+        // 阅后即焚
+        if (item.id + '' === msg?.id + '') return {...item, isTemp: true, content: "", url: ""};
         return item;
       });
       // 检测当前消息
       if (this.toUserInfo.uuid === sessionId) { 
-        this.messages = this.messages.map(item => {
-          if (!item.id && item.msgId + '' === msg?.msgId + '') return { ...item, id: msg.id, fromUuids: msg.fromUuid, msgId: undefined, err: !msg.id?true:undefined};
-          if (item.id + '' === msg?.msgId + '') return {...item, content: "", url: ""};
+        this.messages = [...this.messages].map(item => {
+          // 消息发送成功确认
+          if (!item.id && item.msgId + '' === msg?.msgId + '') return { ...item, id: msg.id, msgId: undefined, err: !msg.id?true:undefined};
+          // 阅后即焚
+          if (item.id + '' === msg?.id + '') return { ...item, isTemp: true, content: "", url: ""};
           return item;
         });
       }
-      // console.log("修改消息", message, sessionId, systemStore.messageList, this.toUserInfo.uuid, this.messages);
+      console.log("修改消息", message, sessionId, systemStore.messageList, this.toUserInfo.uuid, this.messages);
     },
     // 更新本地消息
     modifyMessage(message, msgId, sessionId = null) { 
@@ -507,19 +511,19 @@ export const useWebSocketStore = defineStore("webSocketStore", {
       if (!systemStore.messageList[sessionId]) {
         systemStore.messageList[sessionId] = [];
       }
-      systemStore.messageList[sessionId] = systemStore.messageList[sessionId].map(item => {
+      systemStore.messageList[sessionId] = [...systemStore.messageList[sessionId]].map(item => {
         if(typeof msgId === 'function'){
           let msg = {};
           if(msg = msgId(item, sessionId)){
-            return {...item,...msg};
+            return { ...item, ...message,...msg};
           }
         }
-        else if (item.id + '' === msgId + '') return {...item, ...message, content: "", url: ""};
+        else if (item.id + '' === msgId + '') return {...item, ...message};
         return item;
       });
       // 检测当前消息
       if (this.toUserInfo.uuid === sessionId) { 
-        this.messages = this.messages.map(item => {
+        this.messages = [...this.messages].map(item => {
           if(typeof msgId === 'function'){
             let msg = {};
             if(msg = msgId(item, sessionId)){
@@ -576,7 +580,7 @@ export const useWebSocketStore = defineStore("webSocketStore", {
           timestamp: Date.now(),
         }),
       };
-      console.log("systemReceiptMessage", response);
+      // console.log("systemReceiptMessage", response);
       this.sendMessage(response)
     },
     // 获取会话消息
@@ -714,6 +718,19 @@ export const useWebSocketStore = defineStore("webSocketStore", {
       // 强制刷新会话列表
       this.chatRefresh += 1;
     },
+    // 修改好友备注后,将好友会话名称更改
+    updateNote(newName,uuid){
+      const systemStore = useSystemStore();
+      systemStore.ImsessionList = [...systemStore.ImsessionList].map((item) => {
+        if (item.uuid == uuid) {
+          return { ...item, sessionName: newName };
+        }
+        return item;
+      })
+      if (this.toUserInfo.uuid == uuid){
+        this.toUserInfo.sessionName = newName;
+      }
+    },
 
 
     // ************ 接收方 方法 ************//
@@ -785,7 +802,7 @@ export const useWebSocketStore = defineStore("webSocketStore", {
       // 处理群个人昵称
       if (message.messageType == MsgType.MESSAGE_NICKNAME_GROUP){
         this.modifyMessage(message,(val)=>{
-          return msg.uuid == val.fromUuids?{
+          return msg.uuid == val.fromUuid?{
             fromUsername: msg.name
           } : (msg.uuid == val.toUuid ? {
             toUsername: msg.name

+ 1 - 1
src/views/im/chat/index.vue

@@ -885,7 +885,7 @@ const startAudioOnline = async (contentType, streamType) => {
   rtcStore.imSate.videoCallModal = true;
   // 设置被呼叫对象
   rtcStore.imSate.callAvatar = wsStore.toUserInfo.avatar;
-  rtcStore.imSate.callName = wsStore.toUserInfo.nickname;
+  rtcStore.imSate.callName = wsStore.toUserInfo.sessionName;
   // 设置呼叫者/被呼叫者
   rtcStore.isCaller = true;
   // 通知被呼叫者

+ 1 - 1
src/views/im/detail/index.vue

@@ -18,7 +18,7 @@
                         round
                         :src="IM_PATH + wsStore.toUserInfo.avatar"
                     />
-                    <div>{{ wsStore.toUserInfo.nickname }}</div>
+                    <div>{{ wsStore.toUserInfo.sessionName }}</div>
                 </div>
                 <!-- 群聊 -->
                 <template v-if="status == 2">

+ 10 - 10
src/views/im/hook/messagesHook.js

@@ -15,7 +15,7 @@ const formatMessageExt = (message, ext) => {
       ...message,
       content:ext.content,
       msgId: ext.msgId,
-      fromUuids: ext.fromUuid,
+      // fromUuids: ext.fromUuid,
       cc : ext.cc, // @群成员  0:全部
       id : ext.id, // 真实消息id
       quote : ext.quote, //引用的消息id
@@ -69,7 +69,7 @@ export const setMessageHook = (message, wsStore) => {
     // console.log('消息撤回',message)
     // 更新消息
     if (msg && msg.isTemp) {
-      wsStore.modifyMessage({isTemp: true}, msg.id, message.to)
+      wsStore.modifyMessageId({isTemp: true}, msg, message.to)
     } else {
       wsStore.deleteMessage(message, msg.id, message.to);
     }
@@ -202,7 +202,7 @@ export const handleMessageHook = async (payload, wsStore) => {
     wsStore.systemReceiptMessage(message, msg)
     // 更新消息
     if (msg && msg.isTemp) {
-      wsStore.modifyMessage({isTemp: true}, msg.id)
+      wsStore.modifyMessageId({isTemp: true}, msg)
     } else {
       wsStore.deleteMessage(message, msg.id);
     }
@@ -215,7 +215,7 @@ export const handleMessageHook = async (payload, wsStore) => {
         ...message,
         toUuid: wsStore.toUserInfo.type == 'user' ? message.to : message.from,
         fromUuid: wsStore.toUserInfo.type == 'user' ? message.from : message.to,
-        fromUuids: msg?.fromUuid,
+        // fromUuids: msg?.fromUuid,
         align: 'left',
         content: `${(msg.fromUsername || '对方')}撤回了一条消息`,
         fromAvatar: message.avatar,
@@ -267,7 +267,7 @@ export const handleMessageHook = async (payload, wsStore) => {
       fromAvatar: message.avatar,
       toUuid: wsStore.toUserInfo.type == 'user' ? message.to : message.from,
       fromUuid: wsStore.toUserInfo.type == 'user' ? message.from : message.to,
-      fromUuids: msg?.fromUuid,
+      // fromUuids: msg?.fromUuid,
     });
     notifications(wsStore);
     return;
@@ -288,7 +288,7 @@ export const handleMessageHook = async (payload, wsStore) => {
       align: sender.uuid != wsStore.toUserInfo.uuid?'right':'left',
       toUuid: wsStore.toUserInfo.type == 'user' ? message.to : message.from,
       fromUuid: wsStore.toUserInfo.type == 'user' ? message.from : message.to,
-      fromUuids: msg?.fromUuid,
+      // fromUuids: msg?.fromUuid,
       content: message.contentType === Constant.REJECT_AUDIO_ONLINE || message.contentType === Constant.REJECT_VIDEO_ONLINE ? '[对方拒绝]' : '[通话结束]',
       sender,
       fromAvatar: message.avatar,
@@ -303,7 +303,7 @@ export const handleMessageHook = async (payload, wsStore) => {
       ...message,
       toUuid: wsStore.toUserInfo.type == 'user' ? message.to : message.from,
       fromUuid: wsStore.toUserInfo.type == 'user' ? message.from : message.to,
-      fromUuids: msg?.fromUuid,
+      // fromUuids: msg?.fromUuid,
       align: 'left',
       fromAvatar: message.avatar,
     }, msg));
@@ -324,7 +324,7 @@ export const handleMessageHook = async (payload, wsStore) => {
       file: audioUrl,
       toUuid: wsStore.toUserInfo.type == 'user' ? message.to : message.from,
       fromUuid: wsStore.toUserInfo.type == 'user' ? message.from : message.to,
-      fromUuids: msg?.fromUuid,
+      // fromUuids: msg?.fromUuid,
       align: 'left',
       fromAvatar: message.avatar,
     }, msg));
@@ -342,7 +342,7 @@ export const handleMessageHook = async (payload, wsStore) => {
       file: url,
       toUuid: wsStore.toUserInfo.type == 'user' ? message.to : message.from,
       fromUuid: wsStore.toUserInfo.type == 'user' ? message.from : message.to,
-      fromUuids: msg?.fromUuid,
+      // fromUuids: msg?.fromUuid,
       align: 'left',
       fromAvatar: message.avatar,
     }, msg));
@@ -360,7 +360,7 @@ export const handleMessageHook = async (payload, wsStore) => {
       file: url,
       toUuid: wsStore.toUserInfo.type == 'user' ? message.to : message.from,
       fromUuid: wsStore.toUserInfo.type == 'user' ? message.from : message.to,
-      fromUuids: msg?.fromUuid,
+      // fromUuids: msg?.fromUuid,
       align: 'left',
       fromAvatar: message.avatar,
     }, msg));

+ 1 - 0
src/views/im/personal/index.vue

@@ -110,6 +110,7 @@ const getfriendRemark = async () => {
         console.log(res);
         if(res.code == 200){
             noteValue.value = note.value;
+            wsStore.updateNote(note.value,route.query.uuid);
             showToast('更改成功');
         }else{
             showToast('更改失败');