aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRblSb <msrblsb@gmail.com>2020-03-02 13:50:16 +0300
committerRblSb <msrblsb@gmail.com>2020-03-02 13:50:16 +0300
commit0d36998b0fb8139456bf1eda3f614542fec890c5 (patch)
tree304191df9e4725ec89633af8e824f237c1a5bc35 /src
parent948257a8b8f2d0d76910011cb1cfb90e15baafcc (diff)
Video sync toggler
Diffstat (limited to 'src')
-rw-r--r--src/client/Buttons.hx17
-rw-r--r--src/client/Main.hx2
-rw-r--r--src/client/Player.hx4
-rw-r--r--src/server/Main.hx8
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;
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage