From a2ad006171f0f95b6764e0d84be0948d9d6be2fb Mon Sep 17 00:00:00 2001 From: Danielle Maywood Date: Tue, 15 Jul 2025 09:55:10 +0000 Subject: [PATCH] fix(site): only attempt to watch containers when agent connected --- .../resources/useAgentContainers.test.tsx | 18 ++++++++++++++++++ .../modules/resources/useAgentContainers.ts | 6 +++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/site/src/modules/resources/useAgentContainers.test.tsx b/site/src/modules/resources/useAgentContainers.test.tsx index 922941e04c074..dbdcdf6f21293 100644 --- a/site/src/modules/resources/useAgentContainers.test.tsx +++ b/site/src/modules/resources/useAgentContainers.test.tsx @@ -193,4 +193,22 @@ describe("useAgentContainers", () => { displayErrorSpy.mockRestore(); watchAgentContainersSpy.mockRestore(); }); + + it("does not establish WebSocket connection when agent is not connected", () => { + const watchAgentContainersSpy = jest.spyOn(API, "watchAgentContainers"); + + const disconnectedAgent = { + ...MockWorkspaceAgent, + status: "disconnected" as const, + }; + + const { result } = renderHook(() => useAgentContainers(disconnectedAgent), { + wrapper: createWrapper(), + }); + + expect(watchAgentContainersSpy).not.toHaveBeenCalled(); + expect(result.current).toBeUndefined(); + + watchAgentContainersSpy.mockRestore(); + }); }); diff --git a/site/src/modules/resources/useAgentContainers.ts b/site/src/modules/resources/useAgentContainers.ts index 0db4e2fc4b613..e2239fe4666f1 100644 --- a/site/src/modules/resources/useAgentContainers.ts +++ b/site/src/modules/resources/useAgentContainers.ts @@ -31,6 +31,10 @@ export function useAgentContainers( ); useEffect(() => { + if (agent.status !== "connected") { + return; + } + const socket = watchAgentContainers(agent.id); socket.addEventListener("message", (event) => { @@ -53,7 +57,7 @@ export function useAgentContainers( }); return () => socket.close(); - }, [agent.id, updateDevcontainersCache]); + }, [agent.id, agent.status, updateDevcontainersCache]); return devcontainers; }