@@ -85,33 +85,45 @@ export const init = async () => {
8585 } ) ;
8686} ;
8787
88- export const initPlayer = async ( ) => {
89- const player = await getAPlayer ( ) ;
88+ let initLock = false ;
89+ const initPlayer = async ( ) => {
90+ if ( initLock ) return ;
91+ initLock = true ;
9092
91- if ( ! player || player . _enhancerInit )
92- return ; // already initialized this player
93- await waitForButtonsAndSetIds ( ) ;
94-
95- player . addEventListener ( 'ended' , ( ) => sendMessage ( Message . QUEUE_NEXT , null , false ) ) ;
96- const handlers = getPlayerController ( ) ;
97- handlers ?. store . subscribe ( e => e . qualityLevels , setPlayerQuality ) ;
98- setPlayerQuality ( ) ;
99-
100- const { autoplay, autoplayQueue } = options ;
101- console . debug ( 'autoplay?' , autoplay , 'autoplayQueue?' , autoplayQueue ) ;
102- await addPlayerControls ( player ) ;
103- if ( options . autoExpand ) document . body . parentElement . classList . toggle ( 'enhancer-fullVideo' ) ;
104-
105- const { canNext, canPrev, length : queueLen } = await sendMessage ( Message . GET_QSTATUS ) ;
106- console . debug ( 'canGoNext?' , canNext , 'canGoPrev?' , canPrev , 'queueLen:' , queueLen ) ;
107- updatePlayerControls ( player , canNext , canPrev ) ;
108- player . autoplay = autoplay || ( autoplayQueue && ! ! queueLen ) ;
10993 try {
110- if ( player . autoplay ) await player . play ( ) ;
111- else player . pause ( ) ;
112- } catch { }
94+ const player = await getAPlayer ( ) ;
95+
96+ if ( ! player || player . _enhancerInit )
97+ return ; // already initialized this player
98+ const handlers = getPlayerController ( ) ;
99+
100+ await waitForButtonsAndSetIds ( ) ;
101+
102+ if ( ! handlers )
103+ return setTimeout ( initPlayer , 100 ) ;
113104
114- player . _enhancerInit = true ;
105+ player . addEventListener ( 'ended' , ( ) => sendMessage ( Message . QUEUE_NEXT , null , false ) ) ;
106+ handlers ?. store . subscribe ( e => e . qualityLevels , setPlayerQuality ) ;
107+ setPlayerQuality ( ) ;
108+
109+ const { autoplay, autoplayQueue } = options ;
110+ console . debug ( 'autoplay?' , autoplay , 'autoplayQueue?' , autoplayQueue ) ;
111+ await addPlayerControls ( player ) ;
112+ if ( options . autoExpand ) document . body . parentElement . classList . toggle ( 'enhancer-fullVideo' ) ;
113+
114+ const { canNext, canPrev, length : queueLen } = await sendMessage ( Message . GET_QSTATUS ) ;
115+ console . debug ( 'canGoNext?' , canNext , 'canGoPrev?' , canPrev , 'queueLen:' , queueLen ) ;
116+ updatePlayerControls ( player , canNext , canPrev ) ;
117+ player . autoplay = autoplay || ( autoplayQueue && ! ! queueLen ) ;
118+ try {
119+ if ( player . autoplay ) await player . play ( ) ;
120+ else player . pause ( ) ;
121+ } catch { }
122+
123+ player . _enhancerInit = true ;
124+ } finally {
125+ initLock = false ;
126+ }
115127} ;
116128
117129export const findAPlayer = ( ) => document . querySelector < Player > ( '#video-player video' ) ;
0 commit comments