Skip to content

Commit 56b3aa2

Browse files
committed
Fix filter hidden site spaces
1 parent 4e4ac25 commit 56b3aa2

File tree

1 file changed

+7
-51
lines changed

1 file changed

+7
-51
lines changed

packages/gitbook/src/lib/context.ts

Lines changed: 7 additions & 51 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') {
@@ -286,7 +284,6 @@ export async function fetchSiteContextByIds(
286284
);
287285

288286
const currentSection = sections.current;
289-
// hidden siteSpaces are already filtered in parseSiteSectionsAndGroups
290287
const siteSpaces = currentSection.siteSpaces;
291288
const siteSpace = currentSection.siteSpaces.find(
292289
(siteSpace) => siteSpace.id === ids.siteSpace
@@ -298,7 +295,7 @@ export async function fetchSiteContextByIds(
298295
);
299296
}
300297

301-
return { siteSpaces, siteSpace };
298+
return { siteSpaces: filterHiddenSiteSpaces(siteSpaces), siteSpace };
302299
}
303300

304301
// @ts-expect-error
@@ -432,56 +429,15 @@ export function checkIsRootSiteContext(context: GitBookSiteContext): boolean {
432429
/**
433430
* Filter out hidden site spaces from a list of site spaces.
434431
*/
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-
});
432+
function filterHiddenSiteSpaces(siteSpaces: SiteSpace[]): SiteSpace[] {
433+
return siteSpaces.filter((siteSpace) => !siteSpace.hidden);
463434
}
464435

465-
function parseSiteSectionsAndGroups(
466-
structure: SiteStructure,
467-
siteSectionId: string,
468-
currentSiteSpaceId?: string
469-
) {
436+
function parseSiteSectionsAndGroups(structure: SiteStructure, siteSectionId: string) {
470437
const sectionsAndGroups = getSiteStructureSections(structure, { ignoreGroups: false });
471-
const filteredSectionsAndGroups = filterHiddenSiteSpacesFromSections(
472-
sectionsAndGroups,
473-
currentSiteSpaceId
474-
);
475438
const section = parseCurrentSection(structure, siteSectionId);
476439
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;
440+
return { list: sectionsAndGroups, current: section } satisfies SiteSections;
485441
}
486442

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

0 commit comments

Comments
 (0)