Files
diplom-frontend/app/store/server-list.ts
2025-05-15 05:20:01 +03:00

22 lines
842 B
TypeScript

import { create } from 'zustand'
import { type Server, type Uuid } from '~/lib/api/types'
type ServerListStore = {
servers: Map<Uuid, Server>
setServers: (newServers: Server[]) => void
addServer: (server: Server) => void
removeServer: (serverId: Uuid) => void
}
export const useServerListStore = create<ServerListStore>(
(set, get) => ({
servers: new Map<Uuid, Server>(),
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 }
}),
})
)