发送消息时自动更新最近联系人消息列表
This commit is contained in:
@@ -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();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -339,9 +346,9 @@ export default {
|
|||||||
getContactMessageList(contactName, limit) {
|
getContactMessageList(contactName, limit) {
|
||||||
// 获取当前联系人的消息列表
|
// 获取当前联系人的消息列表
|
||||||
getContactMessages({
|
getContactMessages({
|
||||||
contactName: contactName,
|
contactName: contactName,
|
||||||
limit: limit,
|
limit: limit,
|
||||||
})
|
})
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
const contactMessages = {};
|
const contactMessages = {};
|
||||||
const messages = response.data.messages || [];
|
const messages = response.data.messages || [];
|
||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user