feat: SW-1422 Enabled booking code in booking widget

This commit is contained in:
Hrishikesh Vaipurkar
2025-01-23 20:25:37 +01:00
parent 46ebbbba8f
commit 1b5b09d7a6
16 changed files with 256 additions and 47 deletions

View File

@@ -23,6 +23,7 @@ import MobileToggleButton, {
import styles from "./bookingWidget.module.css"
import type {
BookingCodeSchema,
BookingWidgetClientProps,
BookingWidgetSchema,
BookingWidgetSearchData,
@@ -82,6 +83,10 @@ export default function BookingWidgetClient({
)
: undefined
const selectedBookingCode = bookingWidgetSearchData
? bookingWidgetSearchData.bookingCode
: undefined
const defaultRoomsData: BookingWidgetSchema["rooms"] =
bookingWidgetSearchData?.rooms?.map((room) => ({
adults: room.adults,
@@ -107,7 +112,10 @@ export default function BookingWidgetClient({
? parsedToDate.format("YYYY-MM-DD")
: now.utc().add(1, "day").format("YYYY-MM-DD"),
},
bookingCode: "",
bookingCode: {
value: selectedBookingCode ?? "",
remember: false,
},
redemption: false,
voucher: false,
rooms: defaultRoomsData,
@@ -164,7 +172,20 @@ export default function BookingWidgetClient({
!selectedLocation &&
sessionStorageSearchData &&
methods.setValue("location", encodeURIComponent(sessionStorageSearchData))
}, [methods, selectedLocation])
const storedBookingCode =
typeof window !== "undefined"
? localStorage.getItem("bookingCode")
: undefined
const initialBookingCode: BookingCodeSchema | undefined =
storedBookingCode && isValidJson(storedBookingCode)
? JSON.parse(storedBookingCode)
: undefined
!selectedBookingCode &&
initialBookingCode &&
initialBookingCode.remember &&
methods.setValue("bookingCode", initialBookingCode)
}, [methods, selectedLocation, selectedBookingCode])
return (
<FormProvider {...methods}>