feat(SW-1534): Added booking code functionality from either searchParams or pageSettings

Approved-by: Christian Andolf
This commit is contained in:
Erik Tiekstra
2025-03-25 07:36:43 +00:00
parent bb0478033f
commit 2c08b141b2
7 changed files with 35 additions and 5 deletions

View File

@@ -1,7 +1,7 @@
"use client"
import { zodResolver } from "@hookform/resolvers/zod"
import { useEffect, useRef, useState } from "react"
import { use, useEffect, useRef, useState } from "react"
import { FormProvider, useForm } from "react-hook-form"
import { REDEMPTION } from "@/constants/booking"
@@ -37,6 +37,7 @@ import type { Location } from "@/types/trpc/routers/hotel/locations"
export default function BookingWidgetClient({
type,
bookingWidgetSearchParams,
pageSettingsBookingCodePromise,
}: BookingWidgetClientProps) {
const [isOpen, setIsOpen] = useState(false)
const bookingWidgetRef = useRef(null)
@@ -83,7 +84,13 @@ export default function BookingWidgetClient({
selectedLocation = getLocationObj(locations ?? [], params.city)
}
const selectedBookingCode = params.bookingCode ?? ""
// if bookingCode is not provided in the search params,
// we will fetch it from the page settings stored in Contentstack.
const selectedBookingCode =
params.bookingCode ||
(pageSettingsBookingCodePromise !== null
? use(pageSettingsBookingCodePromise)
: "")
const defaultRoomsData: BookingWidgetSchema["rooms"] = params.rooms?.map(
(room) => ({

View File

@@ -1,4 +1,7 @@
import { isBookingWidgetHidden } from "@/lib/trpc/memoizedRequests"
import {
getPageSettingsBookingCode,
isBookingWidgetHidden,
} from "@/lib/trpc/memoizedRequests"
import BookingWidgetClient from "./Client"
@@ -14,10 +17,16 @@ export default async function BookingWidget({
return null
}
let pageSettingsBookingCodePromise: Promise<string> | null = null
if (!bookingWidgetSearchParams.bookingCode) {
pageSettingsBookingCodePromise = getPageSettingsBookingCode()
}
return (
<BookingWidgetClient
type={type}
bookingWidgetSearchParams={bookingWidgetSearchParams}
pageSettingsBookingCodePromise={pageSettingsBookingCodePromise}
/>
)
}