Files
diplom-frontend/app/stores/server-list-store.ts
2025-05-21 08:46:12 +03:00

31 lines
944 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];
}),
})),
);