diff options
| author | RblSb <msrblsb@gmail.com> | 2020-04-26 02:39:46 +0300 |
|---|---|---|
| committer | RblSb <msrblsb@gmail.com> | 2020-04-26 02:39:46 +0300 |
| commit | 3c5fda212a8b895027c3853d9979b12a8f6c5798 (patch) | |
| tree | 5a0fb8c332cc5f1eba3b54e65fbebf2242585a0a /src/client/players | |
| parent | 40589f8e8ee75485ba241777f3b26cd35d8a05ea (diff) | |
Fix some issues with reused players
Diffstat (limited to 'src/client/players')
| -rw-r--r-- | src/client/players/Iframe.hx | 6 | ||||
| -rw-r--r-- | src/client/players/Raw.hx | 38 | ||||
| -rw-r--r-- | src/client/players/Youtube.hx | 10 |
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); } |
