发送消息时自动更新最近联系人消息列表

This commit is contained in:
2026-09-21 14:52:46 +08:00
parent 6cebdc7c71
commit 5445fbdd22
+37 -7
View File
@@ -69,7 +69,8 @@
class="contact-item" class="contact-item"
:class="{ :class="{
active: active:
currentContact && currentContact.contactName === contact.contactName, currentContact &&
currentContact.contactName === contact.contactName,
}" }"
@click="selectContact(contact)" @click="selectContact(contact)"
> >
@@ -216,7 +217,13 @@
</template> </template>
<script> <script>
import { getUserInfo, getContactInfo, getRecentMessages, getContactMessages, sendMessage } from "@/utils/api"; import {
getUserInfo,
getContactInfo,
getRecentMessages,
getContactMessages,
sendMessage,
} from "@/utils/api";
export default { export default {
name: "ChatPage", name: "ChatPage",
@@ -251,7 +258,7 @@ export default {
const keyword = this.searchText.trim().toLowerCase(); const keyword = this.searchText.trim().toLowerCase();
return this.recentChats.filter((contact) => return this.recentChats.filter((contact) =>
contact.contactName.toLowerCase().includes(keyword), contact.contactName.toLowerCase().includes(keyword)
); );
}, },
@@ -275,7 +282,7 @@ export default {
changeMenu(menu) { changeMenu(menu) {
this.activeMenu = menu; this.activeMenu = menu;
this.currentContact = null; this.currentContact = null;
if(menu === "contacts") { if (menu === "contacts") {
this.getContactList(); this.getContactList();
} }
}, },
@@ -352,7 +359,8 @@ export default {
} }
contactMessages[contactName].push({ contactMessages[contactName].push({
...item, ...item,
from: item.senderName === this.currentUser.username ? "me" : "other", from:
item.senderName === this.currentUser.username ? "me" : "other",
time: item.time || item.createdAt, time: item.time || item.createdAt,
}); });
}); });
@@ -399,8 +407,8 @@ export default {
return; return;
} }
if (!this.contactMessages[this.currentContact.id]) { if (!this.contactMessages[this.currentContact.contactName]) {
this.$set(this.contactMessages, this.currentContact.id, []); this.$set(this.contactMessages, this.currentContact.contactName, []);
} }
const newMessage = { const newMessage = {
@@ -416,6 +424,28 @@ export default {
...newMessage, ...newMessage,
from: "me", from: "me",
}); });
// 更新最近消息列表
const contactName = this.currentContact.contactName;
const index = this.recentChats.findIndex(
(item) => item.contactName === contactName
);
if (index !== -1) { //找到这条数据,修改内容并移除后添加到数组最前面
const chat = this.recentChats[index];
chat.content = content;
chat.createdAt = newMessage.createdAt;
this.recentChats.splice(index, 1);
this.recentChats.unshift(chat);
} else { // 没有找到这条数据,直接添加到数组最前面
this.recentChats.unshift({
contactName: contactName,
content: content,
createdAt: newMessage.createdAt,
});
}
}) })
.catch((error) => { .catch((error) => {
console.error(error); console.error(error);