diff --git a/src/hooks/setting-hooks.ts b/src/hooks/setting-hooks.ts index 3ed67ad..1cd13d6 100644 --- a/src/hooks/setting-hooks.ts +++ b/src/hooks/setting-hooks.ts @@ -8,6 +8,7 @@ import type { IFactory, IMyLlmModel } from "@/interfaces/database/llm"; import type { LLMFactory } from "@/constants/llm"; import type { IMcpServer, IMcpServerListResponse } from "@/interfaces/database/mcp"; import type { IImportMcpServersRequestBody, ITestMcpRequestBody, ICreateMcpServerRequestBody } from "@/interfaces/request/mcp"; +import type { IPaginationBody } from "@/interfaces/request/base"; /** * 个人中心设置 @@ -141,7 +142,7 @@ export function useTeamSetting() { // 获取租户用户列表 const fetchTenantUsers = useCallback(async () => { if (!tenantInfo?.tenant_id) return; - + try { const response = await userService.listTenantUser(tenantInfo.tenant_id); if (response.data.code === 0) { @@ -254,20 +255,23 @@ export function useTeamSetting() { /** * MCP 设置 */ -export function useMcpSetting() { +export function useMcpSetting({ refreshServer }: { refreshServer: (initial?: boolean) => Promise }) { const [mcpServers, setMcpServers] = useState([]); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const [total, setTotal] = useState(0); // 获取 MCP 服务器列表 - const fetchMcpServers = useCallback(async () => { + const fetchMcpServers = useCallback(async (params?: IPaginationBody & { + keyword?: string; + }) => { try { setLoading(true); setError(null); const res = await userService.listMcpServer({ - page: 1, - size: 10, + page: params?.page || 1, + size: params?.size || 8, + keyword: params?.keyword, }); if (res.data.code === 0) { const data: IMcpServerListResponse = res.data.data; @@ -292,7 +296,7 @@ export function useMcpSetting() { setError(null); const res = await userService.importMcpServer(data); if (res.data.code === 0) { - await fetchMcpServers(); // 重新获取列表 + await refreshServer(); return { success: true }; } else { throw new Error(res.data.message || '导入 MCP 服务器失败'); @@ -305,7 +309,7 @@ export function useMcpSetting() { } finally { setLoading(false); } - }, [fetchMcpServers]); + }, []); // 导出 MCP 服务器 const exportMcpServers = useCallback(async (mcpIds: string[]) => { @@ -386,7 +390,7 @@ export function useMcpSetting() { setError(null); const res = await userService.createMcpServer(data); if (res.data.code === 0) { - await fetchMcpServers(); // 重新获取列表 + await refreshServer(true); // 重新获取列表 return { success: true, data: res.data.data }; } else { throw new Error(res.data.message || '创建 MCP 服务器失败'); @@ -399,7 +403,7 @@ export function useMcpSetting() { } finally { setLoading(false); } - }, [fetchMcpServers]); + }, []); // 更新 MCP 服务器 const updateMcpServer = useCallback(async (data: ICreateMcpServerRequestBody & { mcp_id: string }) => { @@ -408,7 +412,7 @@ export function useMcpSetting() { setError(null); const res = await userService.updateMcpServer(data); if (res.data.code === 0) { - await fetchMcpServers(); // 重新获取列表 + await refreshServer(); // 刷新列表 return { success: true, data: res.data.data }; } else { throw new Error(res.data.message || '更新 MCP 服务器失败'); @@ -421,7 +425,7 @@ export function useMcpSetting() { } finally { setLoading(false); } - }, [fetchMcpServers]); + }, []); // 删除 MCP 服务器 const deleteMcpServer = useCallback(async (mcpId: string) => { @@ -430,7 +434,7 @@ export function useMcpSetting() { setError(null); const res = await userService.removeMcpServer([mcpId]); if (res.data.code === 0) { - await fetchMcpServers(); // 重新获取列表 + await refreshServer(); // 刷新列表 return { success: true }; } else { throw new Error(res.data.message || '删除 MCP 服务器失败'); @@ -443,10 +447,10 @@ export function useMcpSetting() { } finally { setLoading(false); } - }, [fetchMcpServers]); + }, []); // 批量删除 MCP 服务器 - const deleteMcpServers = useCallback(async (mcpIds: string[]) => { + const batchDeleteMcpServers = useCallback(async (mcpIds: string[]) => { try { setLoading(true); setError(null); @@ -465,7 +469,7 @@ export function useMcpSetting() { } finally { setLoading(false); } - }, [fetchMcpServers]); + }, []); return { // 状态 @@ -473,7 +477,7 @@ export function useMcpSetting() { loading, error, total, - + // 方法 fetchMcpServers, importMcpServers, @@ -483,7 +487,7 @@ export function useMcpSetting() { createMcpServer, updateMcpServer, deleteMcpServer, - deleteMcpServers, + batchDeleteMcpServers, }; } diff --git a/src/pages/setting/components/McpForm.tsx b/src/pages/setting/components/McpForm.tsx index e8e9e98..bac1f20 100644 --- a/src/pages/setting/components/McpForm.tsx +++ b/src/pages/setting/components/McpForm.tsx @@ -83,8 +83,6 @@ const McpForm: React.FC = ({ const [testLoading, setTestLoading] = useState(false); - - const [testResult, setTestResult] = useState<{ success: boolean; tools?: McpTool[]; @@ -121,7 +119,7 @@ const McpForm: React.FC = ({ return t }); setTestResult({ - success: true, + success: tools.length > 0, tools, }); } @@ -201,7 +199,7 @@ const McpForm: React.FC = ({ } setTestResult({ - success: true, + success: tools.length > 0, tools, }); } else { @@ -359,7 +357,7 @@ const McpForm: React.FC = ({