openrag/frontend/app/api/mutations/useDeleteGroupMutation.ts
2025-12-26 17:07:20 -05:00

52 lines
1.1 KiB
TypeScript

import {
type UseMutationOptions,
useMutation,
useQueryClient,
} from "@tanstack/react-query";
export interface DeleteGroupRequest {
group_id: string;
}
export interface DeleteGroupResponse {
success: boolean;
error?: string;
}
export const useDeleteGroupMutation = (
options?: Omit<
UseMutationOptions<DeleteGroupResponse, Error, DeleteGroupRequest>,
"mutationFn"
>,
) => {
const queryClient = useQueryClient();
async function deleteGroup(
variables: DeleteGroupRequest,
): Promise<DeleteGroupResponse> {
const response = await fetch(`/api/groups/${variables.group_id}`, {
method: "DELETE",
});
const data = await response.json();
if (!response.ok) {
throw new Error(data.error || "Failed to delete group");
}
return data;
}
return useMutation({
mutationFn: deleteGroup,
onSuccess: (...args) => {
queryClient.invalidateQueries({
queryKey: ["groups"],
});
options?.onSuccess?.(...args);
},
onError: options?.onError,
onSettled: options?.onSettled,
});
};