aboutsummaryrefslogtreecommitdiffhomepage
path: root/client/src/assets/player/shared/bezels/pause-bezel.ts
diff options
context:
space:
mode:
Diffstat (limited to 'client/src/assets/player/shared/bezels/pause-bezel.ts')
-rw-r--r--client/src/assets/player/shared/bezels/pause-bezel.ts49
1 files changed, 42 insertions, 7 deletions
diff --git a/client/src/assets/player/shared/bezels/pause-bezel.ts b/client/src/assets/player/shared/bezels/pause-bezel.ts
index e35c39a5f..d364ad0dd 100644
--- a/client/src/assets/player/shared/bezels/pause-bezel.ts
+++ b/client/src/assets/player/shared/bezels/pause-bezel.ts
@@ -32,26 +32,61 @@ function getPlayBezel () {
32} 32}
33 33
34const Component = videojs.getComponent('Component') 34const Component = videojs.getComponent('Component')
35class PauseBezel extends Component { 35export class PauseBezel extends Component {
36 container: HTMLDivElement 36 container: HTMLDivElement
37 37
38 private firstPlayDone = false
39 private paused = false
40
41 private playerPauseHandler: () => void
42 private playerPlayHandler: () => void
43 private videoChangeHandler: () => void
44
38 constructor (player: videojs.Player, options?: videojs.ComponentOptions) { 45 constructor (player: videojs.Player, options?: videojs.ComponentOptions) {
39 super(player, options) 46 super(player, options)
40 47
41 // Hide bezels on mobile since we already have our mobile overlay 48 // Hide bezels on mobile since we already have our mobile overlay
42 if (isMobile()) return 49 if (isMobile()) return
43 50
44 player.on('pause', (_: any) => { 51 this.playerPauseHandler = () => {
45 if (player.seeking() || player.ended()) return 52 if (player.seeking()) return
53
54 this.paused = true
55
56 if (player.ended()) return
57
46 this.container.innerHTML = getPauseBezel() 58 this.container.innerHTML = getPauseBezel()
47 this.showBezel() 59 this.showBezel()
48 }) 60 }
61
62 this.playerPlayHandler = () => {
63 if (player.seeking() || !this.firstPlayDone || !this.paused) {
64 this.firstPlayDone = true
65 return
66 }
67
68 this.paused = false
69 this.firstPlayDone = true
49 70
50 player.on('play', (_: any) => {
51 if (player.seeking()) return
52 this.container.innerHTML = getPlayBezel() 71 this.container.innerHTML = getPlayBezel()
53 this.showBezel() 72 this.showBezel()
54 }) 73 }
74
75 this.videoChangeHandler = () => {
76 this.firstPlayDone = false
77 }
78
79 player.on('video-change', () => this.videoChangeHandler)
80 player.on('pause', this.playerPauseHandler)
81 player.on('play', this.playerPlayHandler)
82 }
83
84 dispose () {
85 if (this.playerPauseHandler) this.player().off('pause', this.playerPauseHandler)
86 if (this.playerPlayHandler) this.player().off('play', this.playerPlayHandler)
87 if (this.videoChangeHandler) this.player().off('video-change', this.videoChangeHandler)
88
89 super.dispose()
55 } 90 }
56 91
57 createEl () { 92 createEl () {