feat: 插件增加更多的上下文获取

pull/56/head
moonrailgun 3 years ago
parent fd85953967
commit f350e45d02

@ -38,6 +38,11 @@ function generateDeclarationFile() {
{} {}
); );
const { exportModules: commonContextExportModules } = parseExports(
path.resolve(__dirname, '../src/plugin/common/context.ts'),
{}
);
const { exportModules: componentExportModules } = parseExports( const { exportModules: componentExportModules } = parseExports(
path.resolve(__dirname, '../src/plugin/component/index.tsx'), path.resolve(__dirname, '../src/plugin/component/index.tsx'),
{} {}
@ -68,6 +73,11 @@ declare module '@capital/common' {
commonRegExportModules, commonRegExportModules,
existedModules['@capital/common'] existedModules['@capital/common']
)} )}
${exportModulesTemplate(
commonContextExportModules,
existedModules['@capital/common']
)}
} }
/** /**

@ -11,6 +11,7 @@ import {
pluginPanelActions, pluginPanelActions,
} from '@/plugin/common'; } from '@/plugin/common';
import { useUserSessionPreference } from '@/hooks/useUserPreference'; import { useUserSessionPreference } from '@/hooks/useUserPreference';
import { GroupPanelContext } from '@/context/GroupPanelContext';
/** /**
* 访id * 访id
@ -56,58 +57,64 @@ export const GroupPanelWrapper: React.FC<GroupPanelWrapperProps> = React.memo(
} }
if (!props.showHeader) { if (!props.showHeader) {
return <>{props.children}</>; return (
<GroupPanelContext.Provider value={props}>
{props.children}
</GroupPanelContext.Provider>
);
} }
return ( return (
<CommonPanelWrapper <GroupPanelContext.Provider value={props}>
header={panelInfo.name} <CommonPanelWrapper
actions={(setRightPanel) => [ header={panelInfo.name}
...pluginPanelActions actions={(setRightPanel) => [
.filter( ...pluginPanelActions
(action): action is GroupPluginPanelActionProps => .filter(
action.position === 'group' (action): action is GroupPluginPanelActionProps =>
) action.position === 'group'
.map((action) => ( )
<IconBtn .map((action) => (
key={action.name} <IconBtn
title={action.label} key={action.name}
shape="square" title={action.label}
icon={action.icon} shape="square"
iconClassName="text-2xl" icon={action.icon}
onClick={() => iconClassName="text-2xl"
action.onClick({ onClick={() =>
groupId: props.groupId, action.onClick({
panelId: props.panelId, groupId: props.groupId,
}) panelId: props.panelId,
} })
/> }
)), />
<IconBtn )),
key="open" <IconBtn
title={t('在新窗口打开')} key="open"
shape="square" title={t('在新窗口打开')}
icon="mdi:dock-window" shape="square"
iconClassName="text-2xl" icon="mdi:dock-window"
onClick={openPanelWindow} iconClassName="text-2xl"
/>, onClick={openPanelWindow}
<IconBtn />,
key="members" <IconBtn
title={t('成员列表')} key="members"
shape="square" title={t('成员列表')}
icon="mdi:account-supervisor-outline" shape="square"
iconClassName="text-2xl" icon="mdi:account-supervisor-outline"
onClick={() => iconClassName="text-2xl"
setRightPanel({ onClick={() =>
name: t('成员'), setRightPanel({
panel: <MembersPanel groupId={props.groupId} />, name: t('成员'),
}) panel: <MembersPanel groupId={props.groupId} />,
} })
/>, }
]} />,
> ]}
{props.children} >
</CommonPanelWrapper> {props.children}
</CommonPanelWrapper>
</GroupPanelContext.Provider>
); );
} }
); );

@ -5,6 +5,6 @@ GroupIdContext.displayName = 'GroupIdContext';
export const GroupIdContextProvider = GroupIdContext.Provider; export const GroupIdContextProvider = GroupIdContext.Provider;
export function useGroupIdContext() { export function useGroupIdContext(): string {
return useContext(GroupIdContext); return useContext(GroupIdContext);
} }

@ -0,0 +1,3 @@
export { useGroupIdContext } from '../../context/GroupIdContext';
export { useGroupPanelContext } from '../../context/GroupPanelContext';
export { useSocketContext } from '../../context/SocketContext';

@ -5,6 +5,7 @@
import _pick from 'lodash/pick'; import _pick from 'lodash/pick';
export * from './reg'; export * from './reg';
export * from './context';
export { useGroupPanelParams } from '@/routes/Main/Content/Group/utils'; export { useGroupPanelParams } from '@/routes/Main/Content/Group/utils';
/** /**
@ -28,7 +29,6 @@ export {
appendUrlSearch, appendUrlSearch,
} from '@/utils/url-helper'; } from '@/utils/url-helper';
export { getServiceWorkerRegistration } from '@/utils/sw-helper'; export { getServiceWorkerRegistration } from '@/utils/sw-helper';
export { useGroupIdContext } from '@/context/GroupIdContext';
import { request, RequestConfig, useUserInfo } from 'tailchat-shared'; import { request, RequestConfig, useUserInfo } from 'tailchat-shared';
export { export {
getServiceUrl, getServiceUrl,

@ -70,8 +70,6 @@ declare module '@capital/common' {
export const getServiceWorkerRegistration: any; export const getServiceWorkerRegistration: any;
export const useGroupIdContext: any;
export const getServiceUrl: () => string; export const getServiceUrl: () => string;
export const getCachedUserInfo: ( export const getCachedUserInfo: (
@ -216,6 +214,15 @@ declare module '@capital/common' {
*/ */
required?: string[]; required?: string[];
}) => void; }) => void;
export const useGroupIdContext: () => string;
export const useGroupPanelContext: () => {
groupId: string;
panelId: string;
} | null;
export const useSocketContext: any;
} }
/** /**

Loading…
Cancel
Save