import { create } from 'zustand'; import { getUnreadCount, listMessages, markRead, type MessageInfo } from '../api/messages'; interface MessageState { unreadCount: number; recentMessages: MessageInfo[]; fetchUnreadCount: () => Promise; fetchRecentMessages: () => Promise; markAsRead: (id: string) => Promise; } export const useMessageStore = create((set) => ({ unreadCount: 0, recentMessages: [], fetchUnreadCount: async () => { try { const result = await getUnreadCount(); set({ unreadCount: result.count }); } catch { // 静默失败,不影响用户体验 } }, fetchRecentMessages: async () => { try { const result = await listMessages({ page: 1, page_size: 5 }); set({ recentMessages: result.data }); } catch { // 静默失败 } }, markAsRead: async (id: string) => { try { await markRead(id); set((state) => ({ unreadCount: Math.max(0, state.unreadCount - 1), recentMessages: state.recentMessages.map((m) => m.id === id ? { ...m, is_read: true } : m, ), })); } catch { // 静默失败 } }, }));