Skip to content

Commit 01b5959

Browse files
committed
Fix filter hidden site spaces
1 parent 4e4ac25 commit 01b5959

File tree

1 file changed

+7
-50
lines changed

1 file changed

+7
-50
lines changed

packages/gitbook/src/lib/context.ts

Lines changed: 7 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ export async function fetchSiteContextByIds(
259259
};
260260

261261
const sections = ids.siteSection
262-
? parseSiteSectionsAndGroups(siteStructure, ids.siteSection, ids.siteSpace)
262+
? parseSiteSectionsAndGroups(siteStructure, ids.siteSection)
263263
: null;
264264

265265
// Parse the current siteSpace and siteSpaces based on the site structure type.
@@ -274,9 +274,7 @@ export async function fetchSiteContextByIds(
274274
);
275275
}
276276

277-
const visibleSiteSpaces = filterHiddenSiteSpaces(siteSpaces, ids.siteSpace);
278-
279-
return { siteSpaces: visibleSiteSpaces, siteSpace };
277+
return { siteSpaces: filterHiddenSiteSpaces(siteSpaces), siteSpace };
280278
}
281279

282280
if (siteStructure.type === 'sections') {
@@ -298,7 +296,7 @@ export async function fetchSiteContextByIds(
298296
);
299297
}
300298

301-
return { siteSpaces, siteSpace };
299+
return { siteSpaces: filterHiddenSiteSpaces(siteSpaces), siteSpace };
302300
}
303301

304302
// @ts-expect-error
@@ -432,56 +430,15 @@ export function checkIsRootSiteContext(context: GitBookSiteContext): boolean {
432430
/**
433431
* Filter out hidden site spaces from a list of site spaces.
434432
*/
435-
function filterHiddenSiteSpaces(siteSpaces: SiteSpace[], currentSiteSpaceId?: string): SiteSpace[] {
436-
return siteSpaces.filter(
437-
(siteSpace) => !siteSpace.hidden || siteSpace.id === currentSiteSpaceId
438-
);
439-
}
440-
441-
/**
442-
* Filter out hidden site spaces from sections and groups recursively.
443-
*/
444-
function filterHiddenSiteSpacesFromSections(
445-
sections: (SiteSection | SiteSectionGroup)[],
446-
currentSiteSpaceId?: string
447-
): (SiteSection | SiteSectionGroup)[] {
448-
return sections.map((item) => {
449-
if (item.object === 'site-section') {
450-
return {
451-
...item,
452-
siteSpaces: filterHiddenSiteSpaces(item.siteSpaces, currentSiteSpaceId),
453-
};
454-
}
455-
if (item.object === 'site-section-group') {
456-
return {
457-
...item,
458-
children: filterHiddenSiteSpacesFromSections(item.children, currentSiteSpaceId),
459-
};
460-
}
461-
return item;
462-
});
433+
function filterHiddenSiteSpaces(siteSpaces: SiteSpace[]): SiteSpace[] {
434+
return siteSpaces.filter((siteSpace) => !siteSpace.hidden);
463435
}
464436

465-
function parseSiteSectionsAndGroups(
466-
structure: SiteStructure,
467-
siteSectionId: string,
468-
currentSiteSpaceId?: string
469-
) {
437+
function parseSiteSectionsAndGroups(structure: SiteStructure, siteSectionId: string) {
470438
const sectionsAndGroups = getSiteStructureSections(structure, { ignoreGroups: false });
471-
const filteredSectionsAndGroups = filterHiddenSiteSpacesFromSections(
472-
sectionsAndGroups,
473-
currentSiteSpaceId
474-
);
475439
const section = parseCurrentSection(structure, siteSectionId);
476440
assert(section, `couldn't find section "${siteSectionId}" in site structure`);
477-
const filteredSection = {
478-
...section,
479-
siteSpaces: filterHiddenSiteSpaces(section.siteSpaces, currentSiteSpaceId),
480-
};
481-
return {
482-
list: filteredSectionsAndGroups,
483-
current: filteredSection,
484-
} satisfies SiteSections;
441+
return { list: sectionsAndGroups, current: section } satisfies SiteSections;
485442
}
486443

487444
function parseCurrentSection(structure: SiteStructure, siteSectionId: string) {

0 commit comments

Comments
 (0)