aboutsummaryrefslogtreecommitdiffstats
path: root/src/client/players
diff options
context:
space:
mode:
authorRblSb <msrblsb@gmail.com>2020-04-26 02:39:46 +0300
committerRblSb <msrblsb@gmail.com>2020-04-26 02:39:46 +0300
commit3c5fda212a8b895027c3853d9979b12a8f6c5798 (patch)
tree5a0fb8c332cc5f1eba3b54e65fbebf2242585a0a /src/client/players
parent40589f8e8ee75485ba241777f3b26cd35d8a05ea (diff)
Fix some issues with reused players
Diffstat (limited to 'src/client/players')
-rw-r--r--src/client/players/Iframe.hx6
-rw-r--r--src/client/players/Raw.hx38
-rw-r--r--src/client/players/Youtube.hx10
3 files changed, 30 insertions, 24 deletions
diff --git a/src/client/players/Iframe.hx b/src/client/players/Iframe.hx
index 1bb9855..3268a61 100644
--- a/src/client/players/Iframe.hx
+++ b/src/client/players/Iframe.hx
@@ -35,7 +35,7 @@ class Iframe implements IPlayer {
removeVideo();
video = document.createDivElement();
video.id = "videoplayer";
- video.innerHTML = item.url;
+ video.innerHTML = item.url; // actually data
if (video.firstChild.nodeName != "IFRAME"
&& video.firstChild.nodeName != "OBJECT") {
// TODO move to getVideoData too
@@ -54,6 +54,10 @@ class Iframe implements IPlayer {
video = null;
}
+ public function isVideoLoaded():Bool {
+ return video != null;
+ }
+
public function play():Void {}
public function pause():Void {}
diff --git a/src/client/players/Raw.hx b/src/client/players/Raw.hx
index e3c2ed1..4fa000b 100644
--- a/src/client/players/Raw.hx
+++ b/src/client/players/Raw.hx
@@ -27,7 +27,7 @@ class Raw implements IPlayer {
}
public function getVideoData(url:String, callback:(data:VideoData)->Void):Void {
- var title = url.substr(url.lastIndexOf('/') + 1);
+ var title = url.substr(url.lastIndexOf("/") + 1);
final matchName = ~/^(.+)\./;
if (matchName.match(title)) title = matchName.matched(1);
else title = Lang.get("rawVideo");
@@ -52,21 +52,13 @@ class Raw implements IPlayer {
final url = main.tryLocalIp(item.url);
if (video != null) {
video.src = url;
+ restartControlsHider();
return;
}
video = document.createVideoElement();
video.id = "videoplayer";
video.src = url;
- video.controls = true;
- if (controlsHider != null) controlsHider.stop();
- if (!Utils.isTouch()) controlsHider = Timer.delay(() -> {
- video.controls = false;
- }, 3000);
- video.onmousemove = e -> {
- if (controlsHider != null) controlsHider.stop();
- video.controls = true;
- video.onmousemove = null;
- }
+ restartControlsHider();
video.oncanplaythrough = player.onCanBePlayed;
video.onseeking = player.onSetTime;
video.onplay = e -> {
@@ -78,14 +70,31 @@ class Raw implements IPlayer {
playerEl.appendChild(video);
}
+ function restartControlsHider():Void {
+ if (Utils.isTouch()) return;
+ video.controls = true;
+ if (controlsHider != null) controlsHider.stop();
+ controlsHider = Timer.delay(() -> {
+ video.controls = false;
+ }, 3000);
+ video.onmousemove = e -> {
+ if (controlsHider != null) controlsHider.stop();
+ video.controls = true;
+ video.onmousemove = null;
+ }
+ }
+
public function removeVideo():Void {
if (video == null) return;
playerEl.removeChild(video);
video = null;
}
+ public function isVideoLoaded():Bool {
+ return video != null;
+ }
+
public function play():Void {
- if (video == null) return;
if (!playAllowed) return;
final promise = video.play();
if (promise == null) return;
@@ -96,27 +105,22 @@ class Raw implements IPlayer {
}
public function pause():Void {
- if (video == null) return;
video.pause();
}
public function getTime():Float {
- if (video == null) return 0;
return video.currentTime;
}
public function setTime(time:Float):Void {
- if (video == null) return;
video.currentTime = time;
}
public function getPlaybackRate():Float {
- if (video == null) return 1;
return video.playbackRate;
}
public function setPlaybackRate(rate:Float):Void {
- if (video == null) return;
video.playbackRate = rate;
}
diff --git a/src/client/players/Youtube.hx b/src/client/players/Youtube.hx
index 3ea0e72..0aa9f2b 100644
--- a/src/client/players/Youtube.hx
+++ b/src/client/players/Youtube.hx
@@ -235,33 +235,31 @@ class Youtube implements IPlayer {
video = null;
}
+ public function isVideoLoaded():Bool {
+ return isLoaded;
+ }
+
public function play():Void {
- if (!isLoaded) return;
youtube.playVideo();
}
public function pause():Void {
- if (!isLoaded) return;
youtube.pauseVideo();
}
public function getTime():Float {
- if (!isLoaded) return 0;
return youtube.getCurrentTime();
}
public function setTime(time:Float):Void {
- if (!isLoaded) return;
youtube.seekTo(time, true);
}
public function getPlaybackRate():Float {
- if (!isLoaded) return 1;
return youtube.getPlaybackRate();
}
public function setPlaybackRate(rate:Float):Void {
- if (!isLoaded) return;
youtube.setPlaybackRate(rate);
}
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage