@@ -16,10 +16,9 @@ export let _ytAPI: YoutubePlayer | null = null;
1616
1717export const renderer = createRenderer < {
1818 observerCallback : MutationCallback ;
19- hasAddedEvents : boolean ;
2019 observer ?: MutationObserver ;
2120 videoDataChange : ( ) => Promise < void > ;
22- progressCallback : ( evt : Event ) => void ;
21+ updateTimestampInterval ?: NodeJS . Timeout | string | number ;
2322} , SyncedLyricsPluginConfig > ( {
2423 onConfigChange ( newConfig ) {
2524 setConfig ( newConfig ) ;
@@ -50,15 +49,12 @@ export const renderer = createRenderer<{
5049 await this . videoDataChange ( ) ;
5150 } ,
5251
53- hasAddedEvents : false ,
54-
5552 async videoDataChange ( ) {
56- if ( ! this . hasAddedEvents ) {
57- const video = document . querySelector ( 'video' ) ;
58-
59- video ?. addEventListener ( 'timeupdate' , this . progressCallback ) ;
60-
61- if ( video ) this . hasAddedEvents = true ;
53+ if ( ! this . updateTimestampInterval ) {
54+ this . updateTimestampInterval = setInterval (
55+ ( ) => setCurrentTime ( ( _ytAPI ?. getCurrentTime ( ) ?? 0 ) * 1000 ) ,
56+ 100 ,
57+ ) ;
6258 }
6359
6460 this . observer ??= new MutationObserver (
@@ -73,16 +69,6 @@ export const renderer = createRenderer<{
7369 header . removeAttribute ( 'disabled' ) ;
7470 } ,
7571
76- progressCallback ( evt : Event ) {
77- switch ( evt . type ) {
78- case 'timeupdate' : {
79- const video = evt . target as HTMLVideoElement ;
80- setCurrentTime ( video . currentTime * 1000 ) ;
81- break ;
82- }
83- }
84- } ,
85-
8672 async start ( ctx : RendererContext < SyncedLyricsPluginConfig > ) {
8773 setConfig ( await ctx . getConfig ( ) ) ;
8874
0 commit comments