"use client" import { use, useEffect } from "react" import { useIntl } from "react-intl" import { dt } from "@/lib/dt" import Caption from "@/components/TempDesignSystem/Text/Caption" import Subtitle from "@/components/TempDesignSystem/Text/Subtitle" import useLang from "@/hooks/useLang" import { useMyStayRoomDetailsStore } from "../stores/myStayRoomDetailsStore" import { useMyStayTotalPriceStore } from "../stores/myStayTotalPrice" import styles from "./linkedReservation.module.css" import type { BookingConfirmation } from "@/types/trpc/routers/booking/confirmation" interface LinkedReservationProps { bookingPromise: Promise index: number } export default function LinkedReservation({ bookingPromise, index, }: LinkedReservationProps) { const intl = useIntl() const lang = useLang() const { addRoomPrice } = useMyStayTotalPriceStore() const { addRoomDetails } = useMyStayRoomDetailsStore() const bookingConfirmation = use(bookingPromise) const { booking, room } = bookingConfirmation ?? {} useEffect(() => { if (booking) { addRoomPrice({ id: booking.confirmationNumber ?? "", totalPrice: booking.totalPrice, currencyCode: booking.currencyCode, isMainBooking: false, }) // Add room details to the store addRoomDetails({ id: booking.confirmationNumber ?? "", roomName: room?.name ?? booking.roomTypeCode ?? "", isCancelable: booking.isCancelable, }) } }, [booking, room, addRoomPrice, addRoomDetails]) if (!booking) return null const fromDate = dt(booking.checkInDate).locale(lang) const toDate = dt(booking.checkOutDate).locale(lang) return (
{intl.formatMessage({ id: "Room" }) + " " + (index + 2)}
{intl.formatMessage({ id: "Reference" })} {booking.confirmationNumber}
{booking.childrenAges.length > 0 ? intl.formatMessage( { id: "{adults} adults, {children} children" }, { adults: booking.adults, children: booking.childrenAges.length, } ) : intl.formatMessage( { id: "{adults} adults" }, { adults: booking.adults, } )}
{intl.formatMessage({ id: "Check-in" })} {`${fromDate.format("dddd, D MMMM")} `}
{intl.formatMessage({ id: "Check-out" })} {`${toDate.format("dddd, D MMMM")} `}
) }