From a6083d340247355e4a5820d7e71f410cddee5146 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kasper=20Rynning-T=C3=B8nnesen?= Date: Thu, 1 Mar 2018 13:10:51 +0100 Subject: [PATCH] Added fixes for player not starting on youtubevideos that has already been played by the client Fix for userpass not being set correctly Fix for emit function not being used everywhere it needs to be used --- server/public/assets/js/admin.js | 6 ++++-- server/public/assets/js/listeners.js | 13 ++++++++----- server/public/assets/js/player.js | 17 +++++++++++++---- 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/server/public/assets/js/admin.js b/server/public/assets/js/admin.js index 218f4104..d817bcd7 100755 --- a/server/public/assets/js/admin.js +++ b/server/public/assets/js/admin.js @@ -143,6 +143,7 @@ var Admin = { }, pw: function(msg) { + if(msg == false) return; w_p = false; if(adminpass == undefined || adminpass == "") { adminpass = Crypt.get_pass(chan.toLowerCase()); @@ -354,8 +355,9 @@ var Admin = { userpass: Crypt.crypt_pass(pass_send), userpass_changed: userpass_changed }; - - Crypt.set_userpass(chan.toLowerCase(), CryptoJS.SHA256(userpass).toString()); + if(userpass_changed){ + Crypt.set_userpass(chan.toLowerCase(), CryptoJS.SHA256(userpass).toString()); + } emit("conf", configs); }, diff --git a/server/public/assets/js/listeners.js b/server/public/assets/js/listeners.js index 768d75a1..cee78390 100755 --- a/server/public/assets/js/listeners.js +++ b/server/public/assets/js/listeners.js @@ -74,6 +74,8 @@ var chromecastReady = false; var find_word = ""; var found_array = []; var found_array_index = 0; +var startTime = 0; +var fix_too_far = false; var guid = ""; var castSession; var width_timeout; @@ -141,9 +143,9 @@ window.zoff = { } if(!Helper.mobilecheck()) { - $(window).error(function(e){ - e.preventDefault(); - Helper.logs.unshift({log: e.originalEvent.error.stack.toString().replace(/(\r\n|\n|\r)/gm,""), date: new Date()}); + window.onerror = function(e) { + if(e == "Script error.") return true; + Helper.logs.unshift({log: e.toString().replace(/(\r\n|\n|\r)/gm,""), date: new Date()}); $(".contact-form-content").remove(); $("#submit-contact-form").remove(); $(".contact-modal-header").text("An error occurred"); @@ -159,8 +161,9 @@ if(!Helper.mobilecheck()) { $("#contact").modal("open"); /*$("#error-report-modal").modal();*/ $("#error-report-code").text(JSON.stringify(Helper.logs, undefined, 4)); - console.error(e.originalEvent.error); - }); + //console.error(e.originalEvent.error); + return true; + }; } $().ready(function(){ diff --git a/server/public/assets/js/player.js b/server/public/assets/js/player.js index 0b5b65d9..6635cc34 100755 --- a/server/public/assets/js/player.js +++ b/server/public/assets/js/player.js @@ -11,6 +11,7 @@ var Player = { youtube_listener: function(obj) { Helper.log(["object", obj]); var state; + fix_too_far = false; if(embed && obj.np) { if(window.parentWindow && window.parentOrigin) { window.parentWindow.postMessage({type: "np", title: obj.np[0].title}, window.parentOrigin); @@ -89,6 +90,7 @@ var Player = { conf = obj.conf[0]; time = obj.time; seekTo = (time - conf.startTime) + Player.np.start; + startTime = time - conf.startTime; song_title = obj.np[0].title; duration = obj.np[0].duration; //Player.setBGimage(video_id); @@ -116,6 +118,7 @@ var Player = { conf = obj.conf[0]; time = obj.time; seekTo = (time - conf.startTime) + Player.np.start; + startTime = time - conf.startTime; song_title = obj.np[0].title; duration = obj.np[0].duration; @@ -210,10 +213,15 @@ var Player = { "New state\nState: ", newState ]); - try{ + if(player.getCurrentTime() > startTime + Player.np.start && !fix_too_far) { + Player.seekTo(seekTo); + Player.playVideo(); + fix_too_far = true; + } + try { Helper.log(["Duration: " + Player.player.getDuration(), "Current time: " + Player.player.getCurrentTime()]); Helper.log(["getVideoUrl(): " + Player.player.getVideoUrl().split('v=')[1]]); - }catch(e){} + } catch(e){} Helper.log(["video_id variable: " + video_id]); switch(newState.data) { case YT.PlayerState.UNSTARTED: @@ -221,6 +229,7 @@ var Player = { case YT.PlayerState.ENDED: playing = false; paused = false; + if(!offline) { socket.emit("end", {id: video_id, channel: chan.toLowerCase(), pass: embed ? '' : Crypt.crypt_pass(Crypt.get_userpass(chan.toLowerCase()))}); } else { @@ -482,7 +491,7 @@ var Player = { if(!user_auth_started) { if(newState.data == 5 || newState.data == 100 || newState.data == 101 || newState.data == 150) { curr_playing = Player.player.getVideoUrl().replace("https://www.youtube.com/watch?v=", ""); - socket.emit("skip", {error: newState.data, id: video_id, pass: adminpass == "" ? "" : Crypt.crypt_pass(adminpass), channel: chan.toLowerCase(), userpass: embed ? '' : Crypt.crypt_pass(Crypt.get_userpass(chan.toLowerCase()))}); + emit("skip", {error: newState.data, id: video_id, pass: adminpass == "" ? "" : Crypt.crypt_pass(adminpass), channel: chan.toLowerCase(), userpass: embed ? '' : Crypt.crypt_pass(Crypt.get_userpass(chan.toLowerCase()))}); } else if(video_id !== undefined) { Player.loadVideoById(video_id, duration); @@ -573,7 +582,7 @@ var Player = { notifyUser: function(id, title) { title = title.replace(/\\\'/g, "'").replace(/"/g,"'").replace(/&/g,"&"); if (Notification.permission === "granted" && document.hidden && !embed) { - var notification = new Notification("Now Playing", {body: title, icon: "https://i.ytimg.com/vi/"+id+"/mqdefault.jpg", iconUrl: "http://i.ytimg.com/vi/"+id+"/mqdefault.jpg"}); + var notification = new Notification("Now Playing", {body: title, icon: "https://img.youtube.com/vi/"+id+"/mqdefault.jpg", iconUrl: "http://img.youtube.com/vi/"+id+"/mqdefault.jpg"}); notification.onclick = function(x) { window.focus(); this.cancel(); }; setTimeout(function(){ notification.close();