From 45f2aaefa3e461819a5dacfe9879ec60f79bbbb8 Mon Sep 17 00:00:00 2001 From: Amrit Subramanian Date: Tue, 7 Oct 2025 23:40:39 -0400 Subject: [PATCH] Extract and force MCP server refresh after add/remove operations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- renderer.ts | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/renderer.ts b/renderer.ts index 2d09284..6eebe33 100644 --- a/renderer.ts +++ b/renderer.ts @@ -918,6 +918,31 @@ async function loadMcpServers() { } } +// Force immediate refresh of MCP servers after add/remove operations +async function refreshMcpServers() { + if (!activeSessionId) { + return; + } + + // Show loading state on add button + const addMcpServerBtn = document.getElementById("add-mcp-server"); + if (addMcpServerBtn) { + addMcpServerBtn.innerHTML = ''; + addMcpServerBtn.classList.add("pointer-events-none"); + } + + try { + // Trigger MCP list command + await ipcRenderer.invoke("list-mcp-servers", activeSessionId); + // Wait a bit for the poller to process and send results + await new Promise(resolve => setTimeout(resolve, 500)); + } catch (error) { + console.error("Failed to refresh MCP servers:", error); + } finally { + // Restore add button will happen via mcp-servers-updated event + } +} + function renderMcpServers() { const list = document.getElementById("mcp-server-list"); if (!list) return; @@ -950,7 +975,7 @@ function renderMcpServers() { if (confirm(`Remove MCP server "${server.name}"?`)) { try { await ipcRenderer.invoke("remove-mcp-server", server.name); - await loadMcpServers(); + await refreshMcpServers(); } catch (error) { alert(`Failed to remove server: ${error}`); } @@ -1140,8 +1165,9 @@ addMcpBtn?.addEventListener("click", async () => { try { await ipcRenderer.invoke("add-mcp-server", name, config); - await loadMcpServers(); mcpModal?.classList.add("hidden"); + // Force immediate refresh of MCP servers + await refreshMcpServers(); } catch (error) { console.error("Error adding server:", error); alert(`Failed to add server: ${error}`); @@ -1170,7 +1196,7 @@ removeMcpDetailsBtn?.addEventListener("click", async () => { try { await ipcRenderer.invoke("remove-mcp-server", serverName); mcpDetailsModal?.classList.add("hidden"); - await loadMcpServers(); + await refreshMcpServers(); } catch (error) { alert(`Failed to remove server: ${error}`); }