Files
docmost/apps/client/src/features/public-space/hooks/use-docs-current-page.ts
T

24 lines
834 B
TypeScript

import { useMemo } from "react";
import { useParams } from "react-router-dom";
import { useDocsSurface } from "@/features/public-space/components/docs/docs-surface-context.tsx";
import { flattenTreePreorder } from "@/features/public-space/utils/docs-tree.ts";
import { extractPageSlugId } from "@/lib";
import { SharedPageTreeNode } from "@/features/share/utils.ts";
export function useDocsCurrentPage(): SharedPageTreeNode | null {
const { pageSlug } = useParams();
const { treeData } = useDocsSurface();
return useMemo(() => {
if (!treeData?.length) return null;
const currentSlugId = pageSlug
? extractPageSlugId(pageSlug)
: treeData[0]?.slugId;
return (
flattenTreePreorder(treeData).find(
(node) => node.slugId === currentSlugId,
) ?? null
);
}, [treeData, pageSlug]);
}