aboutsummaryrefslogtreecommitdiffhomepage
path: root/client/src/assets/player
diff options
context:
space:
mode:
authorChocobozzz <me@florianbigard.com>2023-02-25 16:18:28 +0100
committerChocobozzz <me@florianbigard.com>2023-02-25 16:18:28 +0100
commit6de076222aca7005371e01768171efdc62ed8018 (patch)
tree3e8a34d5634cb91a9a1cd20e5043961b0fddc7fe /client/src/assets/player
parentc0687c91b9cf185c36e477ab30266c779f792ee1 (diff)
downloadPeerTube-6de076222aca7005371e01768171efdc62ed8018.tar.gz
PeerTube-6de076222aca7005371e01768171efdc62ed8018.tar.zst
PeerTube-6de076222aca7005371e01768171efdc62ed8018.zip
Avoid always resuming the end of the video
Diffstat (limited to 'client/src/assets/player')
-rw-r--r--client/src/assets/player/shared/manager-options/manager-options-builder.ts1
-rw-r--r--client/src/assets/player/shared/peertube/peertube-plugin.ts11
-rw-r--r--client/src/assets/player/types/manager-options.ts2
-rw-r--r--client/src/assets/player/types/peertube-videojs-typings.ts2
4 files changed, 10 insertions, 6 deletions
diff --git a/client/src/assets/player/shared/manager-options/manager-options-builder.ts b/client/src/assets/player/shared/manager-options/manager-options-builder.ts
index c820d637b..5d3ee4c4a 100644
--- a/client/src/assets/player/shared/manager-options/manager-options-builder.ts
+++ b/client/src/assets/player/shared/manager-options/manager-options-builder.ts
@@ -35,6 +35,7 @@ export class ManagerOptionsBuilder {
35 35
36 ...pick(commonOptions, [ 36 ...pick(commonOptions, [
37 'videoViewUrl', 37 'videoViewUrl',
38 'videoViewIntervalMs',
38 'authorizationHeader', 39 'authorizationHeader',
39 'startTime', 40 'startTime',
40 'videoDuration', 41 'videoDuration',
diff --git a/client/src/assets/player/shared/peertube/peertube-plugin.ts b/client/src/assets/player/shared/peertube/peertube-plugin.ts
index ec8fbb320..b5f177f30 100644
--- a/client/src/assets/player/shared/peertube/peertube-plugin.ts
+++ b/client/src/assets/player/shared/peertube/peertube-plugin.ts
@@ -27,9 +27,7 @@ class PeerTubePlugin extends Plugin {
27 private readonly videoUUID: string 27 private readonly videoUUID: string
28 private readonly startTime: number 28 private readonly startTime: number
29 29
30 private readonly CONSTANTS = { 30 private readonly videoViewIntervalMs: number
31 USER_VIEW_VIDEO_INTERVAL: 5000 // Every 5 seconds, notify the user is watching the video
32 }
33 31
34 private videoCaptions: VideoJSCaption[] 32 private videoCaptions: VideoJSCaption[]
35 private defaultSubtitle: string 33 private defaultSubtitle: string
@@ -48,6 +46,7 @@ class PeerTubePlugin extends Plugin {
48 this.authorizationHeader = options.authorizationHeader 46 this.authorizationHeader = options.authorizationHeader
49 this.videoUUID = options.videoUUID 47 this.videoUUID = options.videoUUID
50 this.startTime = timeToInt(options.startTime) 48 this.startTime = timeToInt(options.startTime)
49 this.videoViewIntervalMs = options.videoViewIntervalMs
51 50
52 this.videoCaptions = options.videoCaptions 51 this.videoCaptions = options.videoCaptions
53 this.initialInactivityTimeout = this.player.options_.inactivityTimeout 52 this.initialInactivityTimeout = this.player.options_.inactivityTimeout
@@ -188,7 +187,7 @@ class PeerTubePlugin extends Plugin {
188 }) 187 })
189 188
190 this.player.one('ended', () => { 189 this.player.one('ended', () => {
191 const currentTime = Math.round(this.player.duration()) 190 const currentTime = Math.floor(this.player.duration())
192 lastCurrentTime = currentTime 191 lastCurrentTime = currentTime
193 192
194 this.notifyUserIsWatching(currentTime, lastViewEvent) 193 this.notifyUserIsWatching(currentTime, lastViewEvent)
@@ -197,7 +196,7 @@ class PeerTubePlugin extends Plugin {
197 }) 196 })
198 197
199 this.videoViewInterval = setInterval(() => { 198 this.videoViewInterval = setInterval(() => {
200 const currentTime = Math.round(this.player.currentTime()) 199 const currentTime = Math.floor(this.player.currentTime())
201 200
202 // No need to update 201 // No need to update
203 if (currentTime === lastCurrentTime) return 202 if (currentTime === lastCurrentTime) return
@@ -213,7 +212,7 @@ class PeerTubePlugin extends Plugin {
213 if (!this.authorizationHeader()) { 212 if (!this.authorizationHeader()) {
214 saveVideoWatchHistory(this.videoUUID, currentTime) 213 saveVideoWatchHistory(this.videoUUID, currentTime)
215 } 214 }
216 }, this.CONSTANTS.USER_VIEW_VIDEO_INTERVAL) 215 }, this.videoViewIntervalMs)
217 } 216 }
218 217
219 private notifyUserIsWatching (currentTime: number, viewEvent: VideoViewEvent) { 218 private notifyUserIsWatching (currentTime: number, viewEvent: VideoViewEvent) {
diff --git a/client/src/assets/player/types/manager-options.ts b/client/src/assets/player/types/manager-options.ts
index 3fbcec29c..c14fd7e99 100644
--- a/client/src/assets/player/types/manager-options.ts
+++ b/client/src/assets/player/types/manager-options.ts
@@ -55,6 +55,8 @@ export interface CommonOptions extends CustomizationOptions {
55 inactivityTimeout: number 55 inactivityTimeout: number
56 poster: string 56 poster: string
57 57
58 videoViewIntervalMs: number
59
58 instanceName: string 60 instanceName: string
59 61
60 theaterButton: boolean 62 theaterButton: boolean
diff --git a/client/src/assets/player/types/peertube-videojs-typings.ts b/client/src/assets/player/types/peertube-videojs-typings.ts
index 5674f78cb..eadf56cfa 100644
--- a/client/src/assets/player/types/peertube-videojs-typings.ts
+++ b/client/src/assets/player/types/peertube-videojs-typings.ts
@@ -108,6 +108,8 @@ type PeerTubePluginOptions = {
108 isLive: boolean 108 isLive: boolean
109 109
110 videoUUID: string 110 videoUUID: string
111
112 videoViewIntervalMs: number
111} 113}
112 114
113type MetricsPluginOptions = { 115type MetricsPluginOptions = {