@@ -13,6 +13,7 @@ import 'xterm/css/xterm.css';
1313import useEventListener from '@/plugins/useEventListener' ;
1414import { debounce } from 'debounce' ;
1515import { usePersistedState } from '@/plugins/usePersistedState' ;
16+ import { SocketEvent , SocketRequest } from '@/components/server/events' ;
1617
1718const theme = {
1819 background : th `colors.black` . toString ( ) ,
@@ -172,32 +173,35 @@ export default () => {
172173 useEventListener ( 'resize' , ( ) => fit ( ) ) ;
173174
174175 useEffect ( ( ) => {
176+ const listeners : Record < string , ( s : string ) => void > = {
177+ [ SocketEvent . STATUS ] : handlePowerChangeEvent ,
178+ [ SocketEvent . CONSOLE_OUTPUT ] : handleConsoleOutput ,
179+ [ SocketEvent . INSTALL_OUTPUT ] : handleConsoleOutput ,
180+ [ SocketEvent . TRANSFER_LOGS ] : handleConsoleOutput ,
181+ [ SocketEvent . TRANSFER_STATUS ] : handleTransferStatus ,
182+ [ SocketEvent . DAEMON_MESSAGE ] : line => handleConsoleOutput ( line , true ) ,
183+ [ SocketEvent . DAEMON_ERROR ] : handleDaemonErrorOutput ,
184+ } ;
185+
175186 if ( connected && instance ) {
176187 // Do not clear the console if the server is being transferred.
177188 if ( ! isTransferring ) {
178189 terminal . clear ( ) ;
179190 }
180191
181- instance . addListener ( 'status' , handlePowerChangeEvent ) ;
182- instance . addListener ( 'console output' , handleConsoleOutput ) ;
183- instance . addListener ( 'install output' , handleConsoleOutput ) ;
184- instance . addListener ( 'transfer logs' , handleConsoleOutput ) ;
185- instance . addListener ( 'transfer status' , handleTransferStatus ) ;
186- instance . addListener ( 'daemon message' , line => handleConsoleOutput ( line , true ) ) ;
187- instance . addListener ( 'daemon error' , handleDaemonErrorOutput ) ;
188- instance . send ( 'send logs' ) ;
192+ Object . keys ( listeners ) . forEach ( ( key : string ) => {
193+ instance . addListener ( key , listeners [ key ] ) ;
194+ } ) ;
195+ instance . send ( SocketRequest . SEND_LOGS ) ;
189196 }
190197
191198 return ( ) => {
192- instance && instance . removeListener ( 'status' , handlePowerChangeEvent )
193- . removeListener ( 'console output' , handleConsoleOutput )
194- . removeListener ( 'install output' , handleConsoleOutput )
195- . removeListener ( 'transfer logs' , handleConsoleOutput )
196- . removeListener ( 'transfer status' , handleTransferStatus )
197- . removeListener ( 'daemon message' , line => handleConsoleOutput ( line , true ) )
198- . removeListener ( 'daemon error' , handleDaemonErrorOutput ) ;
199+ if ( instance ) {
200+ Object . keys ( listeners ) . forEach ( ( key : string ) => {
201+ instance . removeListener ( key , listeners [ key ] ) ;
202+ } ) ;
203+ }
199204 } ;
200- // eslint-disable-next-line react-hooks/exhaustive-deps
201205 } , [ connected , instance ] ) ;
202206
203207 return (
0 commit comments