Skip to content

Commit aaca9f0

Browse files
authored
Merge branch 'main' into sub-1
2 parents 07fbd2b + e1eef0e commit aaca9f0

File tree

3 files changed

+32
-4
lines changed

3 files changed

+32
-4
lines changed

dotcom-rendering/src/components/MainMediaGallery.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { LightboxLink } from './LightboxLink';
1212
import { Picture } from './Picture';
1313

1414
type Props = {
15-
mainMedia: ImageBlockElement;
15+
mainMedia?: ImageBlockElement;
1616
format: ArticleFormat;
1717
renderingTarget: RenderingTarget;
1818
};
@@ -32,6 +32,10 @@ export const MainMediaGallery = ({
3232
format,
3333
renderingTarget,
3434
}: Props) => {
35+
// This is to support some galleries created in 2007 where mainMedia is missing
36+
if (isUndefined(mainMedia)) {
37+
return <div css={styles}></div>;
38+
}
3539
const asset = getImage(mainMedia.media.allImages);
3640

3741
if (asset === undefined) {

dotcom-rendering/src/layouts/GalleryLayout.stories.tsx

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,3 +105,26 @@ export const Web = {
105105
],
106106
},
107107
} satisfies Story;
108+
109+
export const WebWithoutMainMedia = {
110+
args: {
111+
renderingTarget: 'Web',
112+
NAV: {
113+
...extractNAV(webArticle.frontendData.nav),
114+
selectedPillar: getCurrentPillar(webArticle.frontendData),
115+
},
116+
gallery: {
117+
...addBrandingAndAffiliateDisclaimer(webArticle),
118+
mainMedia: undefined,
119+
},
120+
},
121+
parameters: {
122+
formats: [
123+
{
124+
design: webArticle.design,
125+
display: webArticle.display,
126+
theme: webArticle.theme,
127+
},
128+
],
129+
},
130+
} satisfies Story;

dotcom-rendering/src/types/article.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import {
1818
type TableOfContentsItem,
1919
} from '../model/enhanceTableOfContents';
2020
import { enhancePinnedPost } from '../model/pinnedPost';
21+
import { logger } from '../server/lib/logging';
2122
import { parse as parseStoryPackage, type StoryPackage } from '../storyPackage';
2223
import type {
2324
AdPlaceholderBlockElement,
@@ -48,7 +49,7 @@ export type ArticleFields = {
4849
export type Gallery = ArticleFields & {
4950
design: ArticleDesign.Gallery;
5051
bodyElements: (ImageBlockElement | AdPlaceholderBlockElement)[];
51-
mainMedia: ImageBlockElement;
52+
mainMedia?: ImageBlockElement;
5253
};
5354

5455
export type OtherArticles = ArticleFields & {
@@ -60,12 +61,12 @@ export type Article = Gallery | OtherArticles;
6061
export const getGalleryMainMedia = (
6162
mainMediaElements: FEElement[],
6263
trailImage?: ImageBlockElement,
63-
): ImageBlockElement => {
64+
): ImageBlockElement | undefined => {
6465
const mainMedia = mainMediaElements[0];
6566

6667
if (isUndefined(mainMedia)) {
6768
if (isUndefined(trailImage)) {
68-
throw new Error('No main media or trail picture found');
69+
logger.warn('No main media or trail picture found');
6970
}
7071
return trailImage;
7172
}

0 commit comments

Comments
 (0)