From e53a69f09dd3f03b984986bbb3a2daddf78b159f Mon Sep 17 00:00:00 2001 From: RblSb Date: Thu, 20 Feb 2020 00:43:12 +0300 Subject: Improve seeking --- build/client.js | 25 ++++++++++++++++++++----- res/css/des.css | 3 +-- src/client/Main.hx | 14 ++++++++++++-- src/client/Player.hx | 2 +- 4 files changed, 34 insertions(+), 10 deletions(-) diff --git a/build/client.js b/build/client.js index 6a6b5f8..5997420 100644 --- a/build/client.js +++ b/build/client.js @@ -491,12 +491,21 @@ client_Main.prototype = { case "GetTime": var newTime = data.getTime.time; var time = this.player.getTime(); + if(this.isLeader()) { + if(Math.abs(time - newTime) < 2) { + return; + } + this.player.setTime(time,false); + return; + } if(Math.abs(time - newTime) < 2) { return; } this.player.setTime(newTime); if(!data.getTime.paused) { this.player.play(); + } else { + this.player.pause(); } break; case "Login": @@ -516,10 +525,16 @@ client_Main.prototype = { this.addMessage(data.message.clientName,data.message.text); break; case "Pause": + if(this.isLeader()) { + return; + } this.player.pause(); this.player.setTime(data.pause.time); break; case "Play": + if(this.isLeader()) { + return; + } this.player.setTime(data.play.time); this.player.play(); break; @@ -532,15 +547,15 @@ client_Main.prototype = { case "SetLeader": ClientTools.setLeader(this.clients,data.setLeader.clientName); this.updateUserList(); - if(this.personal == null) { - return; - } var leaderBtn = window.document.querySelector("#leader_btn"); - if(this.personal.isLeader) { + if(this.isLeader()) { leaderBtn.classList.add("label-success"); } else { leaderBtn.classList.remove("label-success"); } + if(this.isLeader()) { + this.player.setTime(this.player.getTime(),false); + } break; case "SetTime": var newTime1 = data.setTime.time; @@ -792,7 +807,7 @@ client_Player.prototype = { } return _gthis.isLoaded = true; }; - this.video.ontimeupdate = function(e1) { + this.video.onseeking = function(e1) { if(_gthis.skipSetTime) { _gthis.skipSetTime = false; return; diff --git a/res/css/des.css b/res/css/des.css index 583d7bd..014d3d6 100644 --- a/res/css/des.css +++ b/res/css/des.css @@ -1014,8 +1014,7 @@ border-top-left-radius:0 border:0 } .embed-responsive.embed-responsive-16by9 { - /* padding-bottom:56.25%; */ - padding-bottom:60%; + padding-bottom:56.25%; background-color: rgb(26, 29, 32); } .embed-responsive.embed-responsive-4by3 { diff --git a/src/client/Main.hx b/src/client/Main.hx index 5084587..5b2dc4c 100644 --- a/src/client/Main.hx +++ b/src/client/Main.hx @@ -251,17 +251,27 @@ class Main { player.removeItem(data.removeVideo.url); if (player.isListEmpty()) player.pause(); case Pause: + if (isLeader()) return; player.pause(); player.setTime(data.pause.time); case Play: + if (isLeader()) return; player.setTime(data.play.time); player.play(); case GetTime: final newTime = data.getTime.time; final time = player.getTime(); + if (isLeader()) { + // if video is loading on leader + // move other clients back in time + if (Math.abs(time - newTime) < 2) return; + player.setTime(time, false); + return; + } if (Math.abs(time - newTime) < 2) return; player.setTime(newTime); if (!data.getTime.paused) player.play(); + else player.pause(); case SetTime: final newTime = data.setTime.time; final time = player.getTime(); @@ -270,10 +280,10 @@ class Main { case SetLeader: clients.setLeader(data.setLeader.clientName); updateUserList(); - if (personal == null) return; final leaderBtn:InputElement = cast ge("#leader_btn"); - if (personal.isLeader) leaderBtn.classList.add('label-success'); + if (isLeader()) leaderBtn.classList.add('label-success'); else leaderBtn.classList.remove('label-success'); + if (isLeader()) player.setTime(player.getTime(), false); } } diff --git a/src/client/Player.hx b/src/client/Player.hx index 2973e9b..efdb71a 100644 --- a/src/client/Player.hx +++ b/src/client/Player.hx @@ -33,7 +33,7 @@ class Player { if (!isLoaded) main.send({type: VideoLoaded}); isLoaded = true; } - video.ontimeupdate = (e) -> { + video.onseeking = e -> { if (skipSetTime) { skipSetTime = false; return; -- cgit v1.2.3