|
|
|
@ -333,11 +333,11 @@ export default defineStore('chatStore', { |
|
|
|
} |
|
|
|
}, |
|
|
|
refreshChats() { |
|
|
|
if (!cacheChats) return; |
|
|
|
let chats = cacheChats || this.chats; |
|
|
|
// 刷新免打扰状态
|
|
|
|
const friendStore = useFriendStore(); |
|
|
|
const groupStore = useGroupStore(); |
|
|
|
cacheChats.forEach(chat => { |
|
|
|
chats.forEach(chat => { |
|
|
|
if (chat.type == 'PRIVATE') { |
|
|
|
let friend = friendStore.findFriend(chat.targetId); |
|
|
|
if (friend) { |
|
|
|
@ -351,18 +351,18 @@ export default defineStore('chatStore', { |
|
|
|
} |
|
|
|
}) |
|
|
|
// 排序
|
|
|
|
cacheChats.sort((chat1, chat2) => chat2.lastSendTime - chat1.lastSendTime); |
|
|
|
chats.sort((chat1, chat2) => chat2.lastSendTime - chat1.lastSendTime); |
|
|
|
/** |
|
|
|
* 由于部分浏览器不支持websql或indexdb,只能使用localstorage,而localstorage大小只有10m,可能会导致缓存空间溢出 |
|
|
|
* 解决办法:针对只能使用localstorage的浏览器,最多保留1w条消息,每个会话最多保留1000条消息 |
|
|
|
*/ |
|
|
|
if (localForage.driver().includes("localStorage")) { |
|
|
|
this.fliterMessage(cacheChats, 10000, 1000) |
|
|
|
this.fliterMessage(chats, 10000, 1000) |
|
|
|
} |
|
|
|
// 记录热数据索引位置
|
|
|
|
cacheChats.forEach(chat => chat.hotMinIdx = chat.messages.length); |
|
|
|
chats.forEach(chat => chat.hotMinIdx = chat.messages.length); |
|
|
|
// 将消息一次性装载回来
|
|
|
|
this.chats = cacheChats; |
|
|
|
this.chats = chats; |
|
|
|
// 清空缓存
|
|
|
|
cacheChats = null; |
|
|
|
// 持久化消息
|
|
|
|
|