mirror of
https://github.com/GitbookIO/gitbook.git
synced 2026-10-12 07:58:49 +00:00
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5e48e703b9 | |||
| bbb97e65b4 | |||
| 81161a814b | |||
| 0f309c2b47 | |||
| 66d89a62dc | |||
| 4806e35438 |
@@ -318,13 +318,34 @@ async function resolvePageMetaLinks(
|
||||
context: GitBookSiteContext,
|
||||
pageId: string
|
||||
): Promise<PageMetaLinks> {
|
||||
const pageMetaLinks = await getDataOrNull(
|
||||
context.dataFetcher.listRevisionPageMetaLinks({
|
||||
spaceId: context.space.id,
|
||||
revisionId: context.revisionId,
|
||||
pageId,
|
||||
})
|
||||
);
|
||||
const pageMetaLinks = await (async () => {
|
||||
if (context.changeRequest) {
|
||||
return getDataOrNull(
|
||||
context.dataFetcher.listChangeRequestPageMetaLinks({
|
||||
spaceId: context.space.id,
|
||||
changeRequestId: context.changeRequest.id,
|
||||
pageId,
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
if (context.revisionId !== context.space.revision) {
|
||||
return getDataOrNull(
|
||||
context.dataFetcher.listRevisionPageMetaLinks({
|
||||
spaceId: context.space.id,
|
||||
revisionId: context.revisionId,
|
||||
pageId,
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
return getDataOrNull(
|
||||
context.dataFetcher.listSpacePageMetaLinks({
|
||||
spaceId: context.space.id,
|
||||
pageId,
|
||||
})
|
||||
);
|
||||
})();
|
||||
|
||||
if (pageMetaLinks) {
|
||||
const canonicalResolution = pageMetaLinks.canonical
|
||||
|
||||
@@ -159,6 +159,21 @@ export function createDataFetcher(
|
||||
pageId: params.pageId,
|
||||
});
|
||||
},
|
||||
|
||||
listSpacePageMetaLinks(params) {
|
||||
return listSpacePageMetaLinks(input, {
|
||||
spaceId: params.spaceId,
|
||||
pageId: params.pageId,
|
||||
});
|
||||
},
|
||||
|
||||
listChangeRequestPageMetaLinks(params) {
|
||||
return listChangeRequestPageMetaLinks(input, {
|
||||
spaceId: params.spaceId,
|
||||
changeRequestId: params.changeRequestId,
|
||||
pageId: params.pageId,
|
||||
});
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
@@ -744,6 +759,64 @@ const listRevisionPageMetaLinks = cache(
|
||||
}
|
||||
);
|
||||
|
||||
/**
|
||||
* List all the meta links for a given page in a space.
|
||||
*/
|
||||
const listSpacePageMetaLinks = cache(
|
||||
async (input: DataFetcherInput, params: { spaceId: string; pageId: string }) => {
|
||||
'use cache';
|
||||
return wrapCacheDataFetcherError(async () => {
|
||||
return trace(
|
||||
`listSpacePageMetaLinks(${params.spaceId}, ${params.pageId})`,
|
||||
async () => {
|
||||
const api = apiClient(input);
|
||||
const res = await api.spaces.listSpacePageMetaLinks(
|
||||
params.spaceId,
|
||||
params.pageId,
|
||||
{
|
||||
...noCacheFetchOptions,
|
||||
}
|
||||
);
|
||||
cacheTag(...getCacheTagsFromResponse(res));
|
||||
cacheLife('days');
|
||||
return res.data;
|
||||
}
|
||||
);
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
/**
|
||||
* List all the meta links for a given page in a change request.
|
||||
*/
|
||||
const listChangeRequestPageMetaLinks = cache(
|
||||
async (
|
||||
input: DataFetcherInput,
|
||||
params: { spaceId: string; changeRequestId: string; pageId: string }
|
||||
) => {
|
||||
'use cache';
|
||||
return wrapCacheDataFetcherError(async () => {
|
||||
return trace(
|
||||
`listChangeRequestPageMetaLinks(${params.spaceId}, ${params.changeRequestId}, ${params.pageId})`,
|
||||
async () => {
|
||||
const api = apiClient(input);
|
||||
const res = await api.spaces.listChangeRequestPageMetaLinks(
|
||||
params.spaceId,
|
||||
params.changeRequestId,
|
||||
params.pageId,
|
||||
{
|
||||
...noCacheFetchOptions,
|
||||
}
|
||||
);
|
||||
cacheTag(...getCacheTagsFromResponse(res));
|
||||
cacheLife('days');
|
||||
return res.data;
|
||||
}
|
||||
);
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
/**
|
||||
* Create a new API client.
|
||||
*/
|
||||
|
||||
@@ -182,4 +182,21 @@ export interface GitBookDataFetcher {
|
||||
revisionId: string;
|
||||
pageId: string;
|
||||
}): Promise<DataFetcherResponse<api.RevisionPageMetaLinks>>;
|
||||
|
||||
/**
|
||||
* List change request meta links.
|
||||
*/
|
||||
listChangeRequestPageMetaLinks(params: {
|
||||
spaceId: string;
|
||||
changeRequestId: string;
|
||||
pageId: string;
|
||||
}): Promise<DataFetcherResponse<api.RevisionPageMetaLinks>>;
|
||||
|
||||
/**
|
||||
* List space meta links.
|
||||
*/
|
||||
listSpacePageMetaLinks(params: {
|
||||
spaceId: string;
|
||||
pageId: string;
|
||||
}): Promise<DataFetcherResponse<api.RevisionPageMetaLinks>>;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user