Skip to content

Commit 4c12722

Browse files
authored
Use appropriate customization settings for sites (GitbookIO#2279)
1 parent ac124a7 commit 4c12722

File tree

8 files changed

+79
-27
lines changed

8 files changed

+79
-27
lines changed

src/app/(space)/(content)/[[...pathname]]/not-found.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
import { getSpaceLanguage, t } from '@/intl/server';
2-
import { getSpaceLayoutData } from '@/lib/api';
2+
import { getSiteSpaceLayoutData, getSpaceLayoutData } from '@/lib/api';
33
import { tcls } from '@/lib/tailwind';
44

55
import { getContentPointer } from '../../fetch';
66

77
export default async function NotFound() {
8-
const { customization } = await getSpaceLayoutData(getContentPointer().spaceId);
8+
const pointer = getContentPointer();
9+
const { customization } = await ('siteId' in pointer
10+
? getSiteSpaceLayoutData(pointer)
11+
: getSpaceLayoutData(pointer.spaceId));
912

1013
const language = getSpaceLanguage(customization);
1114

src/app/(space)/(core)/~gitbook/icon/route.tsx

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,13 @@ import { NextRequest } from 'next/server';
55
import React from 'react';
66

77
import { getContentPointer } from '@/app/(space)/fetch';
8-
import { getCollection, getSpace, getSpaceCustomization } from '@/lib/api';
8+
import {
9+
getCollection,
10+
getSite,
11+
getSiteSpaceCustomization,
12+
getSpace,
13+
getSpaceCustomization,
14+
} from '@/lib/api';
915
import { getEmojiForCode } from '@/lib/emojis';
1016
import { tcls } from '@/lib/tailwind';
1117

@@ -35,17 +41,20 @@ export async function GET(req: NextRequest) {
3541
const options = getOptions(req.url);
3642
const size = SIZES[options.size];
3743

38-
const spaceId = getContentPointer().spaceId;
44+
const pointer = getContentPointer();
45+
const spaceId = pointer.spaceId;
3946

4047
const [space, customization] = await Promise.all([
4148
getSpace(spaceId),
42-
getSpaceCustomization(spaceId),
49+
'siteId' in pointer ? getSiteSpaceCustomization(pointer) : getSpaceCustomization(spaceId),
4350
]);
44-
const collection =
45-
space.visibility === ContentVisibility.InCollection && space.parent
46-
? await getCollection(space.parent)
47-
: null;
48-
const contentTitle = collection?.title ?? customization.title ?? space.title;
51+
const parent =
52+
'siteId' in pointer
53+
? await getSite(pointer.organizationId, pointer.siteId)
54+
: space.visibility === ContentVisibility.InCollection && space.parent
55+
? await getCollection(space.parent)
56+
: null;
57+
const contentTitle = parent?.title ?? customization.title ?? space.title;
4958

5059
return new ImageResponse(
5160
(

src/app/(space)/(core)/~gitbook/pdf/page.tsx

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
Revision,
55
RevisionPageDocument,
66
RevisionPageGroup,
7+
SiteCustomizationSettings,
78
Space,
89
} from '@gitbook/api';
910
import { Metadata } from 'next';
@@ -16,7 +17,13 @@ import { TrademarkLink } from '@/components/TableOfContents/Trademark';
1617
import { PolymorphicComponentProp } from '@/components/utils/types';
1718
import { getSpaceLanguage } from '@/intl/server';
1819
import { tString } from '@/intl/translate';
19-
import { getDocument, getSpace, getSpaceCustomization, getSpaceContentData } from '@/lib/api';
20+
import {
21+
getDocument,
22+
getSpace,
23+
getSpaceCustomization,
24+
getSpaceContentData,
25+
getSiteSpaceCustomization,
26+
} from '@/lib/api';
2027
import { pagePDFContainerId, PageHrefContext, absoluteHref } from '@/lib/links';
2128
import { resolvePageId } from '@/lib/pages';
2229
import { ContentRefContext, resolveContentRef } from '@/lib/references';
@@ -35,7 +42,9 @@ export async function generateMetadata(): Promise<Metadata> {
3542
const contentPointer = getContentPointer();
3643
const [space, customization] = await Promise.all([
3744
getSpace(contentPointer.spaceId),
38-
getSpaceCustomization(contentPointer.spaceId),
45+
'siteId' in contentPointer
46+
? getSiteSpaceCustomization(contentPointer)
47+
: getSpaceCustomization(contentPointer.spaceId),
3948
]);
4049

4150
return {
@@ -59,7 +68,9 @@ export default async function PDFHTMLOutput(props: { searchParams: { [key: strin
5968

6069
// Load the content,
6170
const [customization, { space, contentTarget, pages: rootPages }] = await Promise.all([
62-
getSpaceCustomization(contentPointer.spaceId),
71+
'siteId' in contentPointer
72+
? getSiteSpaceCustomization(contentPointer)
73+
: getSpaceCustomization(contentPointer.spaceId),
6374
getSpaceContentData(contentPointer),
6475
]);
6576
const language = getSpaceLanguage(customization);
@@ -172,7 +183,10 @@ export default async function PDFHTMLOutput(props: { searchParams: { [key: strin
172183
);
173184
}
174185

175-
async function PDFSpaceIntro(props: { space: Space; customization: CustomizationSettings }) {
186+
async function PDFSpaceIntro(props: {
187+
space: Space;
188+
customization: CustomizationSettings | SiteCustomizationSettings;
189+
}) {
176190
const { space, customization } = props;
177191

178192
return (

src/app/(space)/fetch.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,11 +95,15 @@ export async function fetchSpaceData() {
9595
*/
9696
export async function fetchPageData(params: PagePathParams | PageIdParams) {
9797
const content = getContentPointer();
98-
const { space, contentTarget, pages, customization, scripts } = await getSpaceData(content);
98+
const { space, contentTarget, pages, customization, scripts } = await ('siteId' in content
99+
? getSiteSpaceData(content)
100+
: getSpaceData(content));
99101

100102
const page = await resolvePage(contentTarget, pages, params);
101-
const [collection, document] = await Promise.all([
102-
fetchParentCollection(space),
103+
const [parent, document] = await Promise.all([
104+
'siteId' in content
105+
? fetchParentSite(content.organizationId, content.siteId)
106+
: fetchParentCollection(space),
103107
page?.page.documentId ? getDocument(space.id, page.page.documentId) : null,
104108
]);
105109

@@ -112,7 +116,7 @@ export async function fetchPageData(params: PagePathParams | PageIdParams) {
112116
scripts,
113117
ancestors: [],
114118
...page,
115-
...collection,
119+
...parent,
116120
document,
117121
};
118122
}

src/app/(space)/layout.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,15 @@ import {
33
CustomizationCorners,
44
CustomizationHeaderPreset,
55
CustomizationSettings,
6+
SiteCustomizationSettings,
67
} from '@gitbook/api';
78
import assertNever from 'assert-never';
89
import colors from 'tailwindcss/colors';
910

1011
import { emojiFontClassName } from '@/components/primitives';
1112
import { fonts, ibmPlexMono } from '@/fonts';
1213
import { getSpaceLanguage } from '@/intl/server';
13-
import { getSpaceLayoutData } from '@/lib/api';
14+
import { getSiteSpaceLayoutData, getSpaceLayoutData } from '@/lib/api';
1415
import { hexToRgb, shadesOfColor } from '@/lib/colors';
1516
import { tcls } from '@/lib/tailwind';
1617

@@ -25,7 +26,10 @@ import { getContentPointer } from './fetch';
2526
export default async function SpaceRootLayout(props: { children: React.ReactNode }) {
2627
const { children } = props;
2728

28-
const { customization } = await getSpaceLayoutData(getContentPointer().spaceId);
29+
const pointer = getContentPointer();
30+
const { customization } = await ('siteId' in pointer
31+
? getSiteSpaceLayoutData(pointer)
32+
: getSpaceLayoutData(pointer.spaceId));
2933
const headerTheme = generateHeaderTheme(customization);
3034
const language = getSpaceLanguage(customization);
3135

@@ -120,7 +124,7 @@ function generateColorVariable(name: string, color: ColorInput) {
120124
.join('\n');
121125
}
122126

123-
function generateHeaderTheme(customization: CustomizationSettings): {
127+
function generateHeaderTheme(customization: CustomizationSettings | SiteCustomizationSettings): {
124128
backgroundColor: { light: ColorInput; dark: ColorInput };
125129
linkColor: { light: ColorInput; dark: ColorInput };
126130
} {

src/components/PageAside/PageAside.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,13 @@ import { Menu } from '@geist-ui/icons';
22
import DownloadCloud from '@geist-ui/icons/downloadCloud';
33
import Github from '@geist-ui/icons/github';
44
import Gitlab from '@geist-ui/icons/gitlab';
5-
import { CustomizationSettings, JSONDocument, RevisionPageDocument, Space } from '@gitbook/api';
5+
import {
6+
CustomizationSettings,
7+
JSONDocument,
8+
RevisionPageDocument,
9+
SiteCustomizationSettings,
10+
Space,
11+
} from '@gitbook/api';
612
import React from 'react';
713
import urlJoin from 'url-join';
814

@@ -21,7 +27,7 @@ import { PageFeedbackForm } from '../PageFeedback';
2127
*/
2228
export async function PageAside(props: {
2329
space: Space;
24-
customization: CustomizationSettings;
30+
customization: CustomizationSettings | SiteCustomizationSettings;
2531
page: RevisionPageDocument;
2632
document: JSONDocument | null;
2733
context: ContentRefContext;

src/components/PageBody/PageBody.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
1-
import { CustomizationSettings, JSONDocument, RevisionPageDocument, Space } from '@gitbook/api';
1+
import {
2+
CustomizationSettings,
3+
JSONDocument,
4+
RevisionPageDocument,
5+
SiteCustomizationSettings,
6+
Space,
7+
} from '@gitbook/api';
28
import React from 'react';
39

410
import { getSpaceLanguage } from '@/intl/server';
@@ -20,7 +26,7 @@ import { DateRelative } from '../primitives';
2026
export function PageBody(props: {
2127
space: Space;
2228
contentTarget: ContentTarget;
23-
customization: CustomizationSettings;
29+
customization: CustomizationSettings | SiteCustomizationSettings;
2430
page: RevisionPageDocument;
2531
document: JSONDocument | null;
2632
context: ContentRefContext;

src/components/PageBody/PageFooterNavigation.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
import ChevronLeft from '@geist-ui/icons/chevronLeft';
22
import ChevronRight from '@geist-ui/icons/chevronRight';
3-
import { CustomizationSettings, Revision, RevisionPageDocument, Space } from '@gitbook/api';
3+
import {
4+
CustomizationSettings,
5+
Revision,
6+
RevisionPageDocument,
7+
SiteCustomizationSettings,
8+
Space,
9+
} from '@gitbook/api';
410
import React from 'react';
511

612
import { t, getSpaceLanguage } from '@/intl/server';
@@ -15,7 +21,7 @@ import { Link } from '../primitives';
1521
*/
1622
export function PageFooterNavigation(props: {
1723
space: Space;
18-
customization: CustomizationSettings;
24+
customization: CustomizationSettings | SiteCustomizationSettings;
1925
pages: Revision['pages'];
2026
page: RevisionPageDocument;
2127
}) {

0 commit comments

Comments
 (0)