diff options
| author | RblSb <msrblsb@gmail.com> | 2020-03-02 13:50:16 +0300 |
|---|---|---|
| committer | RblSb <msrblsb@gmail.com> | 2020-03-02 13:50:16 +0300 |
| commit | 0d36998b0fb8139456bf1eda3f614542fec890c5 (patch) | |
| tree | 304191df9e4725ec89633af8e824f237c1a5bc35 /src | |
| parent | 948257a8b8f2d0d76910011cb1cfb90e15baafcc (diff) | |
Video sync toggler
Diffstat (limited to 'src')
| -rw-r--r-- | src/client/Buttons.hx | 17 | ||||
| -rw-r--r-- | src/client/Main.hx | 2 | ||||
| -rw-r--r-- | src/client/Player.hx | 4 | ||||
| -rw-r--r-- | src/server/Main.hx | 8 |
4 files changed, 30 insertions, 1 deletions
diff --git a/src/client/Buttons.hx b/src/client/Buttons.hx index d50773d..f88aa97 100644 --- a/src/client/Buttons.hx +++ b/src/client/Buttons.hx @@ -78,6 +78,23 @@ class Buttons { window.dispatchEvent(new Event("resize")); } + final toggleSynch = ge("#togglesynch"); + toggleSynch.onclick = e -> { + final icon = toggleSynch.firstElementChild; + if (main.isSyncActive) { + if (!window.confirm(Lang.get("toggleSynchConfirm"))) return; + main.isSyncActive = false; + icon.style.color = "rgba(238, 72, 67, 0.75)"; + icon.classList.add("glyphicon-pause"); + icon.classList.remove("glyphicon-play"); + } else { + main.isSyncActive = true; + icon.style.color = ""; + icon.classList.add("glyphicon-play"); + icon.classList.remove("glyphicon-pause"); + main.send({type: UpdatePlaylist}); + } + } final mediaRefresh = ge("#mediarefresh"); mediaRefresh.onclick = e -> { main.refreshPlayer(); diff --git a/src/client/Main.hx b/src/client/Main.hx index bb3a738..c29604e 100644 --- a/src/client/Main.hx +++ b/src/client/Main.hx @@ -21,6 +21,7 @@ using ClientTools; class Main { + public var isSyncActive = true; final clients:Array<Client> = []; var pageTitle = document.title; final host:String; @@ -46,6 +47,7 @@ class Main { initListeners(); onTimeGet.run = () -> { + if (!isSyncActive) return; if (player.isListEmpty()) return; send({type: GetTime}); } diff --git a/src/client/Player.hx b/src/client/Player.hx index 4327e6c..443c14f 100644 --- a/src/client/Player.hx +++ b/src/client/Player.hx @@ -91,6 +91,7 @@ class Player { } public function setVideo(i:Int):Void { + if (!main.isSyncActive) return; final item = items[i]; if (Youtube.isYoutube(item.url)) { setPlayer(new Youtube(main, this)); @@ -292,11 +293,13 @@ class Player { } public function play():Void { + if (!main.isSyncActive) return; if (player == null) return; player.play(); } public function pause():Void { + if (!main.isSyncActive) return; if (player == null) return; player.pause(); } @@ -307,6 +310,7 @@ class Player { } public function setTime(time:Float, isLocal = true):Void { + if (!main.isSyncActive) return; if (player == null) return; skipSetTime = isLocal; player.setTime(time); diff --git a/src/server/Main.hx b/src/server/Main.hx index 4ecc25a..c613b5b 100644 --- a/src/server/Main.hx +++ b/src/server/Main.hx @@ -452,7 +452,13 @@ class Main { updatePlaylist: { videoList: videoList }}); - case UpdatePlaylist: // client-only + + case UpdatePlaylist: + broadcast({ + type: UpdatePlaylist, + updatePlaylist: { + videoList: videoList + }}); case TogglePlaylistLock: if (!client.isAdmin) return; |
