private userWatchingVideoInterval: any
private lastResolutionChange: ResolutionUpdateData
+ private menuOpened = false
+ private mouseInControlBar = false
+ private readonly savedInactivityTimeout: number
+
constructor (player: videojs.Player, options: PeerTubePluginOptions) {
super(player, options)
this.videoDuration = options.videoDuration
this.videoCaptions = options.videoCaptions
+ this.savedInactivityTimeout = player.options_.inactivityTimeout
+
if (options.autoplay === true) this.player.addClass('vjs-has-autoplay')
this.player.on('autoplay-failure', () => {
if (this.userWatchingVideoInterval) clearInterval(this.userWatchingVideoInterval)
}
+ onMenuOpen () {
+ this.menuOpened = false
+ this.alterInactivity()
+ }
+
+ onMenuClosed () {
+ this.menuOpened = true
+ this.alterInactivity()
+ }
+
private initializePlayer () {
if (isMobile()) this.player.addClass('vjs-is-mobile')
this.initCaptions()
- this.alterInactivity()
+ this.listenControlBarMouse()
}
private runViewAdd () {
this.trigger('resolutionChange', data)
}
- private alterInactivity () {
- let saveInactivityTimeout: number
+ private listenControlBarMouse () {
+ this.player.controlBar.on('mouseenter', () => {
+ this.mouseInControlBar = true
+ this.alterInactivity()
+ })
- const disableInactivity = () => {
- saveInactivityTimeout = this.player.options_.inactivityTimeout
- this.player.options_.inactivityTimeout = 0
- }
- const enableInactivity = () => {
- this.player.options_.inactivityTimeout = saveInactivityTimeout
- }
+ this.player.controlBar.on('mouseleave', () => {
+ this.mouseInControlBar = false
+ this.alterInactivity()
+ })
+ }
- const settingsDialog = this.player.children_.find((c: any) => c.name_ === 'SettingsDialog')
+ private alterInactivity () {
+ if (this.menuOpened || this.mouseInControlBar) {
+ this.player.options_.inactivityTimeout = this.savedInactivityTimeout
+ return
+ }
- this.player.controlBar.on('mouseenter', () => disableInactivity())
- settingsDialog.on('mouseenter', () => disableInactivity())
- this.player.controlBar.on('mouseleave', () => enableInactivity())
- settingsDialog.on('mouseleave', () => enableInactivity())
+ this.player.options_.inactivityTimeout = 1
}
private initCaptions () {