diff --git a/web/src/components/modals/GroupDetail/index.tsx b/web/src/components/modals/GroupDetail/index.tsx index 2914fc5e..e5b6248d 100644 --- a/web/src/components/modals/GroupDetail/index.tsx +++ b/web/src/components/modals/GroupDetail/index.tsx @@ -4,6 +4,7 @@ import { SidebarViewMenuItem, SidebarViewMenuType, } from '@/components/SidebarView'; +import { GroupIdContextProvider } from '@/context/GroupIdContext'; import { pluginCustomPanel } from '@/plugin/common'; import React, { useCallback, useMemo } from 'react'; import { t } from 'tailchat-shared'; @@ -15,6 +16,7 @@ interface SettingsViewProps { onClose: () => void; } export const GroupDetail: React.FC = React.memo((props) => { + const groupId = props.groupId; const handleChangeVisible = useCallback( (visible) => { if (visible === false && typeof props.onClose === 'function') { @@ -34,12 +36,12 @@ export const GroupDetail: React.FC = React.memo((props) => { { type: 'item', title: t('概述'), - content: , + content: , }, { type: 'item', title: t('面板'), - content: , + content: , }, ], }, @@ -66,9 +68,11 @@ export const GroupDetail: React.FC = React.memo((props) => { }, []); return ( - - - + + + + + ); }); GroupDetail.displayName = 'GroupDetail'; diff --git a/web/src/context/GroupIdContext.tsx b/web/src/context/GroupIdContext.tsx new file mode 100644 index 00000000..50369bec --- /dev/null +++ b/web/src/context/GroupIdContext.tsx @@ -0,0 +1,10 @@ +import React, { useContext } from 'react'; + +const GroupIdContext = React.createContext(''); +GroupIdContext.displayName = 'GroupIdContext'; + +export const GroupIdContextProvider = GroupIdContext.Provider; + +export function useGroupIdContext() { + return useContext(GroupIdContext); +} diff --git a/web/src/plugin/common/index.ts b/web/src/plugin/common/index.ts index ec33599a..b92f689e 100644 --- a/web/src/plugin/common/index.ts +++ b/web/src/plugin/common/index.ts @@ -15,6 +15,7 @@ export { export { Loadable } from '@/components/Loadable'; export { getGlobalState } from '@/utils/global-state-helper'; export { dataUrlToFile } from '@/utils/file-helper'; +export { useGroupIdContext } from '@/context/GroupIdContext'; import { request, RequestConfig } from 'tailchat-shared'; export { getCachedUserInfo, @@ -25,6 +26,7 @@ export { useAsync, useAsyncFn, useAsyncRefresh, + useAsyncRequest, uploadFile, showToasts, showErrorToasts, @@ -63,13 +65,13 @@ export function createPluginRequest(pluginName: string) { return { get(actionName: string, config?: RequestConfig) { return request.get( - `/api/plugin:${pluginName}/${actionName}`, + `/api/plugin:${pluginName}/${actionName.replaceAll('.', '/')}`, purgeRequestConfig(config) ); }, post(actionName: string, data?: any, config?: RequestConfig) { return request.post( - `/api/plugin:${pluginName}/${actionName}`, + `/api/plugin:${pluginName}/${actionName.replaceAll('.', '/')}`, data, purgeRequestConfig(config) ); diff --git a/web/src/routes/Main/Content/Group/index.tsx b/web/src/routes/Main/Content/Group/index.tsx index c2cc93df..0e7de6bc 100644 --- a/web/src/routes/Main/Content/Group/index.tsx +++ b/web/src/routes/Main/Content/Group/index.tsx @@ -1,5 +1,6 @@ import { LoadingSpinner } from '@/components/LoadingSpinner'; import { SplitPanel } from '@/components/SplitPanel'; +import { GroupIdContextProvider } from '@/context/GroupIdContext'; import React from 'react'; import { Route, Switch, useParams } from 'react-router-dom'; import { isValidStr, useGroupInfo } from 'tailchat-shared'; @@ -32,18 +33,20 @@ export const Group: React.FC = React.memo(() => { ); return ( - }> - {isValidStr(pinnedPanelId) ? ( - -
{routeMatch}
-
- -
-
- ) : ( - routeMatch - )} -
+ + }> + {isValidStr(pinnedPanelId) ? ( + +
{routeMatch}
+
+ +
+
+ ) : ( + routeMatch + )} +
+
); }); Group.displayName = 'Group';