Merged in feature/bookingwidget-client-side (pull request #1481)

Move more of BookingWidget to client SW-1639

* feat: move getLocations in booking widget to client side so that it's also cached on the client reducing the blinking when switching urls (and reducing duplicate calls)


Approved-by: Linus Flood
This commit is contained in:
Joakim Jäderberg
2025-03-05 13:37:33 +00:00
parent 916912a170
commit f36b90e474
10 changed files with 54 additions and 62 deletions

View File

@@ -3,6 +3,7 @@ import { notFound } from "next/navigation"
import { getLocations } from "@/lib/trpc/memoizedRequests"
import { generateChildrenString } from "@/components/HotelReservation/utils"
import { safeTry } from "@/utils/safeTry"
import { convertSearchParamsToObj, type SelectHotelParams } from "@/utils/url"
import type {
@@ -46,13 +47,14 @@ export async function getHotelSearchDetails<
): Promise<HotelSearchDetails<T> | null> {
const selectHotelParams = convertSearchParamsToObj<T>(searchParams)
const locations = await getLocations()
if (!locations || "error" in locations) return null
const [locations, error] = await safeTry(getLocations())
if (!locations || error) {
return null
}
const hotel =
("hotelId" in selectHotelParams &&
(locations.data.find(
(locations.find(
(location) =>
isHotelLocation(location) &&
"operaId" in location &&
@@ -72,7 +74,7 @@ export async function getHotelSearchDetails<
const city =
(typeof cityName === "string" &&
locations.data.find(
locations.find(
(location) => location.name.toLowerCase() === cityName.toLowerCase()
)) ||
null