Skip to content

Commit b6d719c

Browse files
committed
Deduplicate the current articles page from onward containers and story packages.
1 parent 095e662 commit b6d719c

14 files changed

+72
-29
lines changed

dotcom-rendering/src/components/FetchOnwardsData.importable.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { css } from '@emotion/react';
22
import { isNonNullable } from '@guardian/libs';
33
import { ArticleDesign, type ArticleFormat } from '../lib/articleFormat';
4-
import { decideTrail } from '../lib/decideTrail';
4+
import { decideTrail, dedupeTrail } from '../lib/decideTrail';
55
import { useApi } from '../lib/useApi';
66
import { addDiscussionIds } from '../lib/useCommentCount';
77
import { palette } from '../palette';
@@ -20,6 +20,7 @@ type Props = {
2020
absoluteServerTimes: boolean;
2121
renderingTarget: RenderingTarget;
2222
isAdFreeUser: boolean;
23+
articleURL: string;
2324
};
2425

2526
type OnwardsResponse = {
@@ -40,9 +41,11 @@ const buildTrails = (
4041
trails: FETrailType[],
4142
trailLimit: number,
4243
isAdFreeUser: boolean,
44+
articleURL: string,
4345
): TrailType[] => {
4446
return trails
4547
.filter((trailType) => !(isTrailPaidContent(trailType) && isAdFreeUser))
48+
.filter((trailType) => dedupeTrail(trailType, articleURL))
4649
.slice(0, trailLimit)
4750
.map(decideTrail);
4851
};
@@ -56,6 +59,7 @@ export const FetchOnwardsData = ({
5659
absoluteServerTimes,
5760
renderingTarget,
5861
isAdFreeUser,
62+
articleURL,
5963
}: Props) => {
6064
const { data, error } = useApi<OnwardsResponse>(url);
6165

@@ -81,11 +85,13 @@ export const FetchOnwardsData = ({
8185
.filter(isNonNullable),
8286
);
8387

88+
const trails = buildTrails(data.trails, limit, isAdFreeUser, articleURL);
89+
8490
return (
8591
<div css={minHeight}>
8692
<Carousel
8793
heading={data.heading || data.displayname} // Sometimes the api returns heading as 'displayName'
88-
trails={buildTrails(data.trails, limit, isAdFreeUser)}
94+
trails={trails}
8995
description={data.description}
9096
onwardsSource={onwardsSource}
9197
format={format}

dotcom-rendering/src/components/Island.test.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,7 @@ describe('Island: server-side rendering', () => {
217217
discussionApiUrl=""
218218
absoluteServerTimes={true}
219219
renderingTarget="Web"
220+
webURL={''}
220221
/>
221222
</WithConfig>,
222223
),

dotcom-rendering/src/components/OnwardsUpper.importable.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,7 @@ type Props = {
186186
discussionApiUrl: string;
187187
absoluteServerTimes: boolean;
188188
renderingTarget: RenderingTarget;
189+
webURL: string;
189190
};
190191

191192
/**
@@ -221,6 +222,7 @@ export const OnwardsUpper = ({
221222
discussionApiUrl,
222223
absoluteServerTimes,
223224
renderingTarget,
225+
webURL,
224226
}: Props) => {
225227
const isHorizontalScrollingSupported = useIsHorizontalScrollingSupported();
226228

@@ -325,6 +327,7 @@ export const OnwardsUpper = ({
325327
absoluteServerTimes={absoluteServerTimes}
326328
renderingTarget={renderingTarget}
327329
isAdFreeUser={isAdFreeUser}
330+
articleURL={webURL}
328331
/>
329332
</Section>
330333
)}
@@ -342,6 +345,7 @@ export const OnwardsUpper = ({
342345
absoluteServerTimes={absoluteServerTimes}
343346
renderingTarget={renderingTarget}
344347
isAdFreeUser={isAdFreeUser}
348+
articleURL={webURL}
345349
/>
346350
</Section>
347351
)}

dotcom-rendering/src/layouts/AudioLayout.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ import { type ArticleFormat, ArticleSpecial } from '../lib/articleFormat';
3838
import { getAudioData } from '../lib/audio-data';
3939
import { canRenderAds } from '../lib/canRenderAds';
4040
import { getContributionsServiceUrl } from '../lib/contributions';
41-
import { decideTrail } from '../lib/decideTrail';
41+
import { decideStoryPackageTrails } from '../lib/decideTrail';
4242
import { parse } from '../lib/slot-machine-flags';
4343
import type { NavType } from '../model/extract-nav';
4444
import { palette as themePalette } from '../palette';
@@ -484,8 +484,9 @@ export const AudioLayout = (props: WebProps) => {
484484
<Island priority="feature" defer={{ until: 'visible' }}>
485485
<Carousel
486486
heading={article.storyPackage.heading}
487-
trails={article.storyPackage.trails.map(
488-
decideTrail,
487+
trails={decideStoryPackageTrails(
488+
article.storyPackage.trails,
489+
article.webURL,
489490
)}
490491
onwardsSource="more-on-this-story"
491492
format={format}
@@ -519,6 +520,7 @@ export const AudioLayout = (props: WebProps) => {
519520
discussionApiUrl={article.config.discussionApiUrl}
520521
absoluteServerTimes={absoluteServerTimes}
521522
renderingTarget={renderingTarget}
523+
webURL={article.webURL}
522524
/>
523525
</Island>
524526
{showComments && (

dotcom-rendering/src/layouts/CommentLayout.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ import {
4545
import { getSoleContributor } from '../lib/byline';
4646
import { canRenderAds } from '../lib/canRenderAds';
4747
import { getContributionsServiceUrl } from '../lib/contributions';
48-
import { decideTrail } from '../lib/decideTrail';
48+
import { decideStoryPackageTrails } from '../lib/decideTrail';
4949
import { parse } from '../lib/slot-machine-flags';
5050
import type { NavType } from '../model/extract-nav';
5151
import { palette as themePalette } from '../palette';
@@ -725,8 +725,9 @@ export const CommentLayout = (props: WebProps | AppsProps) => {
725725
<Island priority="feature" defer={{ until: 'visible' }}>
726726
<Carousel
727727
heading={article.storyPackage.heading}
728-
trails={article.storyPackage.trails.map(
729-
decideTrail,
728+
trails={decideStoryPackageTrails(
729+
article.storyPackage.trails,
730+
article.webURL,
730731
)}
731732
onwardsSource="more-on-this-story"
732733
format={format}
@@ -760,6 +761,7 @@ export const CommentLayout = (props: WebProps | AppsProps) => {
760761
discussionApiUrl={article.config.discussionApiUrl}
761762
absoluteServerTimes={absoluteServerTimes}
762763
renderingTarget={renderingTarget}
764+
webURL={article.webURL}
763765
/>
764766
</Island>
765767

dotcom-rendering/src/layouts/GalleryLayout.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,7 @@ export const GalleryLayout = (props: WebProps | AppProps) => {
339339
discussionApiUrl={frontendData.config.discussionApiUrl}
340340
absoluteServerTimes={absoluteServerTimes}
341341
renderingTarget={renderingTarget}
342+
webURL={frontendData.webURL}
342343
/>
343344
</Island>
344345

dotcom-rendering/src/layouts/ImmersiveLayout.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ import {
5050
import { canRenderAds } from '../lib/canRenderAds';
5151
import { getContributionsServiceUrl } from '../lib/contributions';
5252
import { decideMainMediaCaption } from '../lib/decide-caption';
53-
import { decideTrail } from '../lib/decideTrail';
53+
import { decideStoryPackageTrails } from '../lib/decideTrail';
5454
import { getZIndex } from '../lib/getZIndex';
5555
import { LABS_HEADER_HEIGHT } from '../lib/labs-constants';
5656
import { parse } from '../lib/slot-machine-flags';
@@ -806,8 +806,9 @@ export const ImmersiveLayout = (props: WebProps | AppProps) => {
806806
>
807807
<Carousel
808808
heading={article.storyPackage.heading}
809-
trails={article.storyPackage.trails.map(
810-
decideTrail,
809+
trails={decideStoryPackageTrails(
810+
article.storyPackage.trails,
811+
article.webURL,
811812
)}
812813
onwardsSource="more-on-this-story"
813814
format={format}
@@ -841,6 +842,7 @@ export const ImmersiveLayout = (props: WebProps | AppProps) => {
841842
discussionApiUrl={article.config.discussionApiUrl}
842843
absoluteServerTimes={absoluteServerTimes}
843844
renderingTarget={renderingTarget}
845+
webURL={article.webURL}
844846
/>
845847
</Island>
846848

dotcom-rendering/src/layouts/InteractiveLayout.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ import { SubNav } from '../components/SubNav.importable';
4343
import { type ArticleFormat, ArticleSpecial } from '../lib/articleFormat';
4444
import { canRenderAds } from '../lib/canRenderAds';
4545
import { getContributionsServiceUrl } from '../lib/contributions';
46-
import { decideTrail } from '../lib/decideTrail';
46+
import { decideStoryPackageTrails } from '../lib/decideTrail';
4747
import type { NavType } from '../model/extract-nav';
4848
import { palette as themePalette } from '../palette';
4949
import type { ArticleDeprecated } from '../types/article';
@@ -650,8 +650,9 @@ export const InteractiveLayout = (props: WebProps | AppsProps) => {
650650
<Island priority="feature" defer={{ until: 'visible' }}>
651651
<Carousel
652652
heading={article.storyPackage.heading}
653-
trails={article.storyPackage.trails.map(
654-
decideTrail,
653+
trails={decideStoryPackageTrails(
654+
article.storyPackage.trails,
655+
article.webURL,
655656
)}
656657
onwardsSource="more-on-this-story"
657658
format={format}
@@ -685,6 +686,7 @@ export const InteractiveLayout = (props: WebProps | AppsProps) => {
685686
discussionApiUrl={article.config.discussionApiUrl}
686687
absoluteServerTimes={absoluteServerTimes}
687688
renderingTarget={renderingTarget}
689+
webURL={article.webURL}
688690
/>
689691
</Island>
690692

dotcom-rendering/src/layouts/LiveLayout.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ import { SubNav } from '../components/SubNav.importable';
5151
import { ArticleDesign, type ArticleFormat } from '../lib/articleFormat';
5252
import { canRenderAds } from '../lib/canRenderAds';
5353
import { getContributionsServiceUrl } from '../lib/contributions';
54-
import { decideTrail } from '../lib/decideTrail';
54+
import { decideStoryPackageTrails } from '../lib/decideTrail';
5555
import { getZIndex } from '../lib/getZIndex';
5656
import type { NavType } from '../model/extract-nav';
5757
import { palette as themePalette } from '../palette';
@@ -970,8 +970,9 @@ export const LiveLayout = (props: WebProps | AppsProps) => {
970970
>
971971
<Carousel
972972
heading={article.storyPackage.heading}
973-
trails={article.storyPackage.trails.map(
974-
decideTrail,
973+
trails={decideStoryPackageTrails(
974+
article.storyPackage.trails,
975+
article.webURL,
975976
)}
976977
onwardsSource="more-on-this-story"
977978
format={format}
@@ -1007,6 +1008,7 @@ export const LiveLayout = (props: WebProps | AppsProps) => {
10071008
discussionApiUrl={article.config.discussionApiUrl}
10081009
absoluteServerTimes={absoluteServerTimes}
10091010
renderingTarget={renderingTarget}
1011+
webURL={article.webURL}
10101012
/>
10111013
</Island>
10121014

dotcom-rendering/src/layouts/NewsletterSignupLayout.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ import { Standfirst } from '../components/Standfirst';
3636
import { ArticleDisplay, type ArticleFormat } from '../lib/articleFormat';
3737
import { canRenderAds } from '../lib/canRenderAds';
3838
import { getContributionsServiceUrl } from '../lib/contributions';
39-
import { decideTrail } from '../lib/decideTrail';
39+
import { decideStoryPackageTrails } from '../lib/decideTrail';
4040
import { isValidUrl } from '../lib/isValidUrl';
4141
import type { NavType } from '../model/extract-nav';
4242
import type { ArticleDeprecated } from '../types/article';
@@ -429,8 +429,9 @@ export const NewsletterSignupLayout = ({
429429
<Island priority="feature" defer={{ until: 'visible' }}>
430430
<Carousel
431431
heading={article.storyPackage.heading}
432-
trails={article.storyPackage.trails.map(
433-
decideTrail,
432+
trails={decideStoryPackageTrails(
433+
article.storyPackage.trails,
434+
article.webURL,
434435
)}
435436
onwardsSource="more-on-this-story"
436437
format={format}
@@ -464,6 +465,7 @@ export const NewsletterSignupLayout = ({
464465
discussionApiUrl={article.config.discussionApiUrl}
465466
absoluteServerTimes={absoluteServerTimes}
466467
renderingTarget={renderingTarget}
468+
webURL={article.webURL}
467469
/>
468470
</Island>
469471
</main>

0 commit comments

Comments
 (0)