@@ -233,6 +233,31 @@ function getS3Suggestions(
233233 return s3Suggestions ;
234234}
235235
236+ function getDisconnectItem (
237+ connection : string ,
238+ connStatusMap : Map < string , ConnStatus >
239+ ) : SuggestionConnectionItem | null {
240+ if ( ! connection ) {
241+ return null ;
242+ }
243+ const connStatus = connStatusMap . get ( connection ) ;
244+ if ( ! connStatus || connStatus . status != "connected" ) {
245+ return null ;
246+ }
247+ const disconnectSuggestionItem : SuggestionConnectionItem = {
248+ status : "connected" ,
249+ icon : "xmark" ,
250+ iconColor : "var(--grey-text-color)" ,
251+ label : `Disconnect ${ connStatus . connection } ` ,
252+ value : "" ,
253+ onSelect : async ( _ : string ) => {
254+ const prtn = RpcApi . ConnDisconnectCommand ( TabRpcClient , connection , { timeout : 60000 } ) ;
255+ prtn . catch ( ( e ) => console . log ( "error disconnecting" , connStatus . connection , e ) ) ;
256+ } ,
257+ } ;
258+ return disconnectSuggestionItem ;
259+ }
260+
236261function getConnectionsEditItem (
237262 changeConnModalAtom : jotai . PrimitiveAtom < boolean > ,
238263 connSelected : string
@@ -420,6 +445,7 @@ const ChangeConnectionBlockModal = React.memo(
420445 filterOutNowsh
421446 ) ;
422447 const connectionsEditItem = getConnectionsEditItem ( changeConnModalAtom , connSelected ) ;
448+ const disconnectItem = getDisconnectItem ( connection , connStatusMap ) ;
423449 const newConnectionSuggestionItem = getNewConnectionSuggestionItem (
424450 connSelected ,
425451 localName ,
@@ -435,6 +461,7 @@ const ChangeConnectionBlockModal = React.memo(
435461 ...( localSuggestions ? [ localSuggestions ] : [ ] ) ,
436462 ...( remoteSuggestions ? [ remoteSuggestions ] : [ ] ) ,
437463 ...( s3Suggestions ? [ s3Suggestions ] : [ ] ) ,
464+ ...( disconnectItem ? [ disconnectItem ] : [ ] ) ,
438465 ...( connectionsEditItem ? [ connectionsEditItem ] : [ ] ) ,
439466 ...( newConnectionSuggestionItem ? [ newConnectionSuggestionItem ] : [ ] ) ,
440467 ] ;
0 commit comments