chore (SW-834): Upgrade to Next 15 * wip: apply codemod and upgrade swc plugin * wip: design-system to react 19, fix issues from async (search)params * wip: fix remaining issues from codemod serverClient is now async because context use headers() getLang is now async because it uses headers() * Minor cleanup * Inline react-material-symbols package Package is seemingly not maintained any more and doesn't support React 19. This copies the package source into `design-system`, makes the necessary changes for 19 and export it for others to use. * Fix missing awaits * Disable modal exit animations Enabling modal exit animations via isExiting prop is causing modals to be rendered in "hidden" state and never unmount. Seems to be an issue with react-aria-components, see https://github.com/adobe/react-spectrum/issues/7563. Can probably be fixed by rewriting to a solution similar to https://react-spectrum.adobe.com/react-aria/examples/framer-modal-sheet.html * Remove unstable cache implementation and use in memory cache locally * Fix ref type in SelectFilter * Use cloneElement to add key prop to element Approved-by: Linus Flood
71 lines
2.3 KiB
TypeScript
71 lines
2.3 KiB
TypeScript
import { notFound } from "next/navigation"
|
|
|
|
import { GetCurrentBlockPage } from "@/lib/graphql/Query/Current/CurrentBlockPage.graphql"
|
|
import { GetCurrentBlockPageTrackingData } from "@/lib/graphql/Query/Current/CurrentBlockPageTrackingData.graphql"
|
|
import { request } from "@/lib/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()
|
|
}
|
|
}
|