import { useMutation, useQuery, UseQueryResult, } from "@tanstack/react-query"; import { createPage, deletePage, getPageById, getPages, getRecentChanges, updatePage, } from "@/features/page/services/page-service"; import { IPage } from "@/features/page/types/page.types"; import { notifications } from "@mantine/notifications"; const RECENT_CHANGES_KEY = ["recentChanges"]; export function usePageQuery(pageId: string): UseQueryResult { return useQuery({ queryKey: ["pages", pageId], queryFn: () => getPageById(pageId), enabled: !!pageId, staleTime: 5 * 60 * 1000, }); } export function useGetPagesQuery(): UseQueryResult { return useQuery({ queryKey: ["pages"], queryFn: () => getPages(), staleTime: 5 * 60 * 1000, }); } export function useRecentChangesQuery(): UseQueryResult { return useQuery({ queryKey: RECENT_CHANGES_KEY, queryFn: () => getRecentChanges(), refetchOnMount: true, }); } export function useCreatePageMutation() { return useMutation>({ mutationFn: (data) => createPage(data), onSuccess: (data) => {}, }); } export function useUpdatePageMutation() { return useMutation>({ mutationFn: (data) => updatePage(data), onSuccess: (data) => {}, }); } export function useDeletePageMutation() { return useMutation({ mutationFn: (pageId: string) => deletePage(pageId), onSuccess: () => { notifications.show({ message: "Page deleted successfully" }); }, }); }