"use client" import { useRef } from "react" import { trpc } from "@/lib/trpc/client" import type { BookingStatusEnum } from "@/constants/booking" export function useHandleBookingStatus({ confirmationNumber, expectedStatus, maxRetries, retryInterval, enabled, }: { confirmationNumber: string | null expectedStatus: BookingStatusEnum maxRetries: number retryInterval: number enabled: boolean }) { const retries = useRef(0) const query = trpc.booking.status.useQuery( { confirmationNumber: confirmationNumber ?? "" }, { enabled, refetchInterval: (query) => { retries.current = query.state.dataUpdateCount if (query.state.error || query.state.dataUpdateCount >= maxRetries) { return false } if (query.state.data?.reservationStatus === expectedStatus) { return false } return retryInterval }, refetchIntervalInBackground: true, refetchOnWindowFocus: false, refetchOnMount: false, retry: false, } ) return { ...query, isTimeout: retries.current >= maxRetries, } }