File tree Expand file tree Collapse file tree 2 files changed +17
-7
lines changed
Expand file tree Collapse file tree 2 files changed +17
-7
lines changed Original file line number Diff line number Diff line change @@ -240,7 +240,8 @@ describe("Toolbar Class", () => {
240240 } ,
241241 stop : {
242242 style : { color : "" } ,
243- addEventListener : jest . fn ( )
243+ addEventListener : jest . fn ( ) ,
244+ removeEventListener : jest . fn ( )
244245 } ,
245246 record : {
246247 className : ""
@@ -267,6 +268,10 @@ describe("Toolbar Class", () => {
267268 expect ( global . saveButtonAdvanced . disabled ) . toBe ( true ) ;
268269 expect ( global . saveButton . className ) . toBe ( "grey-text inactiveLink" ) ;
269270 expect ( elements . record . className ) . toBe ( "grey-text inactiveLink" ) ;
271+ expect ( elements . stop . removeEventListener ) . toHaveBeenCalledWith (
272+ "click" ,
273+ expect . any ( Function )
274+ ) ;
270275 expect ( elements . stop . addEventListener ) . toHaveBeenCalledWith ( "click" , expect . any ( Function ) ) ;
271276
272277 const stopClickHandler = elements . stop . addEventListener . mock . calls [ 0 ] [ 1 ] ;
Original file line number Diff line number Diff line change @@ -406,6 +406,14 @@ class Toolbar {
406406 }
407407 }
408408
409+ // Named handler to prevent memory leak from duplicate listeners
410+ const stopClickHandler = ( ) => {
411+ clearTimeout ( play_button_debounce_timeout ) ;
412+ isPlayIconRunning = true ;
413+ this . activity . hideMsgs ( ) ;
414+ handleClick ( ) ;
415+ } ;
416+
409417 var tempClick = ( playIcon . onclick = ( ) => {
410418 const hideMsgs = ( ) => {
411419 this . activity . hideMsgs ( ) ;
@@ -424,12 +432,9 @@ class Toolbar {
424432 handleClick ( ) ;
425433 } , 2000 ) ;
426434
427- stopIcon . addEventListener ( "click" , function ( ) {
428- clearTimeout ( play_button_debounce_timeout ) ;
429- isPlayIconRunning = true ;
430- hideMsgs ( ) ;
431- handleClick ( ) ;
432- } ) ;
435+ // Remove existing listener before adding to prevent accumulation
436+ stopIcon . removeEventListener ( "click" , stopClickHandler ) ;
437+ stopIcon . addEventListener ( "click" , stopClickHandler ) ;
433438 } ) ;
434439 }
435440
You can’t perform that action at this time.
0 commit comments