78 lines
2.3 KiB
TypeScript
78 lines
2.3 KiB
TypeScript
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<typeof campaignsService.update>[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,
|
|
});
|
|
};
|