From 3da74923e8faccd42d72599de963f26cf6314bcb Mon Sep 17 00:00:00 2001 From: moonrailgun Date: Thu, 5 Aug 2021 20:53:41 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E7=BE=A4=E7=BB=84=E6=9F=A5?= =?UTF-8?q?=E7=9C=8B=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/modals/GroupDetail/Summary.tsx | 8 ++++ .../components/modals/GroupDetail/index.tsx | 44 +++++++++++++++++++ .../routes/Main/Content/Group/GroupHeader.tsx | 5 ++- .../Content/Group/useGroupHeaderAction.tsx | 19 +++++++- 4 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 web/src/components/modals/GroupDetail/Summary.tsx create mode 100644 web/src/components/modals/GroupDetail/index.tsx diff --git a/web/src/components/modals/GroupDetail/Summary.tsx b/web/src/components/modals/GroupDetail/Summary.tsx new file mode 100644 index 00000000..6591bc8b --- /dev/null +++ b/web/src/components/modals/GroupDetail/Summary.tsx @@ -0,0 +1,8 @@ +import React from 'react'; + +export const GroupSummary: React.FC<{ + groupId: string; +}> = React.memo((props) => { + return
GroupSummary: {props.groupId}
; +}); +GroupSummary.displayName = 'GroupSummary'; diff --git a/web/src/components/modals/GroupDetail/index.tsx b/web/src/components/modals/GroupDetail/index.tsx new file mode 100644 index 00000000..10fd32d1 --- /dev/null +++ b/web/src/components/modals/GroupDetail/index.tsx @@ -0,0 +1,44 @@ +import { FullModal } from '@/components/FullModal'; +import { SidebarView, SidebarViewMenuType } from '@/components/SidebarView'; +import React, { useCallback, useMemo } from 'react'; +import { t } from 'tailchat-shared'; +import { GroupSummary } from './Summary'; + +interface SettingsViewProps { + groupId: string; + onClose: () => void; +} +export const GroupDetail: React.FC = React.memo((props) => { + const handleChangeVisible = useCallback( + (visible) => { + if (visible === false && typeof props.onClose === 'function') { + props.onClose(); + } + }, + [props.onClose] + ); + + const menu: SidebarViewMenuType[] = useMemo( + () => [ + { + type: 'group', + title: t('通用'), + children: [ + { + type: 'item', + title: t('概述'), + content: , + }, + ], + }, + ], + [] + ); + + return ( + + + + ); +}); +GroupDetail.displayName = 'GroupDetail'; diff --git a/web/src/routes/Main/Content/Group/GroupHeader.tsx b/web/src/routes/Main/Content/Group/GroupHeader.tsx index 7ffe1c8b..bc3816fc 100644 --- a/web/src/routes/Main/Content/Group/GroupHeader.tsx +++ b/web/src/routes/Main/Content/Group/GroupHeader.tsx @@ -14,7 +14,8 @@ export const GroupHeader: React.FC = React.memo((props) => { const groupInfo = useGroupInfo(groupId); const { t } = useTranslation(); - const { handleInviteUser } = useGroupHeaderAction(groupId); + const { handleShowGroupDetail, handleInviteUser } = + useGroupHeaderAction(groupId); if (_isNil(groupInfo)) { return null; @@ -22,7 +23,7 @@ export const GroupHeader: React.FC = React.memo((props) => { const menu = ( - console.log('查看详情')}> + {t('查看详情')} diff --git a/web/src/routes/Main/Content/Group/useGroupHeaderAction.tsx b/web/src/routes/Main/Content/Group/useGroupHeaderAction.tsx index f4e13b06..3d82b42d 100644 --- a/web/src/routes/Main/Content/Group/useGroupHeaderAction.tsx +++ b/web/src/routes/Main/Content/Group/useGroupHeaderAction.tsx @@ -1,12 +1,27 @@ -import { openModal } from '@/components/Modal'; +import { closeModal, openModal } from '@/components/Modal'; +import { GroupDetail } from '@/components/modals/GroupDetail'; import { GroupInvite } from '@/components/modals/GroupInvite'; import React from 'react'; import { useCallback } from 'react'; +/** + * 群组 Header 的操作 hooks + */ export function useGroupHeaderAction(groupId: string) { + const handleShowGroupDetail = useCallback(() => { + const key = openModal( + { + closeModal(key); + }} + /> + ); + }, [groupId]); + const handleInviteUser = useCallback(() => { openModal(); }, [groupId]); - return { handleInviteUser }; + return { handleShowGroupDetail, handleInviteUser }; }