feat: 增加插件允许在群组详情页增加自定义面板

release/desktop
moonrailgun 4 years ago
parent e2b9fdefab
commit 55279e5b0e

@ -1,5 +1,10 @@
import { FullModal } from '@/components/FullModal'; import { FullModal } from '@/components/FullModal';
import { SidebarView, SidebarViewMenuType } from '@/components/SidebarView'; import {
SidebarView,
SidebarViewMenuItem,
SidebarViewMenuType,
} from '@/components/SidebarView';
import { pluginCustomPanel } from '@/plugin/common';
import React, { useCallback, useMemo } from 'react'; import React, { useCallback, useMemo } from 'react';
import { t } from 'tailchat-shared'; import { t } from 'tailchat-shared';
import { GroupPanel } from './Panel'; import { GroupPanel } from './Panel';
@ -19,8 +24,9 @@ export const GroupDetail: React.FC<SettingsViewProps> = React.memo((props) => {
[props.onClose] [props.onClose]
); );
const menu: SidebarViewMenuType[] = useMemo( const menu: SidebarViewMenuType[] = useMemo(() => {
() => [ // 内置
const _menu: SidebarViewMenuType[] = [
{ {
type: 'group', type: 'group',
title: t('通用'), title: t('通用'),
@ -37,9 +43,27 @@ export const GroupDetail: React.FC<SettingsViewProps> = React.memo((props) => {
}, },
], ],
}, },
], ];
[]
); // 插件
const _pluginMenu: SidebarViewMenuItem[] = pluginCustomPanel
.filter((p) => p.position === 'groupdetail')
.map((p) => ({
type: 'item',
title: p.label,
content: React.createElement(p.render),
}));
if (_pluginMenu.length > 0) {
_menu.push({
type: 'group',
title: t('插件'),
children: _pluginMenu,
});
}
return _menu;
}, []);
return ( return (
<FullModal onChangeVisible={handleChangeVisible}> <FullModal onChangeVisible={handleChangeVisible}>

@ -18,8 +18,9 @@ export interface PluginCustomPanel {
* - personal: * - personal:
* - setting: * - setting:
* - navbar: () * - navbar: ()
* - groupdetail:
*/ */
position: 'personal' | 'setting' | 'navbar'; position: 'personal' | 'setting' | 'navbar' | 'groupdetail';
/** /**
* Iconify * Iconify

Loading…
Cancel
Save