11$ ( document ) . ready ( function ( ) {
22 const ACTIVE_TIMERS_SELECTOR = '#active-timers' ;
3- const TIMER_CARD_SELECTOR = `${ ACTIVE_TIMERS_SELECTOR } .card[id^="timer-"]` ;
3+ const TIMER_CARD_SELECTOR = `${ ACTIVE_TIMERS_SELECTOR } [data-timer-id]` ;
4+ const DASHBOARD_PATH = '/' ;
45
56 function updateDurations ( ) {
67 $ ( TIMER_CARD_SELECTOR ) . each ( function ( ) {
@@ -43,7 +44,7 @@ $(document).ready(function() {
4344 function getLocalTimerIds ( ) {
4445 return $ ( TIMER_CARD_SELECTOR )
4546 . map ( function ( ) {
46- return parseInt ( $ ( this ) . attr ( 'id' ) . replace ( ' timer-' , ' ') , 10 ) ;
47+ return parseInt ( $ ( this ) . data ( ' timer-id ') , 10 ) ;
4748 } )
4849 . get ( )
4950 . filter ( Number . isFinite )
@@ -52,16 +53,21 @@ $(document).ready(function() {
5253
5354 function syncActiveTimers ( ) {
5455 const timersContainer = $ ( ACTIVE_TIMERS_SELECTOR ) ;
55- if ( timersContainer . length === 0 ) {
56- return ;
57- }
5856
5957 $ . getJSON ( '/api/list_active_sessions/' )
6058 . done ( function ( sessions ) {
6159 const serverIds = sessions
6260 . filter ( session => session . is_active )
6361 . map ( session => session . id )
6462 . sort ( ( a , b ) => a - b ) ;
63+
64+ if ( timersContainer . length === 0 ) {
65+ if ( window . location . pathname === DASHBOARD_PATH && serverIds . length > 0 ) {
66+ window . location . reload ( ) ;
67+ }
68+ return ;
69+ }
70+
6571 const localIds = getLocalTimerIds ( ) ;
6672 const serverSet = new Set ( serverIds ) ;
6773 const allLocalTimersStillActive = localIds . every ( id => serverSet . has ( id ) ) ;
0 commit comments