feat(SW-2863): Move contentstack router to trpc package * Add exports to packages and lint rule to prevent relative imports * Add env to trpc package * Add eslint to trpc package * Apply lint rules * Use direct imports from trpc package * Add lint-staged config to trpc * Move lang enum to common * Restructure trpc package folder structure * WIP first step * update internal imports in trpc * Fix most errors in scandic-web Just 100 left... * Move Props type out of trpc * Fix CategorizedFilters types * Move more schemas in hotel router * Fix deps * fix getNonContentstackUrls * Fix import error * Fix entry error handling * Fix generateMetadata metrics * Fix alertType enum * Fix duplicated types * lint:fix * Merge branch 'master' into feat/sw-2863-move-contentstack-router-to-trpc-package * Fix broken imports * Merge branch 'master' into feat/sw-2863-move-contentstack-router-to-trpc-package Approved-by: Linus Flood
73 lines
2.3 KiB
TypeScript
73 lines
2.3 KiB
TypeScript
import { notFound } from "next/navigation"
|
|
|
|
import { GetCurrentBlockPage } from "@scandic-hotels/trpc/graphql/Query/Current/CurrentBlockPage.graphql"
|
|
import { GetCurrentBlockPageTrackingData } from "@scandic-hotels/trpc/graphql/Query/Current/CurrentBlockPageTrackingData.graphql"
|
|
import { request } from "@scandic-hotels/trpc/graphql/request"
|
|
|
|
import ContentPage from "@/components/Current/ContentPage"
|
|
import Tracking from "@/components/Current/Tracking"
|
|
|
|
import type { LangParams, PageArgs, UriParams } from "@/types/params"
|
|
import type { GetCurrentBlockPageData } from "@/types/requests/currentBlockPage"
|
|
import type { TrackingData } from "@/types/requests/trackingData"
|
|
|
|
export default async function CurrentContentPage(
|
|
props: PageArgs<LangParams, UriParams>
|
|
) {
|
|
const searchParams = await props.searchParams
|
|
const params = await props.params
|
|
try {
|
|
if (!searchParams.uri) {
|
|
throw new Error("Bad URI")
|
|
}
|
|
|
|
const response = await request<GetCurrentBlockPageData>(
|
|
GetCurrentBlockPage,
|
|
{
|
|
locale: params.lang,
|
|
url: searchParams.uri,
|
|
},
|
|
{
|
|
key: `${params.lang}:current-block-page:${searchParams.uri}`,
|
|
ttl: "max",
|
|
}
|
|
)
|
|
|
|
if (!response.data?.all_current_blocks_page?.total) {
|
|
console.log("#### DATA ####")
|
|
console.log(response.data)
|
|
console.log("SearchParams URI: ", searchParams.uri)
|
|
throw new Error("Not found")
|
|
}
|
|
|
|
// This is currently to be considered a temporary solution to provide the tracking with a few values in english to align with existing reports
|
|
const pageDataForTracking = await request<TrackingData>(
|
|
GetCurrentBlockPageTrackingData,
|
|
{ uid: response.data.all_current_blocks_page.items[0].system.uid },
|
|
{
|
|
key: `${params.lang}:current-block-page-tracking:${searchParams.uri}`,
|
|
ttl: "max",
|
|
}
|
|
)
|
|
|
|
const pageData = response.data.all_current_blocks_page.items[0]
|
|
|
|
const trackingData = {
|
|
lang: params.lang,
|
|
publishedDate: pageData.system.updated_at,
|
|
createdDate: pageData.system.created_at,
|
|
pageId: pageData.system.uid,
|
|
englishUrl: pageDataForTracking.data?.current_blocks_page.url,
|
|
}
|
|
|
|
return (
|
|
<>
|
|
<ContentPage data={response.data} />
|
|
<Tracking pageData={trackingData} />
|
|
</>
|
|
)
|
|
} catch {
|
|
return notFound()
|
|
}
|
|
}
|