From 18447939ffdbcecc86c07a098c0109c878b4f34b Mon Sep 17 00:00:00 2001 From: Daniel Clifton <110032454+DanielCliftonGuardian@users.noreply.github.com> Date: Fri, 6 Oct 2023 11:13:29 +0100 Subject: [PATCH] Add `CommentLayout` for apps (#9026) * commentlayout for apps * add priority to islands --- .../scripts/gen-stories/get-stories.js | 6 + .../src/layouts/CommentLayout.tsx | 404 ++++++++++-------- dotcom-rendering/src/layouts/DecideLayout.tsx | 18 +- .../stories/generated/Layout.stories.tsx | 13 + 4 files changed, 264 insertions(+), 177 deletions(-) diff --git a/dotcom-rendering/scripts/gen-stories/get-stories.js b/dotcom-rendering/scripts/gen-stories/get-stories.js index 23da4424c2c..b5660e95302 100644 --- a/dotcom-rendering/scripts/gen-stories/get-stories.js +++ b/dotcom-rendering/scripts/gen-stories/get-stories.js @@ -165,6 +165,12 @@ const testLayoutFormats = [ theme: 'OpinionPillar', renderingTarget: 'Web', }, + { + display: 'Standard', + design: 'Comment', + theme: 'NewsPillar', + renderingTarget: 'Apps', + }, ]; const generateLayoutStories = () => { diff --git a/dotcom-rendering/src/layouts/CommentLayout.tsx b/dotcom-rendering/src/layouts/CommentLayout.tsx index e2dcfe8db37..e8b108c8825 100644 --- a/dotcom-rendering/src/layouts/CommentLayout.tsx +++ b/dotcom-rendering/src/layouts/CommentLayout.tsx @@ -10,7 +10,9 @@ import { until, } from '@guardian/source-foundations'; import { StraightLines } from '@guardian/source-react-components-development-kitchen'; +import { AdPortals } from '../components/AdPortals.importable'; import { AdSlot, MobileStickyContainer } from '../components/AdSlot.web'; +import { AppsFooter } from '../components/AppsFooter.importable'; import { ArticleBody } from '../components/ArticleBody'; import { ArticleContainer } from '../components/ArticleContainer'; import { ArticleHeadline } from '../components/ArticleHeadline'; @@ -18,7 +20,6 @@ import { ArticleMeta } from '../components/ArticleMeta'; import { ArticleTitle } from '../components/ArticleTitle'; import { Border } from '../components/Border'; import { Carousel } from '../components/Carousel.importable'; -import { useConfig } from '../components/ConfigContext'; import { ContributorAvatar } from '../components/ContributorAvatar'; import { DiscussionLayout } from '../components/DiscussionLayout'; import { Footer } from '../components/Footer'; @@ -48,6 +49,7 @@ import { decideTrail } from '../lib/decideTrail'; import { parse } from '../lib/slot-machine-flags'; import type { NavType } from '../model/extract-nav'; import type { DCRArticle } from '../types/frontend'; +import type { RenderingTarget } from '../types/renderingTarget'; import { BannerWrapper, SendToBack, Stuck } from './lib/stickiness'; const StandardGrid = ({ @@ -258,13 +260,23 @@ const mainMediaWrapper = css` position: relative; `; -interface Props { +interface CommonProps { article: DCRArticle; - NAV: NavType; format: ArticleFormat; + renderingTarget: RenderingTarget; +} + +interface WebProps extends CommonProps { + NAV: NavType; + renderingTarget: 'Web'; } -export const CommentLayout = ({ article, NAV, format }: Props) => { +interface AppsProps extends CommonProps { + renderingTarget: 'Apps'; +} + +export const CommentLayout = (props: WebProps | AppsProps) => { + const { article, format, renderingTarget } = props; const { config: { isPaidContent, host }, } = article; @@ -290,130 +302,141 @@ export const CommentLayout = ({ article, NAV, format }: Props) => { const contributionsServiceUrl = getContributionsServiceUrl(article); - const renderAds = canRenderAds(article); - - const { renderingTarget } = useConfig(); + const renderAds = renderingTarget === 'Web' && canRenderAds(article); return ( <> -
+ )}