aboutsummaryrefslogtreecommitdiffhomepage
path: root/client/src/assets/player/shared/settings/resolution-menu-button.ts
diff options
context:
space:
mode:
authorkontrollanten <6680299+kontrollanten@users.noreply.github.com>2022-09-28 11:52:23 +0200
committerGitHub <noreply@github.com>2022-09-28 11:52:23 +0200
commitf2a16d93b476aff16d5353e4d44350298ec7e01c (patch)
tree36c43eb3299c4a1137ca38dd1a564701a5a27236 /client/src/assets/player/shared/settings/resolution-menu-button.ts
parent43972ee466740e91b16c08fe106551657969e669 (diff)
downloadPeerTube-f2a16d93b476aff16d5353e4d44350298ec7e01c.tar.gz
PeerTube-f2a16d93b476aff16d5353e4d44350298ec7e01c.tar.zst
PeerTube-f2a16d93b476aff16d5353e4d44350298ec7e01c.zip
Handle network issues in video player (#5138)
* feat(client/player): handle network offline * feat(client/player): human friendly err msg * feat(client/player): handle broken resolutions When an error occurs for a resolution, remove the resolution and try with another resolution. * fix(client/player): prevent err handl when offline * fix(client/player): localize offline text
Diffstat (limited to 'client/src/assets/player/shared/settings/resolution-menu-button.ts')
-rw-r--r--client/src/assets/player/shared/settings/resolution-menu-button.ts19
1 files changed, 19 insertions, 0 deletions
diff --git a/client/src/assets/player/shared/settings/resolution-menu-button.ts b/client/src/assets/player/shared/settings/resolution-menu-button.ts
index a0b349f67..672411c11 100644
--- a/client/src/assets/player/shared/settings/resolution-menu-button.ts
+++ b/client/src/assets/player/shared/settings/resolution-menu-button.ts
@@ -12,6 +12,7 @@ class ResolutionMenuButton extends MenuButton {
12 this.controlText('Quality') 12 this.controlText('Quality')
13 13
14 player.peertubeResolutions().on('resolutionsAdded', () => this.buildQualities()) 14 player.peertubeResolutions().on('resolutionsAdded', () => this.buildQualities())
15 player.peertubeResolutions().on('resolutionRemoved', () => this.cleanupQualities())
15 16
16 // For parent 17 // For parent
17 player.peertubeResolutions().on('resolutionChanged', () => { 18 player.peertubeResolutions().on('resolutionChanged', () => {
@@ -82,6 +83,24 @@ class ResolutionMenuButton extends MenuButton {
82 83
83 this.trigger('menuChanged') 84 this.trigger('menuChanged')
84 } 85 }
86
87 private cleanupQualities () {
88 const resolutions = this.player().peertubeResolutions().getResolutions()
89
90 this.menu.children().forEach((children: ResolutionMenuItem) => {
91 if (children.resolutionId === undefined) {
92 return
93 }
94
95 if (resolutions.find(r => r.id === children.resolutionId)) {
96 return
97 }
98
99 this.menu.removeChild(children)
100 })
101
102 this.trigger('menuChanged')
103 }
85} 104}
86 105
87videojs.registerComponent('ResolutionMenuButton', ResolutionMenuButton) 106videojs.registerComponent('ResolutionMenuButton', ResolutionMenuButton)