diff --git a/config/dev.yaml b/config/dev.yaml index fa7347e4..110fd3d9 100644 --- a/config/dev.yaml +++ b/config/dev.yaml @@ -10,6 +10,9 @@ client: seoKeywords: '云策文档,协作,文档,前端面试题,fantasticit,https://github.com/fantasticit/think' # 预先连接的来源,空格分割(比如图片存储服务器) dnsPrefetch: '//wipi.oss-cn-shanghai.aliyuncs.com' + # 站点地址(如:http://think.codingit.cn/),一定要设置,否则会出现 cookie、跨域等问题 + siteUrl: 'http://localhost:5001' + siteDomain: '' server: prefix: '/api' diff --git a/packages/client/package.json b/packages/client/package.json index e0783866..e07a2ea4 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -86,9 +86,9 @@ "react-helmet": "^6.1.0", "react-lazy-load-image-component": "^1.5.4", "react-pdf": "^5.7.2", + "react-query": "^3.39.0", "react-split-pane": "^0.1.92", "scroll-into-view-if-needed": "^2.2.29", - "swr": "^1.2.0", "timeago.js": "^4.0.2", "tippy.js": "^6.3.7", "toggle-selection": "^1.0.6", diff --git a/packages/client/src/components/data-render/index.tsx b/packages/client/src/components/data-render/index.tsx index acf4575a..4b3c5e3f 100644 --- a/packages/client/src/components/data-render/index.tsx +++ b/packages/client/src/components/data-render/index.tsx @@ -8,7 +8,7 @@ type RenderProps = React.ReactNode | (() => React.ReactNode); interface IProps { loading: boolean; - error: Error | null; + error: Error | null | unknown; empty?: boolean; loadingContent?: RenderProps; errorContent?: RenderProps; diff --git a/packages/client/src/components/document/collaboration/index.tsx b/packages/client/src/components/document/collaboration/index.tsx index 9d1a9635..de4dfb31 100644 --- a/packages/client/src/components/document/collaboration/index.tsx +++ b/packages/client/src/components/document/collaboration/index.tsx @@ -17,7 +17,7 @@ import { } from '@douyinfe/semi-ui'; import { DataRender } from 'components/data-render'; import { DocumentLinkCopyer } from 'components/document/link'; -import { useCollaborationDocument } from 'data/document'; +import { useDoumentMembers } from 'data/document'; import { useUser } from 'data/user'; import { event, JOIN_USER } from 'event'; import { useToggle } from 'hooks/use-toggle'; @@ -48,7 +48,7 @@ const renderChecked = (onChange, authKey: 'readable' | 'editable') => (checked, export const DocumentCollaboration: React.FC = ({ wikiId, documentId }) => { const { user: currentUser } = useUser(); const [visible, toggleVisible] = useToggle(false); - const { users, loading, error, addUser, updateUser, deleteUser } = useCollaborationDocument(documentId); + const { users, loading, error, addUser, updateUser, deleteUser } = useDoumentMembers(documentId); const [inviteUser, setInviteUser] = useState(''); const [collaborationUsers, setCollaborationUsers] = useState([]); diff --git a/packages/client/src/components/document/editor/editor.tsx b/packages/client/src/components/document/editor/editor.tsx index 20da63e8..1abae3c4 100644 --- a/packages/client/src/components/document/editor/editor.tsx +++ b/packages/client/src/components/document/editor/editor.tsx @@ -1,6 +1,6 @@ import { IAuthority, ILoginUser } from '@think/domains'; import cls from 'classnames'; -import { useCollaborationDocument } from 'data/document'; +import { useDoumentMembers } from 'data/document'; import { event, triggerChangeDocumentTitle, triggerJoinUser, USE_DOCUMENT_VERSION } from 'event'; import { useToggle } from 'hooks/use-toggle'; import Router from 'next/router'; @@ -22,7 +22,7 @@ interface IProps { export const Editor: React.FC = ({ user: currentUser, documentId, authority, className, style }) => { const $hasShowUserSettingModal = useRef(false); const $editor = useRef(); - const { users, addUser, updateUser } = useCollaborationDocument(documentId); + const { users, addUser, updateUser } = useDoumentMembers(documentId); const [mentionUsersSettingVisible, toggleMentionUsersSettingVisible] = useToggle(false); const [mentionUsers, setMentionUsers] = useState([]); diff --git a/packages/client/src/components/document/reader/public/index.tsx b/packages/client/src/components/document/reader/public/index.tsx index f71c4561..31bdaa19 100644 --- a/packages/client/src/components/document/reader/public/index.tsx +++ b/packages/client/src/components/document/reader/public/index.tsx @@ -18,8 +18,9 @@ import { LogoImage, LogoText } from 'components/logo'; import { Seo } from 'components/seo'; import { Theme } from 'components/theme'; import { User } from 'components/user'; -import { usePublicDocument } from 'data/document'; +import { usePublicDocumentDetail } from 'data/document'; import { useDocumentStyle } from 'hooks/use-document-style'; +import { useMount } from 'hooks/use-mount'; import { IsOnMobile } from 'hooks/use-on-mobile'; import Link from 'next/link'; import React, { useCallback, useMemo, useRef } from 'react'; @@ -40,7 +41,8 @@ interface IProps { export const DocumentPublicReader: React.FC = ({ documentId, hideLogo = true }) => { const $form = useRef(); - const { data, loading, error, query } = usePublicDocument(documentId); + const mounted = useMount() + const { data, loading, error, query } = usePublicDocumentDetail(documentId); const { width, fontSize } = useDocumentStyle(); const { isMobile } = IsOnMobile.useHook(); const editorWrapClassNames = useMemo(() => { @@ -148,14 +150,14 @@ export const DocumentPublicReader: React.FC = ({ documentId, hideLogo = style={{ fontSize }} > - + />} = ({ documentId, render }) => { - const { data, toggleStar } = useDocumentStar(documentId); + const { data, toggle: toggleStar } = useDocumentCollectToggle(documentId); const text = data ? '取消收藏' : '收藏文档'; return ( diff --git a/packages/client/src/components/message/index.tsx b/packages/client/src/components/message/index.tsx index d7fe5c98..caded197 100644 --- a/packages/client/src/components/message/index.tsx +++ b/packages/client/src/components/message/index.tsx @@ -250,5 +250,6 @@ const MessageBox = () => { export const Message = () => { const { loading, error } = useUser(); - return } />; + return null; + // return } />; }; diff --git a/packages/client/src/components/template/editor/index.tsx b/packages/client/src/components/template/editor/index.tsx index 4ffdcd06..afa03544 100644 --- a/packages/client/src/components/template/editor/index.tsx +++ b/packages/client/src/components/template/editor/index.tsx @@ -1,5 +1,5 @@ -import { IconArticle, IconChevronLeft } from '@douyinfe/semi-icons'; -import { Button, Nav, Popconfirm, Popover, Space, Spin, Switch, Tooltip, Typography } from '@douyinfe/semi-ui'; +import { IconChevronLeft } from '@douyinfe/semi-icons'; +import { Button, Nav, Popconfirm, Space, Spin, Switch, Tooltip, Typography } from '@douyinfe/semi-ui'; import cls from 'classnames'; import { DataRender } from 'components/data-render'; import { DocumentStyle } from 'components/document/style'; @@ -9,6 +9,7 @@ import { User } from 'components/user'; import { useTemplate } from 'data/template'; import { useUser } from 'data/user'; import { useDocumentStyle } from 'hooks/use-document-style'; +import { useMount } from 'hooks/use-mount'; import { useWindowSize } from 'hooks/use-window-size'; import Router from 'next/router'; import React, { useCallback, useEffect, useMemo, useState } from 'react'; @@ -24,6 +25,7 @@ const { Text } = Typography; export const TemplateEditor: React.FC = ({ templateId }) => { const { user } = useUser(); + const mounted = useMount(); const { data, loading, error, updateTemplate, deleteTemplate } = useTemplate(templateId); const { width: windowWidth } = useWindowSize(); const [title, setTitle] = useState(data && data.title); @@ -81,7 +83,7 @@ export const TemplateEditor: React.FC = ({ templateId }) => { - updateTemplate({ isPublic: v })}> + updateTemplate({ isPublic: v })}> @@ -95,14 +97,16 @@ export const TemplateEditor: React.FC = ({ templateId }) => {
- + {mounted && ( + + )}
diff --git a/packages/client/src/components/template/editor/editor.tsx b/packages/client/src/components/template/editor/jhuhhkh.tsx similarity index 94% rename from packages/client/src/components/template/editor/editor.tsx rename to packages/client/src/components/template/editor/jhuhhkh.tsx index 069b0bb2..d5ed712e 100644 --- a/packages/client/src/components/template/editor/editor.tsx +++ b/packages/client/src/components/template/editor/jhuhhkh.tsx @@ -1,5 +1,5 @@ -import { IconArticle, IconChevronLeft } from '@douyinfe/semi-icons'; -import { Button, Nav, Popconfirm, Popover, Space, Switch, Tooltip, Typography } from '@douyinfe/semi-ui'; +import { IconChevronLeft } from '@douyinfe/semi-icons'; +import { Button, Nav, Popconfirm, Space, Switch, Tooltip, Typography } from '@douyinfe/semi-ui'; import { ILoginUser, ITemplate } from '@think/domains'; import cls from 'classnames'; import { DocumentStyle } from 'components/document/style'; diff --git a/packages/client/src/components/user/index.tsx b/packages/client/src/components/user/index.tsx index eda58d5f..e008f432 100644 --- a/packages/client/src/components/user/index.tsx +++ b/packages/client/src/components/user/index.tsx @@ -45,7 +45,7 @@ export const User: React.FC = () => { ) : ( - {user && user.name[0]} + {user && user.name && user.name[0]} ) } diff --git a/packages/client/src/components/wiki/card/index.tsx b/packages/client/src/components/wiki/card/index.tsx index 0daece69..0d4b453d 100644 --- a/packages/client/src/components/wiki/card/index.tsx +++ b/packages/client/src/components/wiki/card/index.tsx @@ -3,7 +3,7 @@ import { Avatar, Skeleton, Space, Typography } from '@douyinfe/semi-ui'; import { IconDocument } from 'components/icons/IconDocument'; import { LocaleTime } from 'components/locale-time'; import { WikiStar } from 'components/wiki/star'; -import { IWikiWithIsMember } from 'data/wiki'; +import { IWikiWithIsMember } from 'data/collector'; import Link from 'next/link'; import styles from './index.module.scss'; diff --git a/packages/client/src/components/wiki/setting/users/index.tsx b/packages/client/src/components/wiki/setting/users/index.tsx index c3d1e860..1dedd48e 100644 --- a/packages/client/src/components/wiki/setting/users/index.tsx +++ b/packages/client/src/components/wiki/setting/users/index.tsx @@ -3,7 +3,7 @@ import { Button, Popconfirm, Table } from '@douyinfe/semi-ui'; import { getWikiUserRoleText } from '@think/domains'; import { DataRender } from 'components/data-render'; import { LocaleTime } from 'components/locale-time'; -import { useWikiUsers } from 'data/wiki'; +import { useWikiMembers } from 'data/wiki'; import { useToggle } from 'hooks/use-toggle'; import React, { useState } from 'react'; @@ -21,7 +21,7 @@ export const Users: React.FC = ({ wikiId }) => { const [visible, toggleVisible] = useToggle(false); const [editVisible, toggleEditVisible] = useToggle(false); const [currentUser, setCurrentUser] = useState(null); - const { data: users, loading, error, addUser, updateUser, deleteUser } = useWikiUsers(wikiId); + const { users, loading, error, addUser, updateUser, deleteUser } = useWikiMembers(wikiId); const editUser = (user) => { setCurrentUser(user); diff --git a/packages/client/src/components/wiki/star/index.tsx b/packages/client/src/components/wiki/star/index.tsx index 4edf800a..76b6ae23 100644 --- a/packages/client/src/components/wiki/star/index.tsx +++ b/packages/client/src/components/wiki/star/index.tsx @@ -1,6 +1,6 @@ import { IconStar } from '@douyinfe/semi-icons'; import { Button, Tooltip } from '@douyinfe/semi-ui'; -import { useWikiStar } from 'data/wiki'; +import { useWikiCollectToggle } from 'data/collector'; import React from 'react'; interface IProps { @@ -10,13 +10,13 @@ interface IProps { } export const WikiStar: React.FC = ({ wikiId, render, onChange }) => { - const { data, toggleStar } = useWikiStar(wikiId); + const { data, toggle } = useWikiCollectToggle(wikiId); const text = data ? '取消收藏' : '收藏知识库'; return ( <> {render ? ( - render({ star: data, toggleStar, text }) + render({ star: data, toggleStar: toggle, text }) ) : (