11const ipAddressField = document . getElementById ( 'ipAddressField' ) ;
22const connectBtn = document . getElementById ( 'connectBtn' ) ;
33const autoConnectOpt = document . getElementById ( 'autoConnectOpt' ) ;
4+ const deviceDiscovery = document . getElementById ( 'deviceDiscovery' ) ;
45
56ipAddressField . addEventListener ( 'keyup' , ( ) => {
67 connectBtn . disabled = ipAddressField . value == '' ;
@@ -11,6 +12,7 @@ ipAddressField.addEventListener('keypress', event => {
1112 }
1213} ) ;
1314connectBtn . addEventListener ( 'click' , ( ) => {
15+ if ( connectBtn . classList . contains ( 'running' ) ) return ;
1416 connectBtn . classList . add ( 'running' ) ;
1517 window . electronAPI . saveSettings ( { deviceAddress : ipAddressField . value } ) ;
1618
@@ -27,6 +29,10 @@ connectBtn.addEventListener('click', () => {
2729autoConnectOpt . addEventListener ( 'change' , ( ) => {
2830 window . electronAPI . saveSettings ( { autoConnect : autoConnectOpt . checked } ) ;
2931} ) ;
32+ deviceDiscovery . querySelector ( '.rescanBtn' ) . addEventListener ( 'click' , event => {
33+ event . preventDefault ( ) ;
34+ scanDevices ( ) ;
35+ } ) ;
3036
3137( async ( ) => {
3238 const settings = await window . electronAPI . getSettings ( ) ;
@@ -37,9 +43,39 @@ autoConnectOpt.addEventListener('change', () => {
3743 if ( settings . autoConnect && await window . electronAPI . firstConnect ( ) ) {
3844 connectBtn . click ( ) ;
3945 }
46+
47+ const params = new URLSearchParams ( window . location . search ) ;
48+ if ( params . get ( 'message' ) == 'timeout' ) {
49+ toastr . error ( 'Connection to device lost. Please check your internet connection and reconnect.' , 'Connection lost' ) ;
50+ if ( settings . autoConnect ) {
51+ setTimeout ( ( ) => {
52+ connectBtn . click ( ) ;
53+ } , 5000 ) ;
54+ }
55+ }
56+
57+ scanDevices ( ) ;
4058} ) ( ) ;
4159
42- const params = new URLSearchParams ( window . location . search ) ;
43- if ( params . get ( 'message' ) == 'timeout' ) {
44- toastr . error ( 'Connection to device lost. Please check your internet connection and reconnect.' , 'Connection lost' ) ;
60+ async function scanDevices ( ) {
61+ const rescan = deviceDiscovery . querySelector ( '.rescan' ) ;
62+ const scanning = deviceDiscovery . querySelector ( '.scanning' ) ;
63+ rescan . style . display = 'none' ;
64+ scanning . style . display = 'block' ;
65+
66+ const devices = await window . electronAPI . scanDevices ( ) ;
67+ for ( let dev of deviceDiscovery . querySelectorAll ( '.device' ) ) dev . remove ( ) ;
68+ devices . forEach ( dev => {
69+ const element = document . createElement ( 'div' ) ;
70+ element . classList . add ( 'device' ) ;
71+ element . innerHTML = `<span class="name">${ dev . name } </span><span class="ip">${ dev . ip } </span>` ;
72+ element . onclick = ( ) => {
73+ ipAddressField . value = dev . ip ;
74+ connectBtn . click ( ) ;
75+ } ;
76+ deviceDiscovery . appendChild ( element ) ;
77+ } ) ;
78+
79+ rescan . style . display = null ;
80+ scanning . style . display = null ;
4581}
0 commit comments