Files
web/apps/scandic-web/hooks/booking/useHandleBookingStatus.ts
Linus Flood 6979ac0c3b Merged in revert-pr-1925 (pull request #1927)
Revert "Feat/sw 2323 find booking (pull request #1925)"

Approved-by: Anton Gunnarsson
2025-05-02 13:05:42 +00:00

57 lines
1.2 KiB
TypeScript

"use client"
import { useRef } from "react"
import { trpc } from "@/lib/trpc/client"
import type { BookingStatusEnum } from "@/constants/booking"
export function useHandleBookingStatus({
confirmationNumber,
expectedStatuses,
maxRetries,
retryInterval,
enabled,
}: {
confirmationNumber: string | null
expectedStatuses: 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 (
expectedStatuses.includes(
query.state.data?.reservationStatus as BookingStatusEnum
)
) {
return false
}
return retryInterval
},
refetchIntervalInBackground: true,
refetchOnWindowFocus: false,
refetchOnMount: false,
retry: false,
}
)
return {
...query,
isTimeout: retries.current >= maxRetries,
}
}