diff --git a/app/[lang]/(live)/(public)/[contentType]/[uid]/page.tsx b/app/[lang]/(live)/(public)/[contentType]/[uid]/page.tsx index 08fa09422..d96f10f38 100644 --- a/app/[lang]/(live)/(public)/[contentType]/[uid]/page.tsx +++ b/app/[lang]/(live)/(public)/[contentType]/[uid]/page.tsx @@ -2,9 +2,10 @@ import { notFound } from "next/navigation" import { env } from "@/env/server" -import ContentPage from "@/components/ContentType/ContentPage" import HotelPage from "@/components/ContentType/HotelPage" import LoyaltyPage from "@/components/ContentType/LoyaltyPage" +import CollectionPage from "@/components/ContentType/StaticPages/CollectionPage" +import ContentPage from "@/components/ContentType/StaticPages/ContentPage" import { setLang } from "@/i18n/serverContext" import { @@ -22,6 +23,11 @@ export default function ContentTypePage({ setLang(params.lang) switch (params.contentType) { + case "collection-page": + if (env.HIDE_FOR_NEXT_RELEASE) { + return notFound() + } + return case "content-page": if (env.HIDE_FOR_NEXT_RELEASE) { return notFound() diff --git a/app/[lang]/(live)/(public)/hotelreservation/(standard)/select-rate/page.tsx b/app/[lang]/(live)/(public)/hotelreservation/(standard)/select-rate/page.tsx index 502a5833c..1e1787d75 100644 --- a/app/[lang]/(live)/(public)/hotelreservation/(standard)/select-rate/page.tsx +++ b/app/[lang]/(live)/(public)/hotelreservation/(standard)/select-rate/page.tsx @@ -1,6 +1,7 @@ import { notFound } from "next/navigation" -import { getProfileSafely } from "@/lib/trpc/memoizedRequests" +import { dt } from "@/lib/dt" +import { getLocations, getProfileSafely } from "@/lib/trpc/memoizedRequests" import { serverClient } from "@/lib/trpc/server" import { HotelIncludeEnum } from "@/server/routers/hotels/input" @@ -21,6 +22,17 @@ export default async function SelectRatePage({ }: PageArgs) { setLang(params.lang) + const locations = await getLocations() + if (!locations || "error" in locations) { + return null + } + const hotel = locations.data.find( + (location) => + "operaId" in location && location.operaId == searchParams.hotel + ) + if (!hotel) { + return notFound() + } const selectRoomParams = new URLSearchParams(searchParams) const selectRoomParamsObject = getHotelReservationQueryParams(selectRoomParams) @@ -29,7 +41,16 @@ export default async function SelectRatePage({ return notFound() } - const adults = selectRoomParamsObject.room[0].adults // TODO: Handle multiple rooms + const validFromDate = + searchParams.fromDate && + dt(searchParams.fromDate).isAfter(dt().subtract(1, "day")) + ? searchParams.fromDate + : dt().utc().format("YYYY-MM-DD") + const validToDate = + searchParams.toDate && dt(searchParams.toDate).isAfter(validFromDate) + ? searchParams.toDate + : dt().utc().add(1, "day").format("YYYY-MM-DD") + const adults = selectRoomParamsObject.room[0].adults || 1 // TODO: Handle multiple rooms const childrenCount = selectRoomParamsObject.room[0].child?.length const children = selectRoomParamsObject.room[0].child ? generateChildrenString(selectRoomParamsObject.room[0].child) @@ -43,8 +64,8 @@ export default async function SelectRatePage({ }), serverClient().hotel.availability.rooms({ hotelId: parseInt(searchParams.hotel, 10), - roomStayStartDate: searchParams.fromDate, - roomStayEndDate: searchParams.toDate, + roomStayStartDate: validFromDate, + roomStayEndDate: validToDate, adults, children, }), diff --git a/app/[lang]/(preview)/layout.tsx b/app/[lang]/(preview)/layout.tsx index 25727e7d6..948bcceba 100644 --- a/app/[lang]/(preview)/layout.tsx +++ b/app/[lang]/(preview)/layout.tsx @@ -1,26 +1,29 @@ -import InitLivePreview from "@/components/Current/LivePreview" -import { setLang } from "@/i18n/serverContext" +import "@/app/globals.css" +import "@scandic-hotels/design-system/style.css" -import type { Metadata } from "next" +import TrpcProvider from "@/lib/trpc/Provider" + +import InitLivePreview from "@/components/LivePreview" +import { getIntl } from "@/i18n" +import ServerIntlProvider from "@/i18n/Provider" +import { setLang } from "@/i18n/serverContext" import type { LangParams, LayoutArgs } from "@/types/params" -export const metadata: Metadata = { - description: "New web", - title: "Scandic Hotels", -} - -export default function RootLayout({ +export default async function RootLayout({ children, params, }: React.PropsWithChildren>) { setLang(params.lang) + const { defaultLocale, locale, messages } = await getIntl() return ( - {children} + + {children} + ) diff --git a/app/[lang]/(preview)/preview/[contentType]/[uid]/page.tsx b/app/[lang]/(preview)/preview/[contentType]/[uid]/page.tsx index fbdfa4893..ff954a31d 100644 --- a/app/[lang]/(preview)/preview/[contentType]/[uid]/page.tsx +++ b/app/[lang]/(preview)/preview/[contentType]/[uid]/page.tsx @@ -1,6 +1,14 @@ +import { ContentstackLivePreview } from "@contentstack/live-preview-utils" +import { notFound } from "next/navigation" + +import HotelPage from "@/components/ContentType/HotelPage" +import LoyaltyPage from "@/components/ContentType/LoyaltyPage" +import CollectionPage from "@/components/ContentType/StaticPages/CollectionPage" +import ContentPage from "@/components/ContentType/StaticPages/ContentPage" +import LoadingSpinner from "@/components/LoadingSpinner" import { setLang } from "@/i18n/serverContext" -import { +import type { ContentTypeParams, LangParams, PageArgs, @@ -13,12 +21,32 @@ export default async function PreviewPage({ }: PageArgs) { setLang(params.lang) - return ( - - - Preview for {params.contentType}:{params.uid} in {params.lang} with - params {JSON.stringify(searchParams, null, 2)} goes here - - - ) + try { + ContentstackLivePreview.setConfigFromParams(searchParams) + + if (!searchParams.live_preview) { + return + } + + switch (params.contentType) { + case "content-page": + return + case "loyalty-page": + return + case "collection-page": + return + case "hotel-page": + return + default: + console.log({ PREVIEW: params }) + const type = params.contentType + console.error(`Unsupported content type given: ${type}`) + notFound() + } + } catch (error) { + // TODO: throw 500 + console.error("Error in preview page") + console.error(error) + throw new Error("Something went wrong") + } } diff --git a/app/[lang]/(preview-current)/layout.tsx b/app/[lang]/(preview-current)/layout.tsx index 3e98666c8..e5ff698bb 100644 --- a/app/[lang]/(preview-current)/layout.tsx +++ b/app/[lang]/(preview-current)/layout.tsx @@ -1,6 +1,6 @@ import Footer from "@/components/Current/Footer" import LangPopup from "@/components/Current/LangPopup" -import InitLivePreview from "@/components/Current/LivePreview" +import InitLivePreview from "@/components/LivePreview" import SkipToMainContent from "@/components/SkipToMainContent" import { setLang } from "@/i18n/serverContext" diff --git a/app/[lang]/(preview-current)/preview-current/page.tsx b/app/[lang]/(preview-current)/preview-current/page.tsx index f8ca81201..82c1e9c45 100644 --- a/app/[lang]/(preview-current)/preview-current/page.tsx +++ b/app/[lang]/(preview-current)/preview-current/page.tsx @@ -1,4 +1,4 @@ -import ContentstackLivePreview from "@contentstack/live-preview-utils" +import { ContentstackLivePreview } from "@contentstack/live-preview-utils" import { previewRequest } from "@/lib/graphql/previewRequest" import { GetCurrentBlockPage } from "@/lib/graphql/Query/Current/CurrentBlockPage.graphql" diff --git a/components/Blocks/CardsGrid.tsx b/components/Blocks/CardsGrid.tsx index 1c07b73ec..92d98a61b 100644 --- a/components/Blocks/CardsGrid.tsx +++ b/components/Blocks/CardsGrid.tsx @@ -42,13 +42,17 @@ export default function CardsGrid({ case CardsGridEnum.cards.Card: return ( ) case CardsGridEnum.cards.TeaserCard: diff --git a/components/Blocks/DynamicContent/OverviewTable/LargeTable/index.tsx b/components/Blocks/DynamicContent/OverviewTable/LargeTable/index.tsx index f19b42444..aa9d320cd 100644 --- a/components/Blocks/DynamicContent/OverviewTable/LargeTable/index.tsx +++ b/components/Blocks/DynamicContent/OverviewTable/LargeTable/index.tsx @@ -70,7 +70,7 @@ function RewardTableHeader({ name, description }: RewardTableHeaderProps) { - + {name} diff --git a/components/Blocks/DynamicContent/OverviewTable/RewardList/Card/index.tsx b/components/Blocks/DynamicContent/OverviewTable/RewardList/Card/index.tsx index b54d9722d..4a49abd04 100644 --- a/components/Blocks/DynamicContent/OverviewTable/RewardList/Card/index.tsx +++ b/components/Blocks/DynamicContent/OverviewTable/RewardList/Card/index.tsx @@ -19,7 +19,7 @@ export default function RewardCard({ - + {title} diff --git a/components/Blocks/DynamicContent/Rewards/NextLevel/index.tsx b/components/Blocks/DynamicContent/Rewards/NextLevel/index.tsx index 7517ed955..cc311048d 100644 --- a/components/Blocks/DynamicContent/Rewards/NextLevel/index.tsx +++ b/components/Blocks/DynamicContent/Rewards/NextLevel/index.tsx @@ -56,7 +56,7 @@ export default async function NextLevelRewardsBlock({ { level: nextLevelRewards.level?.name } )}
- Preview for {params.contentType}:{params.uid} in {params.lang} with - params
{JSON.stringify(searchParams, null, 2)}