From e53a69f09dd3f03b984986bbb3a2daddf78b159f Mon Sep 17 00:00:00 2001 From: RblSb Date: Thu, 20 Feb 2020 00:43:12 +0300 Subject: Improve seeking --- src/client/Main.hx | 14 ++++++++++++-- src/client/Player.hx | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-) (limited to 'src') 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