This commit is contained in:
2026-04-17 18:42:35 -04:00
parent 82fee7a507
commit 0fe971ebe8
38 changed files with 4275 additions and 123 deletions

View File

@@ -0,0 +1,45 @@
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;
}