import { env } from "@/env/server" import { getCityCoordinates } from "@/lib/trpc/memoizedRequests" import { fetchAvailableHotels, getFiltersFromHotels, } from "@/app/[lang]/(live)/(public)/hotelreservation/(standard)/select-hotel/utils" import { safeTry } from "@/utils/safeTry" import { getHotelPins } from "../../HotelCardDialogListing/utils" import SelectHotelMap from "." import type { HotelData, NullableHotelData, } from "@/types/components/hotelReservation/selectHotel/hotelCardListingProps" import type { SelectHotelMapContainerProps } from "@/types/components/hotelReservation/selectHotel/map" function isValidHotelData(hotel: NullableHotelData): hotel is HotelData { return hotel !== null && hotel !== undefined } export async function SelectHotelMapContainer({ city, searchParams, adultsInRoom, childrenInRoom, }: SelectHotelMapContainerProps) { const googleMapId = env.GOOGLE_DYNAMIC_MAP_ID const googleMapsApiKey = env.GOOGLE_STATIC_MAP_KEY const fetchAvailableHotelsPromise = safeTry( fetchAvailableHotels({ cityId: city.id, roomStayStartDate: searchParams.fromDate, roomStayEndDate: searchParams.toDate, adults: adultsInRoom, children: childrenInRoom, }) ) const [hotels] = await fetchAvailableHotelsPromise const validHotels = hotels?.filter(isValidHotelData) || [] const hotelPins = getHotelPins(validHotels) const filterList = getFiltersFromHotels(validHotels) const cityCoordinates = await getCityCoordinates({ city: city.name, hotel: { address: hotels?.[0]?.hotelData?.address.streetAddress }, }) return ( ) }