@@ -131,6 +131,26 @@ export function ConnectionDialog({
131131 return lastFetchedUrl || storedUrl || effectiveServerUrl ;
132132 } , [ lastFetchedUrl , storedUrl , effectiveServerUrl ] ) ;
133133
134+ const isConnectedToRoom = Boolean ( serverConfig . enabled && currentRoomId ) ;
135+
136+ const toggleButtonLabel = isConnectedToRoom
137+ ? 'Disconnect'
138+ : isFetchingRooms
139+ ? 'Connecting…'
140+ : 'Connect' ;
141+
142+ const toggleButtonDisabled = isConnectedToRoom
143+ ? false
144+ : ! hasEffectiveServerUrl || isFetchingRooms ;
145+
146+ const handleToggleClick = ( ) => {
147+ if ( isConnectedToRoom ) {
148+ handleDisconnectClick ( ) ;
149+ } else {
150+ void handleConnectClick ( ) ;
151+ }
152+ } ;
153+
134154 const handleRoomSelection = ( roomId : string ) => {
135155 if ( ! resolvedServerUrl ) {
136156 setRoomsError ( 'Connect to a server before selecting a room.' ) ;
@@ -148,8 +168,6 @@ export function ConnectionDialog({
148168 onSelectRoom ( newRoomId , resolvedServerUrl ) ;
149169 } ;
150170
151- const isConnectedToRoom = Boolean ( serverConfig . enabled && currentRoomId ) ;
152-
153171 return (
154172 < div className = "connection-dialog-overlay" onClick = { onClose } >
155173 < div className = "connection-dialog" onClick = { ( e ) => e . stopPropagation ( ) } >
@@ -195,18 +213,11 @@ export function ConnectionDialog({
195213
196214 < div className = "button-group" >
197215 < button
198- onClick = { handleConnectClick }
199- disabled = { isFetchingRooms || ! hasEffectiveServerUrl }
200- className = "btn-primary"
201- >
202- { isFetchingRooms ? 'Connecting…' : 'Connect' }
203- </ button >
204- < button
205- onClick = { handleDisconnectClick }
206- disabled = { ! isConnectedToRoom && ! storedUrl }
207- className = "btn-secondary"
216+ onClick = { handleToggleClick }
217+ disabled = { toggleButtonDisabled }
218+ className = { isConnectedToRoom ? 'btn-secondary' : 'btn-primary' }
208219 >
209- Disconnect
220+ { toggleButtonLabel }
210221 </ button >
211222 < button onClick = { onClose } className = "btn-secondary" >
212223 Close
0 commit comments