Parcourir la source

优化如果消息的id相同appenMessage无效;接收到自己的消息不增加unread,用于多端同步

xiekunyu il y a 2 ans
Parent
commit
e4907bef2c
1 fichiers modifiés avec 16 ajouts et 3 suppressions
  1. 16 3
      packages/components/index.vue

+ 16 - 3
packages/components/index.vue

@@ -176,14 +176,27 @@ export default {
      * 新增一条消息
      */
     appendMessage(message, scrollToBottom = false) {
-      if (allMessages[message.toContactId] === undefined) {
+      let unread = "+1";
+      let messageList = allMessages[message.toContactId];
+      let hasMsg = false;
+      // 如果是自己的消息需要push,发送的消息不再增加未读条数
+      if (this.user.id == message.fromUser.id) unread = "+0";
+      if (messageList === undefined) {
         this.updateContact({
           id: message.toContactId,
-          unread: "+1",
+          unread: unread,
           lastSendTime: message.sendTime,
           lastContent: this.lastContentRender(message),
         });
       } else {
+        // 如果消息存在则不再添加
+        messageList.forEach(item => {
+          if (item.id == message.id) {
+            hasMsg = true;
+            throw new Error("EndIterative");
+          }
+        });
+        if (hasMsg) return;
         this._addMessage(message, message.toContactId, 1);
         const updateContact = {
           id: message.toContactId,
@@ -196,7 +209,7 @@ export default {
           }
           this.CacheDraft.remove(message.toContactId);
         } else {
-          updateContact.unread = "+1";
+          updateContact.unread = unread;
         }
         this.updateContact(updateContact);
       }