@@ -3,7 +3,7 @@ import { useDialog } from "@opencode-ai/ui/context/dialog"
33import { Icon } from "@opencode-ai/ui/icon"
44import { Switch } from "@opencode-ai/ui/switch"
55import { Tabs } from "@opencode-ai/ui/tabs"
6- import { useMutation } from "@tanstack/solid-query"
6+ import { useMutation , useQueryClient } from "@tanstack/solid-query"
77import { showToast } from "@opencode-ai/ui/toast"
88import { useNavigate } from "@solidjs/router"
99import { type Accessor , createEffect , createMemo , For , type JSXElement , onCleanup , Show } from "solid-js"
@@ -15,6 +15,7 @@ import { useSDK } from "@/context/sdk"
1515import { normalizeServerUrl , ServerConnection , useServer } from "@/context/server"
1616import { useSync } from "@/context/sync"
1717import { useCheckServerHealth , type ServerHealth } from "@/utils/server-health"
18+ import { loadMcpQuery } from "@/context/global-sync"
1819
1920const pollMs = 10_000
2021
@@ -137,14 +138,14 @@ const useMcpToggleMutation = () => {
137138 const sync = useSync ( )
138139 const sdk = useSDK ( )
139140 const language = useLanguage ( )
141+ const queryClient = useQueryClient ( )
140142
141143 return useMutation ( ( ) => ( {
142144 mutationFn : async ( name : string ) => {
143145 const status = sync . data . mcp [ name ]
144146 await ( status ?. status === "connected" ? sdk . client . mcp . disconnect ( { name } ) : sdk . client . mcp . connect ( { name } ) )
145- const result = await sdk . client . mcp . status ( )
146- if ( result . data ) sync . set ( "mcp" , result . data )
147147 } ,
148+ onSuccess : ( ) => queryClient . refetchQueries ( { queryKey : loadMcpQuery ( sync . directory ) . queryKey } ) ,
148149 onError : ( err ) => {
149150 showToast ( {
150151 variant : "error" ,
@@ -162,14 +163,6 @@ export function StatusPopoverBody(props: { shown: Accessor<boolean> }) {
162163 const dialog = useDialog ( )
163164 const language = useLanguage ( )
164165 const navigate = useNavigate ( )
165- const sdk = useSDK ( )
166-
167- const [ load , setLoad ] = createStore ( {
168- lspDone : false ,
169- lspLoading : false ,
170- mcpDone : false ,
171- mcpLoading : false ,
172- } )
173166
174167 const fail = ( err : unknown ) => {
175168 showToast ( {
@@ -181,40 +174,6 @@ export function StatusPopoverBody(props: { shown: Accessor<boolean> }) {
181174
182175 createEffect ( ( ) => {
183176 if ( ! props . shown ( ) ) return
184-
185- if ( ! sync . data . mcp_ready && ! load . mcpDone && ! load . mcpLoading ) {
186- setLoad ( "mcpLoading" , true )
187- void sdk . client . mcp
188- . status ( )
189- . then ( ( result ) => {
190- sync . set ( "mcp" , result . data ?? { } )
191- sync . set ( "mcp_ready" , true )
192- } )
193- . catch ( ( err ) => {
194- setLoad ( "mcpDone" , true )
195- fail ( err )
196- } )
197- . finally ( ( ) => {
198- setLoad ( "mcpLoading" , false )
199- } )
200- }
201-
202- if ( ! sync . data . lsp_ready && ! load . lspDone && ! load . lspLoading ) {
203- setLoad ( "lspLoading" , true )
204- void sdk . client . lsp
205- . status ( )
206- . then ( ( result ) => {
207- sync . set ( "lsp" , result . data ?? [ ] )
208- sync . set ( "lsp_ready" , true )
209- } )
210- . catch ( ( err ) => {
211- setLoad ( "lspDone" , true )
212- fail ( err )
213- } )
214- . finally ( ( ) => {
215- setLoad ( "lspLoading" , false )
216- } )
217- }
218177 } )
219178
220179 let dialogRun = 0
0 commit comments