refactor: 群组查看详情

pull/13/head
moonrailgun 4 years ago
parent ded912f753
commit 3da74923e8

@ -0,0 +1,8 @@
import React from 'react';
export const GroupSummary: React.FC<{
groupId: string;
}> = React.memo((props) => {
return <div>GroupSummary: {props.groupId}</div>;
});
GroupSummary.displayName = 'GroupSummary';

@ -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<SettingsViewProps> = 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: <GroupSummary groupId={props.groupId} />,
},
],
},
],
[]
);
return (
<FullModal onChangeVisible={handleChangeVisible}>
<SidebarView menu={menu} defaultContentPath="0.children.0.content" />
</FullModal>
);
});
GroupDetail.displayName = 'GroupDetail';

@ -14,7 +14,8 @@ export const GroupHeader: React.FC<GroupHeaderProps> = 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<GroupHeaderProps> = React.memo((props) => {
const menu = (
<Menu>
<Menu.Item key="0" onClick={() => console.log('查看详情')}>
<Menu.Item key="0" onClick={handleShowGroupDetail}>
{t('查看详情')}
</Menu.Item>
<Menu.Item key="1" onClick={handleInviteUser}>

@ -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(
<GroupDetail
groupId={groupId}
onClose={() => {
closeModal(key);
}}
/>
);
}, [groupId]);
const handleInviteUser = useCallback(() => {
openModal(<GroupInvite groupId={groupId} />);
}, [groupId]);
return { handleInviteUser };
return { handleShowGroupDetail, handleInviteUser };
}

Loading…
Cancel
Save