import { useInfiniteQuery, useQuery } from "@tanstack/react-query" import { eventsApi, EventDto } from "@/services/events" const EVENTS_LIMIT = 20 export function useEvents(date?: string | null) { return useInfiniteQuery({ queryKey: ["events", date], queryFn: ({ pageParam }) => eventsApi.getEvents({ limit: EVENTS_LIMIT, cursor: pageParam, date: date || undefined }), initialPageParam: undefined as string | undefined, getNextPageParam: (lastPage) => lastPage.nextCursor, staleTime: 5 * 60 * 1000, // 5 minutes }) } export function useAllEvents(date?: string | null): { events: EventDto[] isLoading: boolean isError: boolean error: Error | null hasNextPage: boolean fetchNextPage: () => void isFetchingNextPage: boolean } { const { data, isLoading, isError, error, hasNextPage, fetchNextPage, isFetchingNextPage, } = useEvents(date) const events = data?.pages.flatMap(page => page.data) ?? [] return { events, isLoading, isError, error, hasNextPage: hasNextPage ?? false, fetchNextPage, isFetchingNextPage, } } export function useEvent(eventId: string) { return useQuery({ queryKey: ["event", eventId], queryFn: () => eventsApi.getEventById(eventId), staleTime: 5 * 60 * 1000, // 5 minutes enabled: !!eventId, // Only run query if eventId is provided }) }