import { create } from 'zustand' import { immer } from 'zustand/middleware/immer' import type { Server, ServerId, Uuid } from '~/lib/api/types' type ServerListStore = { servers: Record addServers: (newServers: Server[]) => void addServer: (server: Server) => void removeServer: (serverId: Uuid) => void } export const useServerListStore = create()( immer( (set) => ({ servers: {}, addServers: (servers: Server[]) => set((state) => { for (const server of servers) { state.servers[server.id] = server } }), addServer: (server: Server) => set((state) => { state.servers[server.id] = server }), removeServer: (serverId: Uuid) => set((state) => { delete state.servers[serverId] }), }) ) )