import { create } from 'zustand'; import type { Room, RoomMember, UserPresence, UserCursor } from '../types'; interface RoomState { currentRoom: Room | null; members: RoomMember[]; presence: UserPresence[]; cursors: UserCursor[]; isConnected: boolean; isJoining: boolean; setRoom: (room: Room) => void; setMembers: (members: RoomMember[]) => void; addMember: (member: RoomMember) => void; removeMember: (userId: string) => void; setPresence: (presence: UserPresence[]) => void; setCursors: (cursors: UserCursor[]) => void; setConnected: (connected: boolean) => void; setJoining: (joining: boolean) => void; reset: () => void; } export const useRoomStore = create((set) => ({ currentRoom: null, members: [], presence: [], cursors: [], isConnected: false, isJoining: false, setRoom: (currentRoom) => set({ currentRoom }), setMembers: (members) => set({ members }), addMember: (member) => set((s) => ({ members: [...s.members.filter((m) => m.userId !== member.userId), member] })), removeMember: (userId) => set((s) => ({ members: s.members.filter((m) => m.userId !== userId), cursors: s.cursors.filter((c) => c.userId !== userId) })), setPresence: (presence) => set({ presence }), setCursors: (cursors) => set({ cursors }), setConnected: (isConnected) => set({ isConnected }), setJoining: (isJoining) => set({ isJoining }), reset: () => set({ currentRoom: null, members: [], presence: [], cursors: [], isConnected: false }), }));