From 9d13ffccd4c62e6a53c7d5e8b680199995a821c6 Mon Sep 17 00:00:00 2001 From: fantasticit Date: Fri, 3 Jun 2022 18:48:13 +0800 Subject: [PATCH] client: add navigator button --- .../document/reader/public/index.tsx | 99 ++++++++++++------- 1 file changed, 62 insertions(+), 37 deletions(-) diff --git a/packages/client/src/components/document/reader/public/index.tsx b/packages/client/src/components/document/reader/public/index.tsx index 25104ffe..4dbfb148 100644 --- a/packages/client/src/components/document/reader/public/index.tsx +++ b/packages/client/src/components/document/reader/public/index.tsx @@ -1,13 +1,5 @@ -import { - Breadcrumb, - Button, - Form, - Layout, - Nav, - Skeleton, - Space, - Typography, -} from '@douyinfe/semi-ui'; +import { Breadcrumb, Button, Form, Layout, Nav, Skeleton, Space, Tooltip, Typography } from '@douyinfe/semi-ui'; +import { IconExport, IconImport } from '@douyinfe/semi-icons'; import { FormApi } from '@douyinfe/semi-ui/lib/es/form'; import { DataRender } from 'components/data-render'; import { Divider } from 'components/divider'; @@ -28,6 +20,9 @@ import { CollaborationEditor } from 'tiptap/editor'; import { Author } from '../author'; import styles from './index.module.scss'; +import Router from 'next/router'; +import { useRouterQuery } from 'hooks/use-router-query'; +import { IDocument, IWiki } from '@think/domains'; const { Header } = Layout; const { Text } = Typography; @@ -39,7 +34,8 @@ interface IProps { export const DocumentPublicReader: React.FC = ({ documentId, hideLogo = false }) => { const $form = useRef(); - const mounted = useMount() + const mounted = useMount(); + const { wikiId: currentWikiId } = useRouterQuery<{ wikiId: IWiki['id']; documentId: IDocument['id'] }>(); const { data, loading, error, query } = usePublicDocumentDetail(documentId); const { width, fontSize } = useDocumentStyle(); const { isMobile } = IsOnMobile.useHook(); @@ -68,7 +64,12 @@ export const DocumentPublicReader: React.FC = ({ documentId, hideLogo = }); }, [query]); - if (!documentId) return null; + const toPublicWikiOrDocumentURL = useCallback(() => { + Router.push({ + pathname: currentWikiId ? '/share/document/[documentId]' : '/share/wiki/[wikiId]/document/[documentId]', + query: currentWikiId ? { documentId } : { wikiId: data.wikiId, documentId }, + }); + }, [data, currentWikiId]); const content = useMemo(() => { if (error) { @@ -94,36 +95,40 @@ export const DocumentPublicReader: React.FC = ({ documentId, hideLogo = ); } // @ts-ignore - return (
- - - {(error && (error as Error).message) || '未知错误'} - -
); + return ( +
+ + + {(error && (error as Error).message) || '未知错误'} + +
+ ); } return ( <> {data && } - {mounted && } + {mounted && ( + + )} - ) - }, [error, data, mounted, editorWrapClassNames, fontSize]) + ); + }, [error, data, mounted, editorWrapClassNames, fontSize]); return ( @@ -143,6 +148,26 @@ export const DocumentPublicReader: React.FC = ({ documentId, hideLogo = } footer={ + {currentWikiId ? ( + +