From 7dad981112565a6f072adc6222d317180a489a30 Mon Sep 17 00:00:00 2001 From: damencho Date: Fri, 1 Apr 2016 17:08:35 -0500 Subject: [PATCH] Follow seeking while player is paused. --- modules/UI/shared_video/SharedVideo.js | 29 +++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/modules/UI/shared_video/SharedVideo.js b/modules/UI/shared_video/SharedVideo.js index 93a9023dc..fb7875442 100644 --- a/modules/UI/shared_video/SharedVideo.js +++ b/modules/UI/shared_video/SharedVideo.js @@ -98,7 +98,7 @@ export default class SharedVideoManager { window.onYouTubeIframeAPIReady = function() { self.isPlayerAPILoaded = true; let showControls = APP.conference.isLocalId(self.from) ? 1 : 0; - new YT.Player('sharedVideoIFrame', { + let p = new YT.Player('sharedVideoIFrame', { height: '100%', width: '100%', videoId: self.url, @@ -114,8 +114,19 @@ export default class SharedVideoManager { 'onStateChange': onPlayerStateChange, 'onError': onPlayerError } - }).addEventListener(// add listener for volume changes + }); + + // add listener for volume changes + p.addEventListener( "onVolumeChange", "onVolumeChange"); + + if (APP.conference.isLocalId(self.from)){ + // adds progress listener that will be firing events + // while we are paused and we change the progress of the + // video (seeking forward or backward on the video) + p.addEventListener( + "onVideoProgress", "onVideoProgress"); + } }; window.onPlayerStateChange = function(event) { @@ -138,6 +149,17 @@ export default class SharedVideoManager { } }; + /** + * Track player progress while paused. + * @param event + */ + window.onVideoProgress = function (event) { + let state = event.target.getPlayerState(); + if (state == YT.PlayerState.PAUSED) { + self.updateCheck(true); + } + }; + /** * Gets notified for volume state changed. * @param event @@ -218,7 +240,7 @@ export default class SharedVideoManager { // if its not paused, pause it player.pauseVideo(); - this.processTime(player, attributes, !playerPaused); + this.processTime(player, attributes, true); } else if (attributes.state == 'stop') { this.stopSharedVideo(this.from); } @@ -233,6 +255,7 @@ export default class SharedVideoManager { processTime (player, attributes, forceSeek) { if(forceSeek) { + console.info("Player seekTo:", attributes.time); player.seekTo(attributes.time); return; }