22 lines
842 B
TypeScript
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 }
|
|
}),
|
|
})
|
|
) |