From 711cf38f9b23a9083bcaa78b17bedcfeda4c9bcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samy=20Pess=C3=A9?= Date: Mon, 23 Jun 2025 18:43:41 +0200 Subject: [PATCH] Use getRevision in getRevisionFile (#3379) --- .changeset/lazy-colts-hammer.md | 5 +++ packages/gitbook-v2/src/lib/data/api.ts | 36 +++++++++---------- packages/gitbook-v2/src/lib/data/types.ts | 1 - .../components/AdminToolbar/AdminToolbar.tsx | 1 - packages/gitbook/src/lib/v1.ts | 2 +- 5 files changed, 22 insertions(+), 23 deletions(-) create mode 100644 .changeset/lazy-colts-hammer.md diff --git a/.changeset/lazy-colts-hammer.md b/.changeset/lazy-colts-hammer.md new file mode 100644 index 000000000..15d855ba2 --- /dev/null +++ b/.changeset/lazy-colts-hammer.md @@ -0,0 +1,5 @@ +--- +"gitbook-v2": patch +--- + +Optimize the fetch of revision files by using only the getRevision cache. diff --git a/packages/gitbook-v2/src/lib/data/api.ts b/packages/gitbook-v2/src/lib/data/api.ts index 8e6535331..7c3b43edb 100644 --- a/packages/gitbook-v2/src/lib/data/api.ts +++ b/packages/gitbook-v2/src/lib/data/api.ts @@ -9,7 +9,7 @@ import { getCacheTag, getComputedContentSourceCacheTags } from '@gitbook/cache-t import { GITBOOK_API_TOKEN, GITBOOK_API_URL, GITBOOK_USER_AGENT } from '@v2/lib/env'; import { unstable_cacheLife as cacheLife, unstable_cacheTag as cacheTag } from 'next/cache'; import { cache } from '../cache'; -import { DataFetcherError, wrapCacheDataFetcherError } from './errors'; +import { DataFetcherError, throwIfDataError, wrapCacheDataFetcherError } from './errors'; import type { GitBookDataFetcher } from './types'; interface DataFetcherInput { @@ -73,7 +73,6 @@ export function createDataFetcher( getRevision(input, { spaceId: params.spaceId, revisionId: params.revisionId, - metadata: params.metadata, }) ); }, @@ -282,10 +281,7 @@ const getChangeRequest = cache( ); const getRevision = cache( - async ( - input: DataFetcherInput, - params: { spaceId: string; revisionId: string; metadata: boolean } - ) => { + async (input: DataFetcherInput, params: { spaceId: string; revisionId: string }) => { 'use cache'; return wrapCacheDataFetcherError(async () => { return trace(`getRevision(${params.spaceId}, ${params.revisionId})`, async () => { @@ -294,7 +290,7 @@ const getRevision = cache( params.spaceId, params.revisionId, { - metadata: params.metadata, + metadata: true, }, { ...noCacheFetchOptions, @@ -340,24 +336,24 @@ const getRevisionFile = cache( input: DataFetcherInput, params: { spaceId: string; revisionId: string; fileId: string } ) => { - 'use cache'; return wrapCacheDataFetcherError(async () => { return trace( `getRevisionFile(${params.spaceId}, ${params.revisionId}, ${params.fileId})`, async () => { - const api = apiClient(input); - const res = await api.spaces.getFileInRevisionById( - params.spaceId, - params.revisionId, - params.fileId, - {}, - { - ...noCacheFetchOptions, - } + const revision = await throwIfDataError( + getRevision(input, { + spaceId: params.spaceId, + revisionId: params.revisionId, + }) ); - cacheTag(...getCacheTagsFromResponse(res)); - cacheLife('max'); - return res.data; + + const file = revision.files.find((file) => file.id === params.fileId); + + if (!file) { + throw new DataFetcherError('File not found', 404); + } + + return file; } ); }); diff --git a/packages/gitbook-v2/src/lib/data/types.ts b/packages/gitbook-v2/src/lib/data/types.ts index 8d987047e..3e88f8a27 100644 --- a/packages/gitbook-v2/src/lib/data/types.ts +++ b/packages/gitbook-v2/src/lib/data/types.ts @@ -67,7 +67,6 @@ export interface GitBookDataFetcher { getRevision(params: { spaceId: string; revisionId: string; - metadata: boolean; }): Promise>; /** diff --git a/packages/gitbook/src/components/AdminToolbar/AdminToolbar.tsx b/packages/gitbook/src/components/AdminToolbar/AdminToolbar.tsx index e180d9fff..11164d9d2 100644 --- a/packages/gitbook/src/components/AdminToolbar/AdminToolbar.tsx +++ b/packages/gitbook/src/components/AdminToolbar/AdminToolbar.tsx @@ -112,7 +112,6 @@ async function RevisionToolbar(props: { context: GitBookSiteContext }) { context.dataFetcher.getRevision({ spaceId: space.id, revisionId, - metadata: true, }) ); diff --git a/packages/gitbook/src/lib/v1.ts b/packages/gitbook/src/lib/v1.ts index db6118a84..80139146e 100644 --- a/packages/gitbook/src/lib/v1.ts +++ b/packages/gitbook/src/lib/v1.ts @@ -179,7 +179,7 @@ function getDataFetcherV1(apiTokenOverride?: string): GitBookDataFetcher { return withAPI(() => wrapDataFetcherError(async () => { return getRevision(params.spaceId, params.revisionId, { - metadata: params.metadata, + metadata: true, }); }) );