diff --git a/.env.local.example b/.env.local.example index c6f85bec7..d7516b393 100644 --- a/.env.local.example +++ b/.env.local.example @@ -52,5 +52,7 @@ GOOGLE_STATIC_MAP_ID="" GOOGLE_DYNAMIC_MAP_ID="" HIDE_FOR_NEXT_RELEASE="false" +HIDE_BOOKINGWIDGET_HOTELRESERVATION_PATH="false" +HIDE_SITE_WIDE_ALERT="false" SHOW_SIGNUP_FLOW="true" USE_NEW_REWARDS_ENDPOINT="true" diff --git a/.env.test b/.env.test index f651cbe63..a130c62d5 100644 --- a/.env.test +++ b/.env.test @@ -44,3 +44,5 @@ GOOGLE_DYNAMIC_MAP_ID="test" HIDE_FOR_NEXT_RELEASE="true" SALESFORCE_PREFERENCE_BASE_URL="test" USE_NEW_REWARDS_ENDPOINT="true" +HIDE_BOOKINGWIDGET_HOTELRESERVATION_PATH="false" +HIDE_SITE_WIDE_ALERT="false" diff --git a/app/[lang]/(live)/(public)/hotelreservation/(standard)/layout.tsx b/app/[lang]/(live)/(public)/hotelreservation/(standard)/layout.tsx index 21bf78f5e..373cb817b 100644 --- a/app/[lang]/(live)/(public)/hotelreservation/(standard)/layout.tsx +++ b/app/[lang]/(live)/(public)/hotelreservation/(standard)/layout.tsx @@ -12,7 +12,10 @@ export default function HotelReservationLayout({ }: React.PropsWithChildren> & { sidePeek: React.ReactNode }) { - if (env.HIDE_FOR_NEXT_RELEASE) { + if ( + env.HIDE_FOR_NEXT_RELEASE && + env.HIDE_BOOKINGWIDGET_HOTELRESERVATION_PATH + ) { return notFound() } return ( diff --git a/app/[lang]/(live)/(public)/hotelreservation/(standard)/page.module.css b/app/[lang]/(live)/(public)/hotelreservation/(standard)/page.module.css new file mode 100644 index 000000000..3446c2a84 --- /dev/null +++ b/app/[lang]/(live)/(public)/hotelreservation/(standard)/page.module.css @@ -0,0 +1,8 @@ +.page { + background-color: var(--Base-Background-Primary-Normal); + min-height: 50dvh; + max-width: var(--max-width); + display: flex; + align-items: center; + justify-content: center; +} diff --git a/app/[lang]/(live)/(public)/hotelreservation/(standard)/page.tsx b/app/[lang]/(live)/(public)/hotelreservation/(standard)/page.tsx index 981b0d765..7afaf8599 100644 --- a/app/[lang]/(live)/(public)/hotelreservation/(standard)/page.tsx +++ b/app/[lang]/(live)/(public)/hotelreservation/(standard)/page.tsx @@ -1,8 +1,21 @@ +import { env } from "@/env/server" + import { setLang } from "@/i18n/serverContext" +import styles from "./page.module.css" + import type { LangParams, PageArgs } from "@/types/params" export default function HotelReservationPage({ params }: PageArgs) { setLang(params.lang) - return null + + if (env.HIDE_BOOKINGWIDGET_HOTELRESERVATION_PATH) { + return null + } + + return ( +
+ New booking flow! Please report errors/issues in Slack. +
+ ) } diff --git a/app/[lang]/(live)/@bookingwidget/hotelreservation/[...paths]/page.tsx b/app/[lang]/(live)/@bookingwidget/hotelreservation/[...paths]/page.tsx index 2ebaca014..03a82e5f5 100644 --- a/app/[lang]/(live)/@bookingwidget/hotelreservation/[...paths]/page.tsx +++ b/app/[lang]/(live)/@bookingwidget/hotelreservation/[...paths]/page.tsx @@ -1 +1 @@ -export { default } from "../../page" +export { default } from "../page" diff --git a/app/[lang]/(live)/@bookingwidget/hotelreservation/page.tsx b/app/[lang]/(live)/@bookingwidget/hotelreservation/page.tsx index 03a82e5f5..1a77e08c1 100644 --- a/app/[lang]/(live)/@bookingwidget/hotelreservation/page.tsx +++ b/app/[lang]/(live)/@bookingwidget/hotelreservation/page.tsx @@ -1 +1,21 @@ -export { default } from "../page" +import { env } from "@/env/server" + +import BookingWidget, { preload } from "@/components/BookingWidget" + +import { PageArgs } from "@/types/params" + +export default async function BookingWidgetHotelReservationPage({ + searchParams, +}: PageArgs<{}, URLSearchParams>) { + if (env.HIDE_BOOKINGWIDGET_HOTELRESERVATION_PATH) { + return null + } + + preload() + + return +} + +// TODO: This should just: +// export { default } from "../page" +// when current web is no more diff --git a/app/[lang]/(live)/@sitewidealert/page.tsx b/app/[lang]/(live)/@sitewidealert/page.tsx index be7ae2256..05796b740 100644 --- a/app/[lang]/(live)/@sitewidealert/page.tsx +++ b/app/[lang]/(live)/@sitewidealert/page.tsx @@ -8,7 +8,7 @@ import { setLang } from "@/i18n/serverContext" import type { LangParams, PageArgs } from "@/types/params" export default function SitewideAlertPage({ params }: PageArgs) { - if (env.HIDE_FOR_NEXT_RELEASE) { + if (env.HIDE_SITE_WIDE_ALERT) { return null } diff --git a/app/[lang]/(live)/layout.tsx b/app/[lang]/(live)/layout.tsx index e1c63bbbc..511e59469 100644 --- a/app/[lang]/(live)/layout.tsx +++ b/app/[lang]/(live)/layout.tsx @@ -57,9 +57,9 @@ export default async function RootLayout({ - {!env.HIDE_FOR_NEXT_RELEASE && <>{sitewidealert}} + {sitewidealert} {header} - {!env.HIDE_FOR_NEXT_RELEASE && <>{bookingwidget}} + {bookingwidget} {children} {footer} diff --git a/env/server.ts b/env/server.ts index 57fc05acf..4e517a146 100644 --- a/env/server.ts +++ b/env/server.ts @@ -79,6 +79,20 @@ export const env = createEnv({ .refine((s) => s === "true" || s === "false") // transform to boolean .transform((s) => s === "true"), + HIDE_BOOKINGWIDGET_HOTELRESERVATION_PATH: z + .string() + // only allow "true" or "false" + .refine((s) => s === "true" || s === "false") + // transform to boolean + .transform((s) => s === "true") + .default("true"), + HIDE_SITE_WIDE_ALERT: z + .string() + // only allow "true" or "false" + .refine((s) => s === "true" || s === "false") + // transform to boolean + .transform((s) => s === "true") + .default("true"), USE_NEW_REWARDS_ENDPOINT: z .string() // only allow "true" or "false" @@ -142,5 +156,8 @@ export const env = createEnv({ GOOGLE_DYNAMIC_MAP_ID: process.env.GOOGLE_DYNAMIC_MAP_ID, HIDE_FOR_NEXT_RELEASE: process.env.HIDE_FOR_NEXT_RELEASE, USE_NEW_REWARDS_ENDPOINT: process.env.USE_NEW_REWARDS_ENDPOINT, + HIDE_BOOKINGWIDGET_HOTELRESERVATION_PATH: + process.env.HIDE_BOOKINGWIDGET_HOTELRESERVATION_PATH, + HIDE_SITE_WIDE_ALERT: process.env.HIDE_SITE_WIDE_ALERT, }, })