bd79b7ed14
- Add support for initial data in all marketing wizard step components - Update step presenters to accept and handle initial data - Modify forwardRef implementations to include initialData prop - Add TypeScript interfaces for step component props - Improve type safety and data handling across marketing wizard steps - Prepare components for edit and create workflows with consistent data management
81 lines
2.3 KiB
TypeScript
81 lines
2.3 KiB
TypeScript
import { API_ENDPOINTS } from "@/lib/api";
|
|
import { cmsService } from "@/lib/api/services/cms-service";
|
|
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
|
|
import { useRouter } from "next/navigation";
|
|
import { useMemo } from "react";
|
|
import { toast } from "react-toastify";
|
|
|
|
export const useGetCmsList = () => {
|
|
const queryKey = useMemo(() => [API_ENDPOINTS.CMS.BASE()], []);
|
|
return useQuery({
|
|
queryKey,
|
|
queryFn: cmsService.getCms,
|
|
});
|
|
};
|
|
export const useGetCmsDetails = (id: string) => {
|
|
const queryKey = useMemo(() => [API_ENDPOINTS.CMS.BASE(id)], [id]);
|
|
return useQuery({
|
|
queryKey,
|
|
queryFn: () => cmsService.getCmsDetails(id),
|
|
});
|
|
};
|
|
export const useCreateCms = () => {
|
|
const router = useRouter();
|
|
const queryClient = useQueryClient();
|
|
const mutationKey = useMemo(
|
|
() => [API_ENDPOINTS.CMS.BASE(), "Create cms"],
|
|
[],
|
|
);
|
|
return useMutation({
|
|
mutationKey,
|
|
mutationFn: cmsService.createCms,
|
|
onSuccess: ({ data }: { data: { message: string } }) => {
|
|
toast.success(data.message);
|
|
router.push("/marketing");
|
|
queryClient.invalidateQueries({
|
|
queryKey: [API_ENDPOINTS.CMS.BASE()],
|
|
});
|
|
},
|
|
});
|
|
};
|
|
export const useDeleteCms = (successCallback?: () => void) => {
|
|
const queryClient = useQueryClient();
|
|
const mutationKey = useMemo(
|
|
() => [API_ENDPOINTS.CMS.BASE(), "Delete CMS"],
|
|
[],
|
|
);
|
|
return useMutation({
|
|
mutationKey,
|
|
mutationFn: cmsService.deleteCms,
|
|
onSuccess: ({ data }: { data: { message: string } }) => {
|
|
toast.success(data.message);
|
|
successCallback?.();
|
|
queryClient.invalidateQueries({
|
|
queryKey: [API_ENDPOINTS.CMS.BASE()],
|
|
});
|
|
},
|
|
});
|
|
};
|
|
export const useUpdateCms = (id: string) => {
|
|
const router = useRouter();
|
|
const queryClient = useQueryClient();
|
|
const mutationKey = useMemo(
|
|
() => [API_ENDPOINTS.CMS.BASE(id), "Update cms"],
|
|
[id],
|
|
);
|
|
return useMutation({
|
|
mutationKey,
|
|
mutationFn: (data: any) => cmsService.updateCms({ id, data }),
|
|
onSuccess: () => {
|
|
toast.success("CMS updated successfully");
|
|
router.push("/marketing");
|
|
queryClient.invalidateQueries({
|
|
queryKey: [API_ENDPOINTS.CMS.BASE()],
|
|
});
|
|
queryClient.invalidateQueries({
|
|
queryKey: [API_ENDPOINTS.CMS.BASE(id)],
|
|
});
|
|
},
|
|
});
|
|
};
|