fix: move date logic to its own file with tests
fix: missing packages should not prevent render fix: display nothing if roomavailability returns nothing
This commit is contained in:
@@ -1,7 +1,6 @@
|
|||||||
import { notFound } from "next/navigation"
|
import { notFound } from "next/navigation"
|
||||||
import { Suspense } from "react"
|
import { Suspense } from "react"
|
||||||
|
|
||||||
import { dt } from "@/lib/dt"
|
|
||||||
import { getHotelData, getLocations } from "@/lib/trpc/memoizedRequests"
|
import { getHotelData, getLocations } from "@/lib/trpc/memoizedRequests"
|
||||||
|
|
||||||
import HotelInfoCard from "@/components/HotelReservation/SelectRate/HotelInfoCard"
|
import HotelInfoCard from "@/components/HotelReservation/SelectRate/HotelInfoCard"
|
||||||
@@ -11,6 +10,8 @@ import { getHotelReservationQueryParams } from "@/components/HotelReservation/Se
|
|||||||
import { setLang } from "@/i18n/serverContext"
|
import { setLang } from "@/i18n/serverContext"
|
||||||
import { safeTry } from "@/utils/safeTry"
|
import { safeTry } from "@/utils/safeTry"
|
||||||
|
|
||||||
|
import { getValidDates } from "./getValidDates"
|
||||||
|
|
||||||
import type { SelectRateSearchParams } from "@/types/components/hotelReservation/selectRate/selectRate"
|
import type { SelectRateSearchParams } from "@/types/components/hotelReservation/selectRate/selectRate"
|
||||||
import type { LangParams, PageArgs } from "@/types/params"
|
import type { LangParams, PageArgs } from "@/types/params"
|
||||||
|
|
||||||
@@ -39,15 +40,10 @@ export default async function SelectRatePage({
|
|||||||
return notFound()
|
return notFound()
|
||||||
}
|
}
|
||||||
|
|
||||||
const fromDate =
|
const { fromDate, toDate } = getValidDates(
|
||||||
searchParams.fromDate &&
|
searchParams.fromDate,
|
||||||
dt(searchParams.fromDate).isAfter(dt().subtract(1, "day"))
|
searchParams.toDate
|
||||||
? dt(searchParams.fromDate)
|
)
|
||||||
: dt().utc()
|
|
||||||
const toDate =
|
|
||||||
searchParams.toDate && dt(searchParams.toDate).isAfter(fromDate)
|
|
||||||
? dt(searchParams.toDate)
|
|
||||||
: dt().utc().add(1, "day")
|
|
||||||
|
|
||||||
const adults = selectRoomParamsObject.room[0].adults || 1 // TODO: Handle multiple rooms
|
const adults = selectRoomParamsObject.room[0].adults || 1 // TODO: Handle multiple rooms
|
||||||
const children = selectRoomParamsObject.room[0].child // TODO: Handle multiple rooms
|
const children = selectRoomParamsObject.room[0].child // TODO: Handle multiple rooms
|
||||||
|
|||||||
@@ -73,16 +73,19 @@ export async function RoomsContainer({
|
|||||||
await roomsAvailabilityPromise
|
await roomsAvailabilityPromise
|
||||||
|
|
||||||
if (packagesError) {
|
if (packagesError) {
|
||||||
console.error("packagesError", packagesError)
|
// TODO: Log packages error
|
||||||
|
console.error("[RoomsContainer] unable to fetch packages")
|
||||||
return (
|
|
||||||
<div>Unable to get packages. {JSON.stringify({ ...packagesError })}</div>
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (roomsAvailabilityError || !roomsAvailability) {
|
if (roomsAvailabilityError) {
|
||||||
console.error("roomsAvailabilityError", roomsAvailabilityError)
|
// TODO: show proper error component
|
||||||
return <div>Unable to get room availability</div>
|
console.error("[RoomsContainer] unable to fetch room availability")
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!roomsAvailability) {
|
||||||
|
// HotelInfoCard has the logic for displaying when there are no rooms available
|
||||||
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
Reference in New Issue
Block a user