import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query"; import { campaignsService } from "./services"; import { QUERY_KEYS } from "@/config/constants"; export const useCampaignList = (status?: string) => { return useQuery({ queryKey: [QUERY_KEYS.CAMPAIGNS, status], queryFn: () => campaignsService.getAll(status), refetchInterval: 60000, }); }; export const useSendCampaign = () => { const queryClient = useQueryClient(); return useMutation({ mutationFn: campaignsService.sendSingle, onSuccess: () => { queryClient.invalidateQueries({ queryKey: [QUERY_KEYS.CAMPAIGNS] }); }, }); }; export const useSetupCampaign = () => { const queryClient = useQueryClient(); return useMutation({ mutationFn: campaignsService.setup, onSuccess: () => { queryClient.invalidateQueries({ queryKey: [QUERY_KEYS.CAMPAIGNS] }); }, }); }; export const useCancelCampaign = () => { const queryClient = useQueryClient(); return useMutation({ mutationFn: campaignsService.cancel, onSuccess: () => { queryClient.invalidateQueries({ queryKey: [QUERY_KEYS.CAMPAIGNS] }); }, }); }; export const useUpdateCampaign = () => { const queryClient = useQueryClient(); return useMutation({ mutationFn: ({ id, data }: { id: string; data: Parameters[1] }) => campaignsService.update(id, data), onSuccess: () => { queryClient.invalidateQueries({ queryKey: [QUERY_KEYS.CAMPAIGNS] }); }, }); }; export const useDeleteCampaign = () => { const queryClient = useQueryClient(); return useMutation({ mutationFn: campaignsService.cancel, onSuccess: () => { queryClient.invalidateQueries({ queryKey: [QUERY_KEYS.CAMPAIGNS] }); }, }); }; export const useCampaignAnalytics = () => { return useQuery({ queryKey: [QUERY_KEYS.CAMPAIGNS, "analytics"], queryFn: () => campaignsService.getAnalytics(), }); }; export const useCampaignReport = (id: string) => { return useQuery({ queryKey: [QUERY_KEYS.CAMPAIGNS, "report", id], queryFn: () => campaignsService.getReport(id), enabled: !!id, }); };