Files
web/apps/scandic-web/components/HotelReservation/EnterDetails/Tracking/index.tsx
Anton Gunnarsson 03468ad824 Merged in fix/refactor-booking-flow-search-params (pull request #2148)
Fix: refactor booking flow search params

* wip: apply codemod and upgrade swc plugin

* wip: design-system to react 19, fix issues from async (search)params

* Prepare new parse function for booking flow search params

* Prepare serialize function for booking flow search params

* Improve handling of comma separated arrays

* Slightly refactor for readability

* Next abstracts URLSearchParams so handle the abstraction instead

* Refactor booking widget to use new search params parsing

* Rename search param functions

* Refactor select-hotel to use new search param parser

* Use new search params parser in select-rate and details

* Fix hotelId type

* Avoid passing down search params into BookingWidget components

* More updates to use new types instead of SearchParams<T>

* Remove types SelectHotelSearchParams and AlternativeSelectHotelSearchParams

* Fix parseBookingWidgetSearchParams return type

* Add error handling to booking search param parsers

* Fix modifyRateIndex handling in details page

* Clean up

* Refactor booking widget search param serializing to util function

* Move start page booking widget search param parsing to page

* Use new search param serializer in HandleErrorCallback

* Delete convertSearchParamsToObj & convertObjToSearchParams


Approved-by: Michael Zetterberg
2025-06-02 13:38:01 +00:00

56 lines
1.3 KiB
TypeScript

"use client"
import { useEnterDetailsStore } from "@/stores/enter-details"
import TrackingSDK from "@/components/TrackingSDK"
import { useSearchHistory } from "@/hooks/useSearchHistory"
import { getTracking } from "./tracking"
import type { DetailsBooking } from "@/types/components/hotelReservation/enterDetails/details"
import type { Hotel } from "@/types/hotel"
import type { Room } from "@/types/providers/details/room"
import type { Lang } from "@/constants/languages"
interface TrackingWrapperProps {
booking: DetailsBooking
hotel: Hotel
rooms: Room[]
isMember: boolean
lang: Lang
}
export default function EnterDetailsTrackingWrapper({
booking,
hotel,
rooms,
isMember,
lang,
}: TrackingWrapperProps) {
const { storedRooms, breakfastPackages } = useEnterDetailsStore((state) => ({
storedRooms: state.rooms,
breakfastPackages: state.breakfastPackages,
}))
const searchHistory = useSearchHistory()
const searchTerm = searchHistory.searchHistory[0]?.name
const { hotelsTrackingData, pageTrackingData, ancillaries } = getTracking(
booking,
hotel,
rooms,
isMember,
lang,
storedRooms,
breakfastPackages,
searchTerm
)
return (
<TrackingSDK
hotelInfo={hotelsTrackingData}
pageData={pageTrackingData}
ancillaries={ancillaries}
/>
)
}