From 495656ec9d335d867ec3cc540eeaccbda08bcfe1 Mon Sep 17 00:00:00 2001 From: d5v <3230772301@qq.com> Date: Tue, 18 Mar 2025 03:48:53 +0800 Subject: [PATCH] fix: MCP switch button display bug (#3481) --- .../pages/home/Inputbar/MCPToolsButton.tsx | 27 ++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/src/renderer/src/pages/home/Inputbar/MCPToolsButton.tsx b/src/renderer/src/pages/home/Inputbar/MCPToolsButton.tsx index ca452ef7..0eaaef68 100644 --- a/src/renderer/src/pages/home/Inputbar/MCPToolsButton.tsx +++ b/src/renderer/src/pages/home/Inputbar/MCPToolsButton.tsx @@ -2,7 +2,6 @@ import { CodeOutlined } from '@ant-design/icons' import { useMCPServers } from '@renderer/hooks/useMCPServers' import { MCPServer } from '@renderer/types' import { Dropdown, Switch, Tooltip } from 'antd' -import { every } from 'lodash' import { FC, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' @@ -28,11 +27,31 @@ const MCPToolsButton: FC = ({ enabledMCPs, toggelEnableMCP, ToolbarButton // Check if all active servers are enabled const activeServers = mcpServers.filter((s) => s.isActive) - const enableAll = every(activeServers, (server) => + const anyEnable = activeServers.some((server) => enabledMCPs.some((enabledServer) => enabledServer.name === server.name) ) - const setEnableAll = () => activeServers.forEach((s) => toggelEnableMCP(s)) + const enableAll = () => + mcpServers.forEach((s) => { + toggelEnableMCP(s) + }) + + const disableAll = () => + mcpServers.forEach((s) => { + enabledMCPs.forEach((enabledServer) => { + if (enabledServer.name === s.name) { + toggelEnableMCP(s) + } + }) + }) + + const toggelAll = () => { + if (anyEnable) { + disableAll() + } else { + enableAll() + } + } const menu = (
@@ -41,7 +60,7 @@ const MCPToolsButton: FC = ({ enabledMCPs, toggelEnableMCP, ToolbarButton

{t('settings.mcp.title')}

{/* {t('mcp.enable_all')} */} - +