From 9d05eefd560ed2d03e9ec86e5ed5de84b47f8457 Mon Sep 17 00:00:00 2001 From: Christel Westerberg Date: Thu, 8 Feb 2024 16:16:04 +0100 Subject: [PATCH] feat: init live preview sdk --- .env.example => .env.local.example | 2 + .../current-content-page/page.tsx | 5 +- .../(live)/current-content-page/template.tsx | 17 +++++ app/[lang]/{ => (live)}/layout.tsx | 4 +- app/[lang]/(preview)/layout.tsx | 65 +++++++++++++++++++ app/[lang]/(preview)/preview/page.tsx | 62 ++++++++++++++++++ app/[lang]/page.tsx | 7 -- env/schema.mjs | 8 ++- lib/graphql/Fragments/Blocks/Hero.graphql | 30 +++++++++ lib/previewRequest.ts | 34 ++++++++++ middleware.ts | 20 +++++- package-lock.json | 38 +++++++++++ package.json | 1 + types/requests/blocks/hero.ts | 24 +++++++ .../utils/{pageLink.ts => pagelink.ts} | 0 15 files changed, 302 insertions(+), 15 deletions(-) rename .env.example => .env.local.example (56%) rename app/[lang]/{ => (live)}/current-content-page/page.tsx (96%) create mode 100644 app/[lang]/(live)/current-content-page/template.tsx rename app/[lang]/{ => (live)}/layout.tsx (97%) create mode 100644 app/[lang]/(preview)/layout.tsx create mode 100644 app/[lang]/(preview)/preview/page.tsx delete mode 100644 app/[lang]/page.tsx create mode 100644 lib/graphql/Fragments/Blocks/Hero.graphql create mode 100644 lib/previewRequest.ts create mode 100644 types/requests/blocks/hero.ts rename types/requests/utils/{pageLink.ts => pagelink.ts} (100%) diff --git a/.env.example b/.env.local.example similarity index 56% rename from .env.example rename to .env.local.example index 3fe666e0d..9ea6c3014 100644 --- a/.env.example +++ b/.env.local.example @@ -2,3 +2,5 @@ CMS_ACCESS_TOKEN="" CMS_API_KEY="" CMS_ENVIRONMENT="development" CMS_URL="https://eu-graphql.contentstack.com/stacks/${CMS_API_KEY}?environment=${CMS_ENVIRONMENT}" +CMS_PREVIEW_URL="graphql-preview.contentstack.com/stacks/${CMS_API_KEY}?environment=${CMS_ENVIRONMENT}"; +CMS_PREVIEW_TOKEN="" \ No newline at end of file diff --git a/app/[lang]/current-content-page/page.tsx b/app/[lang]/(live)/current-content-page/page.tsx similarity index 96% rename from app/[lang]/current-content-page/page.tsx rename to app/[lang]/(live)/current-content-page/page.tsx index dafb03931..7612cdc5a 100644 --- a/app/[lang]/current-content-page/page.tsx +++ b/app/[lang]/(live)/current-content-page/page.tsx @@ -1,7 +1,7 @@ import { notFound } from "next/navigation" -import { request } from "@/lib/request" -import { GetCurrentBlockPage } from "@/lib/graphql/Query/CurrentBlockPage.graphql" +import { request } from "@/lib/request"; +import { GetCurrentBlockPage } from "@/lib/graphql/Query/CurrentBlockPage.graphql"; import Aside from "@/components/Current/Aside" import Blocks from "@/components/Current/Blocks" @@ -19,6 +19,7 @@ export default async function CurrentContentPage({ searchParams, }: PageArgs) { try { + console.log({ searchParams }); if (!searchParams.uri) { throw new Error("Bad URI") } diff --git a/app/[lang]/(live)/current-content-page/template.tsx b/app/[lang]/(live)/current-content-page/template.tsx new file mode 100644 index 000000000..c451c9d9f --- /dev/null +++ b/app/[lang]/(live)/current-content-page/template.tsx @@ -0,0 +1,17 @@ +import Header from "@/components/Current/Header"; + +import type { LangParams, PageArgs, UriParams } from "@/types/params"; + +export default function CurrentContentpageTemplate({ children, params, searchParams }: React.PropsWithChildren>) { + // if (!searchParams.uri) { + // throw new Error("Bad URI"); + // } + + return ( + <> + {/*
*/} + {children} + + ); +} + diff --git a/app/[lang]/layout.tsx b/app/[lang]/(live)/layout.tsx similarity index 97% rename from app/[lang]/layout.tsx rename to app/[lang]/(live)/layout.tsx index e8a85080f..797078b88 100644 --- a/app/[lang]/layout.tsx +++ b/app/[lang]/(live)/layout.tsx @@ -1,5 +1,5 @@ -import "../core.css"; -import "../scandic.css"; +import "../../core.css"; +import "../../scandic.css"; import Footer from "@/components/Current/Footer"; import LangPopup from "@/components/Current/LangPopup"; diff --git a/app/[lang]/(preview)/layout.tsx b/app/[lang]/(preview)/layout.tsx new file mode 100644 index 000000000..7d3d7086f --- /dev/null +++ b/app/[lang]/(preview)/layout.tsx @@ -0,0 +1,65 @@ +import "../../core.css"; +import "../../scandic.css"; + +import Footer from "@/components/Current/Footer"; +import LangPopup from "@/components/Current/LangPopup"; +import Script from "next/script"; +import SkipToMainContent from "@/components/SkipToMainContent"; + +import type { Metadata } from "next"; +import type { LangParams, LayoutArgs } from "@/types/params"; +import ContentstackLivePreview from "@contentstack/live-preview-utils"; + +export const metadata: Metadata = { + description: "New web", + title: "Scandic Hotels New Web", +}; + +ContentstackLivePreview.init(); + +export default function RootLayout({ + children, + params, +}: React.PropsWithChildren>) { + return ( + + +