@@ -1976,15 +1976,19 @@ class Activity {
19761976 * Handles the recording process.
19771977 */
19781978 function recording ( ) {
1979- start . addEventListener ( "click" , async function handler ( ) {
1979+ // Remove any previous handler to avoid multiple triggers
1980+ if ( start . _recordHandler ) {
1981+ start . removeEventListener ( "click" , start . _recordHandler ) ;
1982+ }
1983+ const handler = async function handler ( ) {
19801984 try {
19811985 const stream = await recordScreen ( ) ;
19821986 const mimeType = "video/webm" ;
19831987 mediaRecorder = createRecorder ( stream , mimeType ) ;
19841988 if ( flag == 1 ) {
1985- this . removeEventListener ( "click" , handler ) ;
1989+ start . removeEventListener ( "click" , handler ) ;
19861990 // Add stop handler
1987- start . addEventListener ( "click" , function stopHandler ( ) {
1991+ const stopHandler = function stopHandler ( ) {
19881992 if ( mediaRecorder && mediaRecorder . state === "recording" ) {
19891993 mediaRecorder . stop ( ) ;
19901994 mediaRecorder = new MediaRecorder ( stream ) ;
@@ -2000,10 +2004,11 @@ class Activity {
20002004 . forEach ( track => track . stop ( ) ) ;
20012005 }
20022006 }
2003- this . removeEventListener ( "click" , stopHandler ) ;
2007+ start . removeEventListener ( "click" , stopHandler ) ;
20042008 // Re-enable recording for next time
20052009 recording ( ) ;
2006- } ) ;
2010+ } ;
2011+ start . addEventListener ( "click" , stopHandler ) ;
20072012 }
20082013 recInside . setAttribute ( "fill" , "red" ) ;
20092014 } catch ( error ) {
@@ -2013,7 +2018,9 @@ class Activity {
20132018 // Re-enable recording button
20142019 recording ( ) ;
20152020 }
2016- } ) ;
2021+ } ;
2022+ start . addEventListener ( "click" , handler ) ;
2023+ start . _recordHandler = handler ;
20172024 }
20182025
20192026 // Start recording process if not already executing
0 commit comments