diff --git a/www/js/player.js b/www/js/player.js index d9d33050..3128c629 100644 --- a/www/js/player.js +++ b/www/js/player.js @@ -103,15 +103,6 @@ var YouTubePlayer = function (data) { self.player.playVideo(); }; - self.isPaused = function (callback) { - if(self.player && self.player.getPlayerState) { - var state = self.player.getPlayerState(); - callback(state != YT.PlayerState.PLAYING); - } else { - callback(false); - } - }; - self.getTime = function (callback) { if(self.player && self.player.getCurrentTime) callback(self.player.getCurrentTime()); @@ -205,10 +196,6 @@ var VimeoPlayer = function (data) { self.player.api("play"); }; - self.isPaused = function (callback) { - callback(self.paused); - }; - self.getTime = function (callback) { if(self.player && self.player.api) { // Vimeo api returns time as a string because fuck logic @@ -315,10 +302,6 @@ var VimeoFlashPlayer = function (data) { self.player.api_play(); }; - self.isPaused = function (callback) { - callback(self.paused); - }; - self.getTime = function (callback) { if(self.player && self.player.api_getCurrentTime) { var t = parseFloat(self.player.api_getCurrentTime()); @@ -425,10 +408,6 @@ var DailymotionPlayer = function (data) { self.player.api("play"); }; - self.isPaused = function (callback) { - callback(self.paused); - }; - self.getTime = function (callback) { if(self.player) callback(self.player.currentTime); @@ -536,13 +515,6 @@ var SoundcloudPlayer = function (data) { self.player.play(); }; - self.isPaused = function (callback) { - if(self.player && self.player.isPaused) - self.player.isPaused(callback); - else - callback(false); - }; - self.getTime = function (callback) { if(self.player && self.player.getPosition) { self.player.getPosition(function (pos) { @@ -595,8 +567,6 @@ var LivestreamPlayer = function (data) { self.play = function () { }; - self.isPaused = function () { }; - self.getTime = function () { }; self.seek = function () { }; @@ -645,8 +615,6 @@ var TwitchTVPlayer = function (data) { self.play = function () { }; - self.isPaused = function () { }; - self.getTime = function () { }; self.seek = function () { }; @@ -696,8 +664,6 @@ var JustinTVPlayer = function (data) { self.play = function () { }; - self.isPaused = function () { }; - self.getTime = function () { }; self.seek = function () { }; @@ -755,8 +721,6 @@ var RTMPPlayer = function (data) { self.play = function () { }; - self.isPaused = function () { }; - self.getTime = function () { }; self.seek = function () { }; @@ -850,11 +814,6 @@ var JWPlayer = function (data) { jwplayer().play(true); }; - self.isPaused = function (callback) { - if(jwplayer) - callback(jwplayer().getState() !== "PLAYING"); - }; - self.getTime = function (callback) { // Only return time for non-live media if(jwplayer && jwplayer().getDuration() != -1) { @@ -904,8 +863,6 @@ var UstreamPlayer = function (data) { self.play = function () { }; - self.isPaused = function () { }; - self.getTime = function () { }; self.seek = function () { }; @@ -941,8 +898,6 @@ var ImgurPlayer = function (data) { self.play = function () { }; - self.isPaused = function () { }; - self.getTime = function () { }; self.seek = function () { }; @@ -982,8 +937,6 @@ var CustomPlayer = function (data) { self.play = function () { }; - self.isPaused = function () { }; - self.getTime = function () { }; self.seek = function () { }; @@ -995,88 +948,6 @@ var CustomPlayer = function (data) { self.init(); }; -var GoogleDocsPlayer = function (data) { - var self = this; - self.init = function (data) { - self.videoId = data.id; - self.videoLength = data.seconds; - self.paused = false; - var wmode = USEROPTS.wmode_transparent ? "transparent" : "opaque"; - - var meta = data.meta; - if (!meta || !meta.object || !meta.params) { - // Reset videoId so that a changeMedia with the appropriate data - // will properly reset the player - self.videoId = ""; - return; - } - - self.player = $("", meta.object)[0]; - $(self.player).attr("data", meta.object.data); - $(self.player).attr("width", VWIDTH) - .attr("height", VHEIGHT); - meta.params.forEach(function (p) { - $("", p).appendTo(self.player); - }); - removeOld($(self.player)); - self.setVolume(VOLUME); - resizeStuff(); - }; - - self.load = function (data) { - self.init(data); - }; - - self.pause = function () { - if(self.player && self.player.pauseVideo) - self.player.pauseVideo(); - }; - - self.play = function () { - if(self.player && self.player.playVideo) - self.player.playVideo(); - }; - - self.isPaused = function (callback) { - if(self.player && self.player.getPlayerState) { - var state = self.player.getPlayerState(); - callback(state != YT.PlayerState.PLAYING); - } else { - callback(false); - } - }; - - self.getTime = function (callback) { - if(self.player && self.player.getCurrentTime) - callback(self.player.getCurrentTime()); - }; - - self.seek = function (time) { - if(self.player && self.player.seekTo) - self.player.seekTo(time, true); - }; - - self.getVolume = function (cb) { - if (!self.player || !self.player.getVolume || !self.player.isMuted) { - return; - } - - // YouTube's API is strange in the sense that getVolume() returns - // the regular (unmuted) volume even if it is muted... - // YouTube's volume is 0..100, normalize it to 0..1 - var vol = self.player.isMuted() ? 0 : (self.player.getVolume() / 100); - cb(vol); - }; - - self.setVolume = function (vol) { - if (self.player && self.player.setVolume) { - self.player.setVolume(vol * 100); - } - }; - - self.init(data); -}; - function FilePlayer(data) { var self = this; @@ -1138,10 +1009,6 @@ function FilePlayer(data) { self.player.play2(); }; - self.isPaused = function (cb) { - cb(self.paused); - }; - self.getTime = function (cb) { cb(self.currentTime); }; @@ -1191,6 +1058,30 @@ function FilePlayer(data) { }); removeOld(video); self.player = video[0]; + if (!Object.hasOwnProperty.call(self, "paused")) { + Object.defineProperty(self, "paused", { + get: function () { + return self.player.paused; + } + }); + } + self.player.onpause = function () { + self.paused = true; + if (CLIENT.leader) { + sendVideoUpdate(); + } + }; + self.player.onplay = function () { + self.paused = false; + if (CLIENT.leader) { + sendVideoUpdate(); + } + }; + self.player.onended = function () { + if (CLIENT.leader) { + socket.emit("playNext"); + } + }; self.setVolume(VOLUME); resizeStuff(); }; @@ -1215,12 +1106,6 @@ function FilePlayer(data) { } }; - self.isPaused = function (callback) { - if (self.player) { - callback(self.player.paused); - } - }; - self.getTime = function (callback) { if (self.player) { callback(self.player.currentTime); @@ -1306,17 +1191,14 @@ function handleMediaUpdate(data) { // Handle pause/unpause if(data.paused) { - PLAYER.isPaused(function (paused) { - if (!paused) { - PLAYER.seek(data.currentTime); - PLAYER.pause(); - } - }); + if (!PLAYER.paused) { + PLAYER.seek(data.currentTime); + PLAYER.pause(); + } } else { - PLAYER.isPaused(function (paused) { - if(paused) - PLAYER.play(); - }); + if (PLAYER.paused) { + PLAYER.play(); + } } // Handle time change @@ -1359,7 +1241,6 @@ var constructors = { "jw": JWPlayer, "im": ImgurPlayer, "cu": CustomPlayer, - "gd": GoogleDocsPlayer, "rt": FilePlayer, "rv": FilePlayer, "fl": FilePlayer,