From 1246e0998726cef5e7b6e6cdc811d9c263f7ca8b Mon Sep 17 00:00:00 2001 From: yyoung Date: Wed, 29 Mar 2023 14:04:07 +0800 Subject: [PATCH 1/3] fix: set page title --- packages/website/package.json | 1 + packages/website/src/App.tsx | 9 +- packages/website/src/components/Helmet.tsx | 10 + .../pages/index/group/[name]/index/forum.tsx | 8 + .../pages/index/group/[name]/index/index.tsx | 2 + .../index/group/[name]/index/members.tsx | 8 + .../index/group/[name]/new_topic/index.tsx | 17 +- .../src/pages/index/group/reply/[id]/edit.tsx | 2 + .../src/pages/index/group/topic/[id]/edit.tsx | 2 + .../pages/index/group/topic/[id]/index.tsx | 2 + .../index/subject/[id]/wiki/edit_detail.tsx | 306 +++++++++--------- packages/website/src/pages/login/index.tsx | 66 ++-- pnpm-lock.yaml | 31 ++ 13 files changed, 270 insertions(+), 194 deletions(-) create mode 100644 packages/website/src/components/Helmet.tsx diff --git a/packages/website/package.json b/packages/website/package.json index 48f5ccf87..55de1fbb9 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -22,6 +22,7 @@ "react": "^18.2.0", "react-beautiful-dnd": "^13.1.1", "react-dom": "^18.2.0", + "react-helmet-async": "^1.3.0", "react-hook-form": "^7.43.8", "react-router-dom": "^6.9.0", "reset-css": "^5.0.1", diff --git a/packages/website/src/App.tsx b/packages/website/src/App.tsx index 9c4c64fa9..c8a27b6d5 100644 --- a/packages/website/src/App.tsx +++ b/packages/website/src/App.tsx @@ -1,14 +1,17 @@ import pageRoutes from '~react-pages'; import React, { Suspense } from 'react'; +import { HelmetProvider } from 'react-helmet-async'; import { useRoutes } from 'react-router-dom'; import { UserProvider } from './hooks/use-user'; const App = () => { return ( - - {useRoutes(pageRoutes)} - + + + {useRoutes(pageRoutes)} + + ); }; diff --git a/packages/website/src/components/Helmet.tsx b/packages/website/src/components/Helmet.tsx new file mode 100644 index 000000000..94842aa5c --- /dev/null +++ b/packages/website/src/components/Helmet.tsx @@ -0,0 +1,10 @@ +import React from 'react'; +import { Helmet as BaseHelmet, type HelmetProps } from 'react-helmet-async'; + +const Helmet = (props: React.PropsWithChildren) => { + return ( + + ); +}; + +export default Helmet; diff --git a/packages/website/src/pages/index/group/[name]/index/forum.tsx b/packages/website/src/pages/index/group/[name]/index/forum.tsx index 2bb02c8b0..6d10e9d49 100644 --- a/packages/website/src/pages/index/group/[name]/index/forum.tsx +++ b/packages/website/src/pages/index/group/[name]/index/forum.tsx @@ -3,12 +3,14 @@ import { useParams } from 'react-router-dom'; import { Pagination } from '@bangumi/design'; import { withErrorBoundary } from '@bangumi/website/components/ErrorBoundary'; +import Helmet from '@bangumi/website/components/Helmet'; import { useGroupRecentTopics } from '@bangumi/website/hooks/use-group'; import { useTransitionNavigate } from '@bangumi/website/hooks/use-navigate'; import { usePaginationParams } from '@bangumi/website/hooks/use-pagination'; import { useUser } from '@bangumi/website/hooks/use-user'; import TopicForm from '../../components/TopicForm'; +import { useGroupContext } from '..'; import TopicsTable from '../components/TopicsTable'; import styles from './style.module.less'; @@ -18,6 +20,11 @@ const GroupForum = () => { const { curPage, offset, pageSize } = usePaginationParams(); const { user } = useUser(); + const groupContext = useGroupContext(); + const { + groupRet: { group }, + } = groupContext; + const topics = useGroupRecentTopics(name!, { offset, limit: pageSize, @@ -29,6 +36,7 @@ const GroupForum = () => { return ( <> + { return ( <> + { @@ -18,6 +20,11 @@ const GroupMembersPage = () => { throw new UnreadableCodeError('BUG: name is undefined'); } + const groupContext = useGroupContext(); + const { + groupRet: { group }, + } = groupContext; + // 仅第一页获取管理员 const { data: groupModMembers } = useGroupMembers(name, { offset, @@ -39,6 +46,7 @@ const GroupMembersPage = () => { // TODO: 遵循旧站的交互规则,可能需要改动 return ( <> + {curPage === 1 && (
diff --git a/packages/website/src/pages/index/group/[name]/new_topic/index.tsx b/packages/website/src/pages/index/group/[name]/new_topic/index.tsx index 69e3d71bc..196d5de80 100644 --- a/packages/website/src/pages/index/group/[name]/new_topic/index.tsx +++ b/packages/website/src/pages/index/group/[name]/new_topic/index.tsx @@ -3,6 +3,7 @@ import { useParams } from 'react-router-dom'; import { Typography } from '@bangumi/design'; import { withErrorBoundary } from '@bangumi/website/components/ErrorBoundary'; +import Helmet from '@bangumi/website/components/Helmet'; import { useGroup } from '@bangumi/website/hooks/use-group'; import GroupInfo from '../../components/GroupInfo'; @@ -11,25 +12,23 @@ import styles from './style.module.less'; const GroupNewTopicPage = () => { const { name } = useParams(); - const { group } = useGroup(name!); + const { group: groupProfile } = useGroup(name!); + const { group } = groupProfile; return ( <> + 在 - - {group.group.title} + + {group.title} 发表新话题
- +
- +
diff --git a/packages/website/src/pages/index/group/reply/[id]/edit.tsx b/packages/website/src/pages/index/group/reply/[id]/edit.tsx index 6e229c55d..217d04e9b 100644 --- a/packages/website/src/pages/index/group/reply/[id]/edit.tsx +++ b/packages/website/src/pages/index/group/reply/[id]/edit.tsx @@ -5,6 +5,7 @@ import { useSWRConfig } from 'swr'; import { ozaClient } from '@bangumi/client'; import { EditorForm, toast, Typography } from '@bangumi/design'; +import Helmet from '@bangumi/website/components/Helmet'; import useGroupPost from '@bangumi/website/hooks/use-group-post'; import { useUser } from '@bangumi/website/hooks/use-user'; @@ -65,6 +66,7 @@ const EditReplyPage = () => { return ( <> + 修改主题 { return ( <> + 修改主题 { return ( <> + -
修改详细描述
- -
- - - + <> + + +
修改详细描述
+ + + + + - {subjectWikiInfo.availablePlatform.length && ( - -
+ {subjectWikiInfo.availablePlatform.length && ( + +
+ + {subjectWikiInfo.availablePlatform.map((type) => ( + + ))} + +
+ 注意:切换类型会导致项目顺序发生变化,请先选择好模板再进行排序 +
+
+
+ )} + + +
- {subjectWikiInfo.availablePlatform.map((type) => ( + {EditorTypeRadio.map((type) => ( { + handleSetEditorType(type.key); + }} + checked={editorType === type.key} + readOnly /> ))} -
- 注意:切换类型会导致项目顺序发生变化,请先选择好模板再进行排序 -
-
-
- )} - -
- - {EditorTypeRadio.map((type) => ( - { - handleSetEditorType(type.key); + {/* 入门编辑模式 */} + - {/* 入门编辑模式 */} - + - {/* Wiki 编辑模式 */} -