import type { MateChatMessage } from '@af-mobile-client-vue3/components/common/MateChat/types' import { ref } from 'vue' /** * 会话消息缓存管理 * 使用 Map 存储每个 chatId 的消息列表 */ const messagesCache = ref>(new Map()) /** * 会话消息缓存管理组合式函数 */ export function useChatMessagesCache() { /** * 获取缓存的消息列表 * @param chatId 会话 ID * @returns 缓存的消息列表,如果缓存不存在则返回 null */ function getCachedMessages(chatId: string): MateChatMessage[] | null { const cached = messagesCache.value.get(chatId) return cached || null } /** * 设置缓存的消息列表 * @param chatId 会话 ID * @param messages 消息列表 */ function setCachedMessages(chatId: string, messages: MateChatMessage[]): void { messagesCache.value.set(chatId, messages) } /** * 追加新消息到缓存 * @param chatId 会话 ID * @param newMessages 要追加的新消息列表 */ function appendMessages(chatId: string, newMessages: MateChatMessage[]): void { const existing = messagesCache.value.get(chatId) if (existing) { // 如果缓存存在,追加新消息 messagesCache.value.set(chatId, [...existing, ...newMessages]) } else { // 如果缓存不存在,创建新缓存 messagesCache.value.set(chatId, [...newMessages]) } } /** * 清除指定会话的缓存 * @param chatId 会话 ID */ function clearCache(chatId: string): void { messagesCache.value.delete(chatId) } /** * 清除所有会话的消息缓存 */ function clearAllCache(): void { messagesCache.value.clear() } return { getCachedMessages, setCachedMessages, appendMessages, clearCache, clearAllCache, } }