发送消息时自动更新最近联系人消息列表
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)
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -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