import React, { useMemo } from 'react'; import type { IPagePopulatedToShowRevision } from '@growi/core'; import dynamic from 'next/dynamic'; import type { RendererConfig } from '~/interfaces/services/renderer'; import type { IShareLinkHasId } from '~/interfaces/share-link'; import { generateSSRViewOptions } from '~/services/renderer/renderer'; import { useIsNotFound } from '~/stores/page'; import { useViewOptions } from '~/stores/renderer'; import loggerFactory from '~/utils/logger'; import { MainPane } from './Layout/MainPane'; import RevisionRenderer from './Page/RevisionRenderer'; import ShareLinkAlert from './Page/ShareLinkAlert'; import type { PageSideContentsProps } from './PageSideContents'; const logger = loggerFactory('growi:Page'); const PageSideContents = dynamic(() => import('./PageSideContents').then(mod => mod.PageSideContents), { ssr: false }); const ForbiddenPage = dynamic(() => import('./ForbiddenPage'), { ssr: false }); type Props = { pagePath: string, rendererConfig: RendererConfig, page?: IPagePopulatedToShowRevision, shareLink?: IShareLinkHasId, isExpired: boolean, disableLinkSharing: boolean, } export const ShareLinkPageView = (props: Props): JSX.Element => { const { pagePath, rendererConfig, page, shareLink, isExpired, disableLinkSharing, } = props; const { data: isNotFoundMeta } = useIsNotFound(); const { data: viewOptions } = useViewOptions(); const isNotFound = isNotFoundMeta || page == null || shareLink == null; const specialContents = useMemo(() => { if (disableLinkSharing) { return ; } }, [disableLinkSharing, props.disableLinkSharing]); const sideContents = !isNotFound ? ( ) : null; const Contents = () => { if (isNotFound) { return <>; } if (isExpired) { return ( <>