Files
CIAgent/apps/web/hooks/use-notification-destinations.ts
saksham 1a4c80958f Initial commit: CI Agent competitive-intelligence monitoring app
FastAPI + Celery + Next.js + Postgres/Redis app with company monitoring,
source collection, LLM-based change analysis, enrichment, and account
security (Turnstile, escalating lockout, email verification).
2026-08-05 10:48:20 -04:00

62 lines
2.0 KiB
TypeScript

"use client";
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import { api } from "@/lib/api-client";
import type {
NotificationDestinationCreatePayload,
NotificationDestinationUpdatePayload,
} from "@/lib/types";
export function useNotificationDestinations() {
return useQuery({
queryKey: ["notification-destinations"],
queryFn: api.listNotificationDestinations,
});
}
export function useCreateNotificationDestination() {
const queryClient = useQueryClient();
return useMutation({
mutationFn: (payload: NotificationDestinationCreatePayload) =>
api.createNotificationDestination(payload),
onSuccess: () => queryClient.invalidateQueries({ queryKey: ["notification-destinations"] }),
});
}
export function useUpdateNotificationDestination() {
const queryClient = useQueryClient();
return useMutation({
mutationFn: ({
destinationId,
payload,
}: {
destinationId: string;
payload: NotificationDestinationUpdatePayload;
}) => api.updateNotificationDestination(destinationId, payload),
onSuccess: () => queryClient.invalidateQueries({ queryKey: ["notification-destinations"] }),
});
}
export function useDeleteNotificationDestination() {
const queryClient = useQueryClient();
return useMutation({
mutationFn: (destinationId: string) => api.deleteNotificationDestination(destinationId),
onSuccess: () => queryClient.invalidateQueries({ queryKey: ["notification-destinations"] }),
});
}
export function useUnlinkNotificationDestinationCompany() {
const queryClient = useQueryClient();
return useMutation({
mutationFn: ({ destinationId, companyId }: { destinationId: string; companyId: string }) =>
api.unlinkNotificationDestinationCompany(destinationId, companyId),
onSuccess: () => queryClient.invalidateQueries({ queryKey: ["notification-destinations"] }),
});
}
export function useTestNotificationDestination() {
return useMutation({
mutationFn: (destinationId: string) => api.testNotificationDestination(destinationId),
});
}