diff options
author | kontrollanten <6680299+kontrollanten@users.noreply.github.com> | 2022-09-28 11:52:23 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-28 11:52:23 +0200 |
commit | f2a16d93b476aff16d5353e4d44350298ec7e01c (patch) | |
tree | 36c43eb3299c4a1137ca38dd1a564701a5a27236 /client/src/assets/player/shared/settings/resolution-menu-button.ts | |
parent | 43972ee466740e91b16c08fe106551657969e669 (diff) | |
download | PeerTube-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.ts | 19 |
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 | ||
87 | videojs.registerComponent('ResolutionMenuButton', ResolutionMenuButton) | 106 | videojs.registerComponent('ResolutionMenuButton', ResolutionMenuButton) |