import stringify from "json-stable-stringify-without-jsonify" import { notFound } from "next/navigation" import { Suspense } from "react" import { getHotel } from "@/lib/trpc/memoizedRequests" import { auth } from "@/auth" import HotelInfoCard from "@/components/HotelReservation/SelectRate/HotelInfoCard" import { RoomsContainer } from "@/components/HotelReservation/SelectRate/RoomsContainer" import TrackingSDK from "@/components/TrackingSDK" import { setLang } from "@/i18n/serverContext" import { getHotelSearchDetails } from "@/utils/hotelSearchDetails" import { isValidSession } from "@/utils/session" import { convertSearchParamsToObj } from "@/utils/url" import { getValidDates } from "./getValidDates" import { getTracking } from "./tracking" import type { SelectRateSearchParams } from "@/types/components/hotelReservation/selectRate/selectRate" import type { LangParams, PageArgs } from "@/types/params" export default async function SelectRatePage({ params, searchParams, }: PageArgs) { setLang(params.lang) const searchDetails = await getHotelSearchDetails({ searchParams }) if (!searchDetails?.hotel) { return notFound() } const { adultsInRoom, childrenInRoom, hotel, noOfRooms, selectHotelParams } = searchDetails const hotelData = await getHotel({ hotelId: hotel.id, isCardOnlyPayment: false, language: params.lang, }) if (!hotelData) { return notFound() } const { fromDate, toDate } = getValidDates( selectHotelParams.fromDate, selectHotelParams.toDate ) const session = await auth() const isUserLoggedIn = isValidSession(session) const arrivalDate = fromDate.toDate() const departureDate = toDate.toDate() const { hotelsTrackingData, pageTrackingData } = getTracking( params.lang, arrivalDate, departureDate, adultsInRoom, childrenInRoom, hotel.id, hotel.name, noOfRooms, hotelData.hotel.address.country, hotelData.hotel.address.city, selectHotelParams.city ) const booking = convertSearchParamsToObj(searchParams) const suspenseKey = stringify(searchParams) return ( <> ) }