Files
diplom-frontend/app/stores/server-list-store.ts
2025-05-20 04:16:03 +03:00

25 lines
872 B
TypeScript

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