import { create } from 'zustand' import { type Server, type Uuid } from '~/lib/api/types' type ServerListStore = { servers: Map setServers: (newServers: Server[]) => void addServer: (server: Server) => void removeServer: (serverId: Uuid) => void } export const useServerListStore = create( (set, get) => ({ servers: new Map(), setServers: (newServers: Server[]) => set({ servers: new Map(newServers.map(server => [server.id, server])) }), addServer: (server: Server) => set({ servers: new Map(get().servers.set(server.id, server)) }), removeServer: (serverId: Uuid) => set((state) => { const newServers = new Map(state.servers) newServers.delete(serverId) return { servers: newServers } }), }) )