Files
web/apps/scandic-web/hooks/booking/useHandleBookingStatus.ts
Anton Gunnarsson e572d9e7e9 Merged in feat/sw-2862-move-booking-router-to-trpc-package (pull request #2421)
feat(SW-2861): Move booking router to trpc package

* Use direct imports from trpc package

* Add lint-staged config to trpc

* Move lang enum to common

* Restructure trpc package folder structure

* WIP first step

* update internal imports in trpc

* Fix most errors in scandic-web

Just 100 left...

* Move Props type out of trpc

* Fix CategorizedFilters types

* Move more schemas in hotel router

* Fix deps

* fix getNonContentstackUrls

* Fix import error

* Fix entry error handling

* Fix generateMetadata metrics

* Fix alertType enum

* Fix duplicated types

* lint:fix

* Merge branch 'master' into feat/sw-2863-move-contentstack-router-to-trpc-package

* Fix broken imports

* Move booking router to trpc package

* Move partners router to trpc package

* Move autocomplete router to trpc package

* Move booking router to trpc package

* Merge branch 'master' into feat/sw-2862-move-booking-router-to-trpc-package


Approved-by: Linus Flood
2025-06-26 13:21:16 +00:00

63 lines
1.2 KiB
TypeScript

"use client"
import { useRef } from "react"
import { trpc } from "@/lib/trpc/client"
import useLang from "@/hooks/useLang"
import type { BookingStatusEnum } from "@scandic-hotels/trpc/enums/bookingStatus"
export function useHandleBookingStatus({
refId,
expectedStatuses,
maxRetries,
retryInterval,
enabled,
}: {
refId: string | null
expectedStatuses: BookingStatusEnum[]
maxRetries: number
retryInterval: number
enabled: boolean
}) {
const lang = useLang()
const retries = useRef(0)
const query = trpc.booking.status.useQuery(
{
lang,
refId: refId ?? "",
},
{
enabled,
refetchInterval: (query) => {
retries.current = query.state.dataUpdateCount
if (query.state.error || query.state.dataUpdateCount >= maxRetries) {
return false
}
if (
expectedStatuses.includes(
query.state.data?.booking.reservationStatus as BookingStatusEnum
)
) {
return false
}
return retryInterval
},
refetchIntervalInBackground: true,
refetchOnWindowFocus: false,
refetchOnMount: false,
retry: false,
}
)
return {
...query,
isTimeout: retries.current >= maxRetries,
}
}