Files
garcia-inv/src/context/GroupsContext.tsx
2026-04-17 18:42:35 -04:00

46 lines
968 B
TypeScript

import {
createContext,
useContext,
useMemo,
type ReactNode,
} from "react";
import { useSettingsGroups, type GroupRow } from "@/hooks/useSettingsGroups";
export type { GroupRow };
type GroupsContextValue = {
groups: GroupRow[];
status: "idle" | "loading" | "error";
error: string;
refresh: () => Promise<void>;
};
const GroupsContext = createContext<GroupsContextValue | null>(null);
export function GroupsProvider({ children }: { children: ReactNode }) {
const { groups, status, error, refresh } = useSettingsGroups(true);
const value = useMemo(
() => ({
groups,
status,
error,
refresh,
}),
[error, groups, refresh, status],
);
return (
<GroupsContext.Provider value={value}>{children}</GroupsContext.Provider>
);
}
export function useGroups() {
const ctx = useContext(GroupsContext);
if (!ctx) {
throw new Error("useGroups must be used within a GroupsProvider");
}
return ctx;
}