1010let cfg = { } ;
1111let active_cfg = 0 ;
1212let trxpoll = undefined ;
13+ let utcTimeInterval = undefined ;
1314
1415const { ipcRenderer} = require ( 'electron' )
1516const net = require ( 'net' ) ;
@@ -81,6 +82,7 @@ $(document).ready(function() {
8182 } ) ;
8283
8384 bt_quit . addEventListener ( 'click' , ( ) => {
85+ cleanupTimers ( ) ; // Clear all timers before quit
8486 const x = ipcRenderer . sendSync ( "quit" , '' ) ;
8587 } ) ;
8688
@@ -115,7 +117,7 @@ $(document).ready(function() {
115117 getStations ( ) ;
116118 } ) ;
117119
118- setInterval ( updateUtcTime , 1000 ) ;
120+ utcTimeInterval = setInterval ( updateUtcTime , 1000 ) ;
119121 window . onload = updateUtcTime ;
120122
121123 $ ( "#config-tab" ) . on ( "click" , function ( ) {
@@ -139,6 +141,11 @@ $(document).ready(function() {
139141 ipcRenderer . send ( 'get_info_result' , result ) ;
140142 } ) ;
141143
144+ // Handle cleanup request from main process
145+ ipcRenderer . on ( 'cleanup' , ( ) => {
146+ cleanupTimers ( ) ;
147+ } ) ;
148+
142149 // Dropdown change handler
143150 $ ( '#radio_type' ) . change ( function ( ) {
144151 updateRadioFields ( ) ;
@@ -396,6 +403,22 @@ async function informWavelog(CAT) {
396403 return x ;
397404}
398405
406+ function cleanupTimers ( ) {
407+ // Clear radio polling timeout
408+ if ( trxpoll ) {
409+ clearTimeout ( trxpoll ) ;
410+ trxpoll = undefined ;
411+ console . log ( 'Cleared radio polling timeout' ) ;
412+ }
413+
414+ // Clear UTC time update interval
415+ if ( utcTimeInterval ) {
416+ clearInterval ( utcTimeInterval ) ;
417+ utcTimeInterval = undefined ;
418+ console . log ( 'Cleared UTC time update interval' ) ;
419+ }
420+ }
421+
399422function updateUtcTime ( ) {
400423 const now = new Date ( ) ;
401424
0 commit comments