@@ -8,10 +8,9 @@ chrome.runtime.sendMessage({ started: true }, {}, (response) => {
88
99// Element may not be available right away when the page loads.
1010window . getElement = ( selector , callback ) => {
11- const search = ( ) => document . querySelector ( selector ) ;
1211 let maxAttempts = 10 ;
1312 let iid = setInterval ( ( ) => {
14- const $el = search ( ) ;
13+ const $el = document . querySelector ( selector ) ;
1514 if ( $el || -- maxAttempts === 0 ) {
1615 clearInterval ( iid ) ;
1716 }
@@ -21,12 +20,13 @@ window.getElement = (selector, callback) => {
2120 } , 1000 ) ;
2221} ;
2322
23+ // Adds a Next Video button next to the Play/Pause button of the video player.
2424window . setNextButton = ( $playButton , buttonClass ) => {
2525 // Prepend all class names with app name to avoid collisions.
2626 let $thumbnail , $length , $title ;
27- const $nextButton = m ( 'a.veefeed -next-button.' + buttonClass , {
27+ const $nextButton = m ( 'a._veefeed -next-button.' + buttonClass , {
2828 onclick : ( e ) => {
29- if ( $nextButton . classList . contains ( 'veefeed -show' ) ) {
29+ if ( $nextButton . classList . contains ( '_veefeed -show' ) ) {
3030 window . location = $nextButton . href ;
3131 }
3232 e . preventDefault ( ) ;
@@ -41,14 +41,14 @@ window.setNextButton = ($playButton, buttonClass) => {
4141 } , m ( 'path' , {
4242 d : 'M 12,24 20.5,18 12,12 V 24 z M 22,12 v 12 h 2 V 12 h -2 z' ,
4343 } ) ) ,
44- m ( 'div.veefeed -next-video' , [
45- m ( 'div.veefeed -left-side' , [
44+ m ( 'div._veefeed -next-video' , [
45+ m ( 'div._veefeed -left-side' , [
4646 $thumbnail = m ( 'img' ) ,
47- $length = m ( 'span.veefeed -length' ) ,
47+ $length = m ( 'span._veefeed -length' ) ,
4848 ] ) ,
49- m ( 'div.veefeed -right-side' , [
50- m ( 'div.veefeed -title-head' , 'NEXT' ) ,
51- $title = m ( 'div.veefeed -title' ) ,
49+ m ( 'div._veefeed -right-side' , [
50+ m ( 'div._veefeed -title-head' , 'NEXT' ) ,
51+ $title = m ( 'div._veefeed -title' ) ,
5252 ] ) ,
5353 ] ) ,
5454 ] ) ;
@@ -59,13 +59,14 @@ window.setNextButton = ($playButton, buttonClass) => {
5959 const onQueueUpdate = ( video ) => {
6060 if ( video ) {
6161 $nextButton . href = video . url ;
62- $nextButton . classList . add ( 'veefeed -show' ) ;
62+ $nextButton . classList . add ( '_veefeed -show' ) ;
6363 $thumbnail . src = video . thumbnail ;
6464 $length . textContent = formatVideoLength ( video . length ) ;
6565 $title . textContent = video . title ;
6666 } else {
67- $nextButton . classList . remove ( 'veefeed -show' ) ;
67+ $nextButton . classList . remove ( '_veefeed -show' ) ;
6868 }
69+ queuedVideo = video ;
6970 } ;
7071
7172 chrome . runtime . onMessage . addListener ( ( message ) => {
@@ -78,3 +79,14 @@ window.setNextButton = ($playButton, buttonClass) => {
7879
7980 return $nextButton ;
8081} ;
82+
83+ // Called when the video has ended.
84+ // Lets the background page know, in case there is a queued video.
85+ window . videoEnded = ( msg ) => {
86+ document . body . classList . add ( '_veefeed-ended' ) ;
87+ document . body . classList . toggle ( '_veefeed-queued-video' , ! ! queuedVideo ) ;
88+ chrome . runtime . sendMessage ( {
89+ ended : true ,
90+ ...msg ,
91+ } ) ;
92+ } ;
0 commit comments