import { create } from 'zustand'; import type { ChatMessage } from '../types'; interface ChatState { messages: ChatMessage[]; typingUsers: Array<{ userId: string; userName: string }>; isOpen: boolean; unreadCount: number; addMessage: (message: ChatMessage) => void; setMessages: (messages: ChatMessage[]) => void; setTypingUser: (userId: string, userName: string, isTyping: boolean) => void; setOpen: (open: boolean) => void; reset: () => void; } export const useChatStore = create((set) => ({ messages: [], typingUsers: [], isOpen: false, unreadCount: 0, addMessage: (message) => set((s) => ({ messages: [...s.messages, message], unreadCount: s.isOpen ? 0 : s.unreadCount + 1 })), setMessages: (messages) => set({ messages }), setTypingUser: (userId, userName, isTyping) => set((s) => ({ typingUsers: isTyping ? [...s.typingUsers.filter((t) => t.userId !== userId), { userId, userName }] : s.typingUsers.filter((t) => t.userId !== userId), })), setOpen: (isOpen) => set({ isOpen, unreadCount: isOpen ? 0 : undefined } as any), reset: () => set({ messages: [], typingUsers: [], isOpen: false, unreadCount: 0 }), }));