Skip to content

Commit 45f2aae

Browse files
built-by-asclaude
andcommitted
Extract and force MCP server refresh after add/remove operations
- Add refreshMcpServers() helper to force immediate list refresh - Shows loading spinner on add button during refresh - Waits 500ms for poller to process and return results - Both add and remove operations now trigger forced refresh - Ensures UI updates immediately after server changes 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
1 parent d3231fc commit 45f2aae

File tree

1 file changed

+29
-3
lines changed

1 file changed

+29
-3
lines changed

renderer.ts

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -918,6 +918,31 @@ async function loadMcpServers() {
918918
}
919919
}
920920

921+
// Force immediate refresh of MCP servers after add/remove operations
922+
async function refreshMcpServers() {
923+
if (!activeSessionId) {
924+
return;
925+
}
926+
927+
// Show loading state on add button
928+
const addMcpServerBtn = document.getElementById("add-mcp-server");
929+
if (addMcpServerBtn) {
930+
addMcpServerBtn.innerHTML = '<span class="loading-spinner"></span>';
931+
addMcpServerBtn.classList.add("pointer-events-none");
932+
}
933+
934+
try {
935+
// Trigger MCP list command
936+
await ipcRenderer.invoke("list-mcp-servers", activeSessionId);
937+
// Wait a bit for the poller to process and send results
938+
await new Promise(resolve => setTimeout(resolve, 500));
939+
} catch (error) {
940+
console.error("Failed to refresh MCP servers:", error);
941+
} finally {
942+
// Restore add button will happen via mcp-servers-updated event
943+
}
944+
}
945+
921946
function renderMcpServers() {
922947
const list = document.getElementById("mcp-server-list");
923948
if (!list) return;
@@ -950,7 +975,7 @@ function renderMcpServers() {
950975
if (confirm(`Remove MCP server "${server.name}"?`)) {
951976
try {
952977
await ipcRenderer.invoke("remove-mcp-server", server.name);
953-
await loadMcpServers();
978+
await refreshMcpServers();
954979
} catch (error) {
955980
alert(`Failed to remove server: ${error}`);
956981
}
@@ -1140,8 +1165,9 @@ addMcpBtn?.addEventListener("click", async () => {
11401165

11411166
try {
11421167
await ipcRenderer.invoke("add-mcp-server", name, config);
1143-
await loadMcpServers();
11441168
mcpModal?.classList.add("hidden");
1169+
// Force immediate refresh of MCP servers
1170+
await refreshMcpServers();
11451171
} catch (error) {
11461172
console.error("Error adding server:", error);
11471173
alert(`Failed to add server: ${error}`);
@@ -1170,7 +1196,7 @@ removeMcpDetailsBtn?.addEventListener("click", async () => {
11701196
try {
11711197
await ipcRenderer.invoke("remove-mcp-server", serverName);
11721198
mcpDetailsModal?.classList.add("hidden");
1173-
await loadMcpServers();
1199+
await refreshMcpServers();
11741200
} catch (error) {
11751201
alert(`Failed to remove server: ${error}`);
11761202
}

0 commit comments

Comments
 (0)