From e749ae18f1f4a327249206a3d0d08bd0ad40b1bb Mon Sep 17 00:00:00 2001 From: xsx <825657193@qq.com> Date: Wed, 14 Aug 2024 23:26:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B8=85=E7=90=86=E6=97=A0=E6=95=88=E7=9A=84?= =?UTF-8?q?=E8=87=83=E8=82=BF=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- im-uniapp/pages/chat/chat-box.vue | 5 +---- im-uniapp/pages/chat/chat.vue | 26 +++++------------------- im-uniapp/pages/common/user-info.vue | 2 +- im-uniapp/pages/friend/friend-add.vue | 2 +- im-uniapp/pages/friend/friend.vue | 3 --- im-uniapp/pages/group/group-invite.vue | 3 --- im-uniapp/store/chatStore.js | 28 ++++++++++++++------------ im-uniapp/store/friendStore.js | 19 +++++++---------- 8 files changed, 30 insertions(+), 58 deletions(-) diff --git a/im-uniapp/pages/chat/chat-box.vue b/im-uniapp/pages/chat/chat-box.vue index c76e602..b3f010d 100644 --- a/im-uniapp/pages/chat/chat-box.vue +++ b/im-uniapp/pages/chat/chat-box.vue @@ -9,7 +9,7 @@ - @@ -749,9 +749,6 @@ // 复位回执消息 this.isReceipt = false; }, - onUnload() { - this.chatStore.activeChat(-1); - }, onShow(){ if(this.needScrollToBottom){ // 页面滚到底部 diff --git a/im-uniapp/pages/chat/chat.vue b/im-uniapp/pages/chat/chat.vue index 1437b28..3a2bef5 100644 --- a/im-uniapp/pages/chat/chat.vue +++ b/im-uniapp/pages/chat/chat.vue @@ -14,11 +14,11 @@ 温馨提示:您现在还没有任何聊天消息,快跟您的好友发起聊天吧~ - - - + + + @@ -90,26 +90,10 @@ index: 0, complete: () => {} }) - } } }, computed: { - chatsPos() { - // 计算会话的顺序 - let chatsPos = []; - let chats = this.chatStore.chats; - chats.forEach((chat, idx) => { - chatsPos.push({ - idx: idx, - sendTime: chat.lastSendTime - }) - }) - chatsPos.sort((chatPos1, chatPos2) => { - return chatPos2.sendTime - chatPos1.sendTime; - }); - return chatsPos; - }, unreadCount() { let count = 0; this.chatStore.chats.forEach(chat => { diff --git a/im-uniapp/pages/common/user-info.vue b/im-uniapp/pages/common/user-info.vue index 0689050..4f8d6d5 100644 --- a/im-uniapp/pages/common/user-info.vue +++ b/im-uniapp/pages/common/user-info.vue @@ -134,7 +134,7 @@ }, computed: { isFriend() { - return this.friendInfo&&!this.friendInfo.delete; + return !!this.friendInfo; }, friendInfo(){ let friends = this.friendStore.friends; diff --git a/im-uniapp/pages/friend/friend-add.vue b/im-uniapp/pages/friend/friend-add.vue index ce6dd15..43ab781 100644 --- a/im-uniapp/pages/friend/friend-add.vue +++ b/im-uniapp/pages/friend/friend-add.vue @@ -72,7 +72,7 @@ isFriend(userId) { let friends = this.friendStore.friends; let friend = friends.find((f) => f.id == userId); - return friend&&!friend.delete; + return !!friend; } } } diff --git a/im-uniapp/pages/friend/friend.vue b/im-uniapp/pages/friend/friend.vue index 6c929e5..8d21ab7 100644 --- a/im-uniapp/pages/friend/friend.vue +++ b/im-uniapp/pages/friend/friend.vue @@ -65,9 +65,6 @@ // 按首字母分组 let groupMap = new Map(); this.friends.forEach((f) => { - if (f.delete) { - return; - } if(this.searchText && !f.nickName.includes(this.searchText)){ return; } diff --git a/im-uniapp/pages/group/group-invite.vue b/im-uniapp/pages/group/group-invite.vue index e14ee64..e13fd96 100644 --- a/im-uniapp/pages/group/group-invite.vue +++ b/im-uniapp/pages/group/group-invite.vue @@ -83,9 +83,6 @@ this.friendItems = []; let friends = this.friendStore.friends; friends.forEach((f => { - if(f.delete){ - return - } let item = { id: f.id, headImage: f.headImage, diff --git a/im-uniapp/store/chatStore.js b/im-uniapp/store/chatStore.js index ed52b01..74040e6 100644 --- a/im-uniapp/store/chatStore.js +++ b/im-uniapp/store/chatStore.js @@ -18,10 +18,6 @@ export default defineStore('chatStore', { cacheChats = []; this.chats = []; for (let chat of chatsData.chats) { - // 已删除的会话直接丢弃 - if (chat.delete) { - continue; - } // 暂存至缓冲区 cacheChats.push(JSON.parse(JSON.stringify(chat))); // 加载期间显示只前15个会话做做样子,一切都为了加快初始化时间 @@ -69,8 +65,8 @@ export default defineStore('chatStore', { atAll: false, delete: false }; - chats.push(chat); - this.moveTop(chats.length - 1) + chats.unshift(chat); + this.saveToStorage(); } }, activeChat(idx) { @@ -111,7 +107,7 @@ export default defineStore('chatStore', { }, removeChat(idx) { let chats = this.curChats; - chats[idx].delete = true; + chats.splice(idx, 1); this.saveToStorage(); }, removePrivateChat(userId) { @@ -134,11 +130,17 @@ export default defineStore('chatStore', { }, moveTop(idx) { console.log("moveTop") + if (this.isLoading()) { + return; + } let chats = this.curChats; - let chat = chats[idx]; - // 最新的时间会显示在顶部 - chat.lastSendTime = new Date().getTime(); - this.saveToStorage(); + if (idx > 0) { + let chat = chats[idx]; + chats.splice(idx, 1); + chats.unshift(chat); + this.saveToStorage(); + } + }, insertMessage(msgInfo) { // 获取对方id或群id @@ -239,13 +241,13 @@ export default defineStore('chatStore', { for (let idx in chat.messages) { // 已经发送成功的,根据id删除 if (chat.messages[idx].id && chat.messages[idx].id == msgInfo.id) { - chat.messages[idx].delete = true; + chat.messages.splice(idx, 1); break; } // 正在发送中的消息可能没有id,根据发送时间删除 if (msgInfo.selfSend && chat.messages[idx].selfSend && chat.messages[idx].sendTime == msgInfo.sendTime) { - chat.messages[idx].delete = true; + chat.messages.splice(idx, 1); break; } } diff --git a/im-uniapp/store/friendStore.js b/im-uniapp/store/friendStore.js index 62e1f4e..83feb43 100644 --- a/im-uniapp/store/friendStore.js +++ b/im-uniapp/store/friendStore.js @@ -20,7 +20,7 @@ export default defineStore('friendStore', { }, updateFriend(friend) { this.friends.forEach((f, index) => { - if (!f.delete && f.id == friend.id) { + if (f.id == friend.id) { // 拷贝属性 let online = this.friends[index].online; Object.assign(this.friends[index], friend); @@ -29,19 +29,14 @@ export default defineStore('friendStore', { }) }, removeFriend(id) { - let friend = this.findFriend(id); - if (friend) { - friend.delete = true; - } + this.friends.forEach((f, idx) => { + if (f.id == id) { + this.friends.splice(idx, 1) + } + }) }, addFriend(friend) { - let f = this.findFriend(friend.id); - if (f) { - Object.assign(f, friend); - f.delete = false; - } else { - this.friends.push(friend); - } + this.friends.push(friend); }, setOnlineStatus(onlineTerminals) { this.friends.forEach((f) => {