"use client"; import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query"; async function fetchJson(url: string, init?: RequestInit): Promise { const res = await fetch(url, init); if (!res.ok) { const body = await res.json().catch(() => ({})); throw new Error(body.error || `Request failed: ${res.status}`); } return res.json(); } export function useInvitations() { return useQuery({ queryKey: ["invitations"], queryFn: () => fetchJson("/api/org/invitations"), }); } export function useCreateInvitation() { const qc = useQueryClient(); return useMutation({ mutationFn: (data: { email: string; role?: string }) => fetchJson("/api/org/invitations", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(data), }), onSuccess: () => { qc.invalidateQueries({ queryKey: ["invitations"] }); }, }); } export function useRevokeInvitation() { const qc = useQueryClient(); return useMutation({ mutationFn: (id: string) => fetchJson(`/api/org/invitations/${id}`, { method: "DELETE" }), onSuccess: () => { qc.invalidateQueries({ queryKey: ["invitations"] }); }, }); }