From 10f26f4203b8cef32778bf3435d8112eaea3c093 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 7 Dec 2020 15:58:57 +0100 Subject: [PATCH] Fix viewers for lives --- .../src/assets/player/peertube-player-manager.ts | 3 ++- client/src/assets/player/peertube-plugin.ts | 14 ++++++++++++-- .../src/assets/player/peertube-videojs-typings.ts | 2 ++ 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/client/src/assets/player/peertube-player-manager.ts b/client/src/assets/player/peertube-player-manager.ts index 9407cf123..1ff3a010e 100644 --- a/client/src/assets/player/peertube-player-manager.ts +++ b/client/src/assets/player/peertube-player-manager.ts @@ -229,7 +229,8 @@ export class PeertubePlayerManager { userWatching: commonOptions.userWatching, subtitle: commonOptions.subtitle, videoCaptions: commonOptions.videoCaptions, - stopTime: commonOptions.stopTime + stopTime: commonOptions.stopTime, + isLive: commonOptions.isLive } } diff --git a/client/src/assets/player/peertube-plugin.ts b/client/src/assets/player/peertube-plugin.ts index a2b038b77..75a6e662e 100644 --- a/client/src/assets/player/peertube-plugin.ts +++ b/client/src/assets/player/peertube-plugin.ts @@ -32,6 +32,8 @@ class PeerTubePlugin extends Plugin { private userWatchingVideoInterval: any private lastResolutionChange: ResolutionUpdateData + private isLive: boolean + private menuOpened = false private mouseInControlBar = false private readonly savedInactivityTimeout: number @@ -42,6 +44,7 @@ class PeerTubePlugin extends Plugin { this.videoViewUrl = options.videoViewUrl this.videoDuration = options.videoDuration this.videoCaptions = options.videoCaptions + this.isLive = options.isLive this.savedInactivityTimeout = player.options_.inactivityTimeout @@ -152,7 +155,9 @@ class PeerTubePlugin extends Plugin { // After 30 seconds (or 3/4 of the video), add a view to the video let minSecondsToView = 30 - if (this.videoDuration < minSecondsToView) minSecondsToView = (this.videoDuration * 3) / 4 + if (!this.isLive && this.videoDuration < minSecondsToView) { + minSecondsToView = (this.videoDuration * 3) / 4 + } let secondsViewed = 0 this.videoViewInterval = setInterval(() => { @@ -160,7 +165,12 @@ class PeerTubePlugin extends Plugin { secondsViewed += 1 if (secondsViewed > minSecondsToView) { - this.clearVideoViewInterval() + // Restart the loop if this is a live + if (this.isLive) { + secondsViewed = 0 + } else { + this.clearVideoViewInterval() + } this.addViewToVideo().catch(err => console.error(err)) } diff --git a/client/src/assets/player/peertube-videojs-typings.ts b/client/src/assets/player/peertube-videojs-typings.ts index f1e614499..e5259092c 100644 --- a/client/src/assets/player/peertube-videojs-typings.ts +++ b/client/src/assets/player/peertube-videojs-typings.ts @@ -106,6 +106,8 @@ type PeerTubePluginOptions = { videoCaptions: VideoJSCaption[] stopTime: number | string + + isLive: boolean } type PlaylistPluginOptions = { -- 2.41.0