diff --git a/packages/nreact/src/context.tsx b/packages/nreact/src/context.tsx index 8ec9505a..73cadfec 100644 --- a/packages/nreact/src/context.tsx +++ b/packages/nreact/src/context.tsx @@ -1,6 +1,6 @@ import React from 'react' -import { defaultMapImageUrl, defaultMapPageUrl } from '@texonom/nutils' +import { defaultMapImageUrl, defaultMapPageUrl, parsePageId } from '@texonom/nutils' import { AssetWrapper } from './components/asset-wrapper' import { Checkbox as DefaultCheckbox } from './components/checkbox' @@ -75,7 +75,22 @@ export interface PartialNotionContext { const DefaultLink: React.FC = props => const DefaultLinkMemo = React.memo(DefaultLink) -const DefaultPageLink: React.FC = props => +const DefaultPageLink: React.FC> = ({ href, ...props }) => { + const { recordMap, rootSpaceId } = useNotionContext() + let finalHref = href as string | undefined + + if (typeof href === 'string' && rootSpaceId) { + const pageId = parsePageId(href) + + if (pageId) { + const block = recordMap?.block?.[pageId]?.value + + if (!block || block.space_id !== rootSpaceId) finalHref = `https://notion.so/${pageId.replace(/-/g, '')}` + } + } + + return +} const DefaultPageLinkMemo = React.memo(DefaultPageLink) const DefaultEmbed = props =>