From e0774fcb6a9ac382591a95a7aa9c8b313a3f1cd1 Mon Sep 17 00:00:00 2001 From: Joel Varty Date: Tue, 4 Feb 2025 13:53:36 -0500 Subject: [PATCH 1/9] fixes for next 15 --- .eslintrc.json | 10 +- app/403/page.tsx | 10 - app/[...slug]/page.tsx | 68 +- app/api/dynamic-redirect/route.ts | 8 +- app/api/preview/exit/route.ts | 8 +- app/api/preview/route.ts | 4 +- app/api/revalidate/route.ts | 2 +- app/{[...slug] => }/error.tsx | 20 +- app/forbidden.tsx | 11 + app/layout.tsx | 27 +- app/{[...slug] => }/not-found.tsx | 4 + app/page.tsx | 10 +- components/RightLeftContent.tsx | 2 +- .../EventListing/EventListing.server.tsx | 4 +- .../agility-components/FeatureBlocks.tsx | 4 +- .../GartnerPeerInsightsBar.tsx | 4 +- .../GatedDownload/GatedDownload.client.tsx | 2 +- .../LogoListing/LogoListing.client.tsx | 2 +- .../LogoListingModule.client.tsx | 4 +- .../LogoListingModuleCopy.client.tsx | 4 +- .../PartnerLogoListing.client.tsx | 2 +- .../PostsListing/PostsListing.server.tsx | 4 +- .../ResourceDetails/DownloadForm.client.tsx | 2 +- .../RightORLeftContentModule.tsx | 2 +- .../agility-components/RightOrLeftSteps.tsx | 2 +- .../StarterTemplateDetails.tsx | 2 +- .../SubmissionForm/SubmissionForm.client.tsx | 2 +- .../TriplePanelComparisonModule.tsx | 6 +- .../TwoPanelFeatureComparison.client.tsx | 4 +- components/common/GuideWithLinks.tsx | 4 +- components/common/footer/SiteFooter.tsx | 7 +- components/common/header/MenuItemOutput.tsx | 10 +- components/common/header/SiteHeader.tsx | 4 +- globals.css | 79 + lib/cms-content/checkRedirect.ts | 4 +- lib/cms-content/resolveAgilityMetaData.ts | 1 + ...AgilityContext.ts => getAgilityContext.ts} | 9 +- lib/cms/getAgilityGraphQLClient.ts | 9 +- lib/cms/getAgilityPage.ts | 5 +- lib/cms/getAgilitySDK.ts | 7 +- lib/cms/getContentItem.ts | 2 +- lib/cms/getContentList.ts | 2 +- lib/cms/getSitemapFlat.ts | 2 +- lib/cms/getSitemapNested.ts | 2 +- next-env.d.ts | 2 +- next.config.js | 11 +- package.json | 26 +- yarn.lock | 1848 +++++++++++++---- 48 files changed, 1668 insertions(+), 600 deletions(-) delete mode 100644 app/403/page.tsx rename app/{[...slug] => }/error.tsx (64%) create mode 100644 app/forbidden.tsx rename app/{[...slug] => }/not-found.tsx (77%) create mode 100644 globals.css rename lib/cms/{useAgilityContext.ts => getAgilityContext.ts} (72%) diff --git a/.eslintrc.json b/.eslintrc.json index bffb357..fd77ce1 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,3 +1,9 @@ { - "extends": "next/core-web-vitals" -} + "extends": "next/core-web-vitals", + "rules": { + "@next/next/no-html-link-for-pages": [ + "warn", + "app/" + ] + } +} \ No newline at end of file diff --git a/app/403/page.tsx b/app/403/page.tsx deleted file mode 100644 index ead98aa..0000000 --- a/app/403/page.tsx +++ /dev/null @@ -1,10 +0,0 @@ -export default async function Page({ params, searchParams }: any) { - return ( -
-
-

Access Forbidden

-

You do not have access to this page.

-
-
- ) -} diff --git a/app/[...slug]/page.tsx b/app/[...slug]/page.tsx index 08fe230..b933269 100644 --- a/app/[...slug]/page.tsx +++ b/app/[...slug]/page.tsx @@ -1,45 +1,30 @@ import { getPageTemplate } from "components/agility-layouts" -import { PageProps, getAgilityPage } from "lib/cms/getAgilityPage" -import { getAgilityContext } from "lib/cms/useAgilityContext" +import { getAgilityPage } from "lib/cms/getAgilityPage" import { Metadata, ResolvingMetadata } from "next" import { resolveAgilityMetaData } from "lib/cms-content/resolveAgilityMetaData" import { notFound } from "next/navigation" import InlineError from "components/common/InlineError" -import { cacheConfig } from "lib/cms/cacheConfig" import { DateTime } from "luxon" import agilitySDK from "@agility/content-fetch" import { SitemapNode } from "lib/types/SitemapNode" import { getRichSnippet } from "lib/cms-content/getRichSnippet" +import { getAgilityContext } from "lib/cms/getAgilityContext" +import Link from 'next/link' -export const revalidate = cacheConfig.pathRevalidateDuration +export const revalidate = 60 //cacheConfig.pathRevalidateDuration export const dynamicParams = true -interface NestedSitemapNode { - title: string - name: string - pageID: number - menuText: string - visible: { - menu: boolean - sitemap: boolean - } - path: string - redirect: string | null - isFolder: boolean - contentID?: number - children?: NestedSitemapNode[] -} /** * Generate the list of pages that we want to generate a build time * @returns */ export async function generateStaticParams() { - - + //HACK + return [] console.log("*** generateStaticParams ***") const isDevelopmentMode = process.env.NODE_ENV === "development" const isPreview = isDevelopmentMode @@ -88,24 +73,43 @@ export async function generateStaticParams() { return paths } +type MetaDataProps = { + params: Promise<{ slug: string[] }> + searchParams: Promise<{ [key: string]: string | string[] | undefined }> +} + /** * Generate metadata for this page */ export async function generateMetadata( - { params, searchParams }: PageProps, + { params, searchParams }: MetaDataProps, parent: ResolvingMetadata ): Promise { + + const actualParams = await params; // read route params - const { locale, sitemap, isDevelopmentMode, isPreview } = getAgilityContext() + const { locale, sitemap, isDevelopmentMode, isPreview } = await getAgilityContext() - const agilityData = await getAgilityPage({ params }) + const agilityData = await getAgilityPage({ params: actualParams }) if (!agilityData.page) return {} return await resolveAgilityMetaData({ agilityData, locale, sitemap, isDevelopmentMode, isPreview, parent }) } -export default async function Page({ params }: PageProps) { - const agilityData = await getAgilityPage({ params }) +export default async function Page({ + params, + searchParams, +}: { + params: Promise<{ slug: string[] }> + searchParams: Promise<{ [key: string]: string | string[] | undefined }> +}) { + + + const actualParams = await params + + const agilityData = await getAgilityPage({ + params: actualParams + }) //if the page is not found... if (!agilityData.page) { @@ -118,20 +122,20 @@ export default async function Page({ params }: PageProps) { const jsonLD = getRichSnippet(agilityData) return ( -
{jsonLD && ( //include the rich snipped if we have one - diff --git a/components/common/footer/FooterSubscribe.tsx b/components/common/footer/FooterSubscribe.tsx index 8dc4adc..39f2683 100644 --- a/components/common/footer/FooterSubscribe.tsx +++ b/components/common/footer/FooterSubscribe.tsx @@ -32,7 +32,9 @@ export const FooterSubscribe = ({