aboutsummaryrefslogtreecommitdiffhomepage
path: root/client/src/assets/player/peertube-plugin.ts
diff options
context:
space:
mode:
Diffstat (limited to 'client/src/assets/player/peertube-plugin.ts')
-rw-r--r--client/src/assets/player/peertube-plugin.ts48
1 files changed, 33 insertions, 15 deletions
diff --git a/client/src/assets/player/peertube-plugin.ts b/client/src/assets/player/peertube-plugin.ts
index dd9408c8e..9824c43b5 100644
--- a/client/src/assets/player/peertube-plugin.ts
+++ b/client/src/assets/player/peertube-plugin.ts
@@ -36,6 +36,10 @@ class PeerTubePlugin extends Plugin {
36 private userWatchingVideoInterval: any 36 private userWatchingVideoInterval: any
37 private lastResolutionChange: ResolutionUpdateData 37 private lastResolutionChange: ResolutionUpdateData
38 38
39 private menuOpened = false
40 private mouseInControlBar = false
41 private readonly savedInactivityTimeout: number
42
39 constructor (player: videojs.Player, options: PeerTubePluginOptions) { 43 constructor (player: videojs.Player, options: PeerTubePluginOptions) {
40 super(player, options) 44 super(player, options)
41 45
@@ -43,6 +47,8 @@ class PeerTubePlugin extends Plugin {
43 this.videoDuration = options.videoDuration 47 this.videoDuration = options.videoDuration
44 this.videoCaptions = options.videoCaptions 48 this.videoCaptions = options.videoCaptions
45 49
50 this.savedInactivityTimeout = player.options_.inactivityTimeout
51
46 if (options.autoplay === true) this.player.addClass('vjs-has-autoplay') 52 if (options.autoplay === true) this.player.addClass('vjs-has-autoplay')
47 53
48 this.player.on('autoplay-failure', () => { 54 this.player.on('autoplay-failure', () => {
@@ -124,6 +130,16 @@ class PeerTubePlugin extends Plugin {
124 if (this.userWatchingVideoInterval) clearInterval(this.userWatchingVideoInterval) 130 if (this.userWatchingVideoInterval) clearInterval(this.userWatchingVideoInterval)
125 } 131 }
126 132
133 onMenuOpen () {
134 this.menuOpened = false
135 this.alterInactivity()
136 }
137
138 onMenuClosed () {
139 this.menuOpened = true
140 this.alterInactivity()
141 }
142
127 private initializePlayer () { 143 private initializePlayer () {
128 if (isMobile()) this.player.addClass('vjs-is-mobile') 144 if (isMobile()) this.player.addClass('vjs-is-mobile')
129 145
@@ -131,7 +147,7 @@ class PeerTubePlugin extends Plugin {
131 147
132 this.initCaptions() 148 this.initCaptions()
133 149
134 this.alterInactivity() 150 this.listenControlBarMouse()
135 } 151 }
136 152
137 private runViewAdd () { 153 private runViewAdd () {
@@ -208,23 +224,25 @@ class PeerTubePlugin extends Plugin {
208 this.trigger('resolutionChange', data) 224 this.trigger('resolutionChange', data)
209 } 225 }
210 226
211 private alterInactivity () { 227 private listenControlBarMouse () {
212 let saveInactivityTimeout: number 228 this.player.controlBar.on('mouseenter', () => {
229 this.mouseInControlBar = true
230 this.alterInactivity()
231 })
213 232
214 const disableInactivity = () => { 233 this.player.controlBar.on('mouseleave', () => {
215 saveInactivityTimeout = this.player.options_.inactivityTimeout 234 this.mouseInControlBar = false
216 this.player.options_.inactivityTimeout = 0 235 this.alterInactivity()
217 } 236 })
218 const enableInactivity = () => { 237 }
219 this.player.options_.inactivityTimeout = saveInactivityTimeout
220 }
221 238
222 const settingsDialog = this.player.children_.find((c: any) => c.name_ === 'SettingsDialog') 239 private alterInactivity () {
240 if (this.menuOpened || this.mouseInControlBar) {
241 this.player.options_.inactivityTimeout = this.savedInactivityTimeout
242 return
243 }
223 244
224 this.player.controlBar.on('mouseenter', () => disableInactivity()) 245 this.player.options_.inactivityTimeout = 1
225 settingsDialog.on('mouseenter', () => disableInactivity())
226 this.player.controlBar.on('mouseleave', () => enableInactivity())
227 settingsDialog.on('mouseleave', () => enableInactivity())
228 } 246 }
229 247
230 private initCaptions () { 248 private initCaptions () {