恢复SelectedSessionId缓存,否则状态同步有问题

This commit is contained in:
bob
2025-02-25 22:14:05 +08:00
parent aabe01db45
commit 4ba32b0145
2 changed files with 23 additions and 5 deletions

View File

@@ -9,6 +9,15 @@ import { ElMessage } from 'element-plus'
// 消息功能相关需要缓存的数据,不持久化存储
export const messageStore = defineStore('anylink-message', () => {
/**
* message页面当前被选中的sessionId
*/
const selectedSessionId = ref('')
const setSelectedSessionId = (id) => {
selectedSessionId.value = id
}
/**
* 会话列表
* 格式:{sessionId_1: session_1, sessionId_2: session_2, ...}
@@ -170,6 +179,7 @@ export const messageStore = defineStore('anylink-message', () => {
)
const clear = () => {
selectedSessionId.value = ''
sessionList.value = {}
msgRecordsList.value = {}
partitions.value = {}
@@ -227,6 +237,8 @@ export const messageStore = defineStore('anylink-message', () => {
}
return {
selectedSessionId,
setSelectedSessionId,
sessionList,
addSession,
deleteSession,

View File

@@ -1,6 +1,6 @@
eslint-disable prettier/prettier
<script setup>
import { ref, onMounted, computed, nextTick, watch } from 'vue'
import { ref, onMounted, onUnmounted, computed, nextTick, watch } from 'vue'
import {
Microphone,
VideoCamera,
@@ -85,7 +85,9 @@ const myAccount = computed(() => {
})
//当前被选中的session
const selectedSessionId = ref('')
const selectedSessionId = computed(() => {
return messageData.selectedSessionId || ''
})
// 消息拉取是否结束
const pullMsgDone = computed(() => {
@@ -242,7 +244,7 @@ onMounted(async () => {
wsConnect.bindGroupSystemMsgEvent(onReceiveGroupSystemMsg(msgListDiv, capacity)) //绑定接收群系统消息事件
// 这里要接收从其他页面跳转过来传递的sessionId参数
const routerSessionId = router.currentRoute.value.query.sessionId || selectedSessionId.value
const routerSessionId = router.currentRoute.value.query.sessionId
if (routerSessionId) {
if (routerSessionId in messageData.sessionList) {
handleSelectedSession(routerSessionId)
@@ -261,6 +263,10 @@ onMounted(async () => {
}
})
onUnmounted(() => {
messageData.setSelectedSessionId('')
})
const handleMsgListWheel = async () => {
if (
msgListDiv.value.scrollTop === 0 &&
@@ -421,7 +427,7 @@ const handleSelectedSession = async (sessionId) => {
router.replace({ query: { sessionId: sessionId } })
if (selectedSessionId.value !== sessionId) {
selectedSessionId.value = sessionId
messageData.setSelectedSessionId(sessionId)
initSession(sessionId)
locateSession(sessionId)
@@ -809,7 +815,7 @@ const onOpenSessionMenu = (sessionId) => {
}
const onNoneSelected = () => {
selectedSessionId.value = ''
messageData.setSelectedSessionId('')
}
const onVoiceCall = () => {