Backport pull request #7252 from jellyfin-web/release-10.11.z
Wraps registration of all mediaSession action handlers in try catch.
Original-merge: 7643885c6b
Merged-by: thornbill <thornbill@users.noreply.github.com>
Backported-by: Joshua M. Boniface <joshua@boniface.me>
This commit is contained in:
committed by
Joshua M. Boniface
parent
8026ae3137
commit
d168815ba4
@@ -51,24 +51,20 @@ class MediaSessionSubscriber extends PlaybackSubscriber {
|
||||
}
|
||||
|
||||
private bindNavigatorSession() {
|
||||
/* eslint-disable compat/compat */
|
||||
navigator.mediaSession.setActionHandler('pause', this.onMediaSessionAction.bind(this));
|
||||
navigator.mediaSession.setActionHandler('play', this.onMediaSessionAction.bind(this));
|
||||
// NOTE: Some legacy (TV) browsers lack support for the stop action
|
||||
try {
|
||||
navigator.mediaSession.setActionHandler('stop', this.onMediaSessionAction.bind(this));
|
||||
} catch (err) {
|
||||
console.warn('[MediaSessionSubscriber] Failed to add \'stop\' action handler', err);
|
||||
}
|
||||
navigator.mediaSession.setActionHandler('previoustrack', this.onMediaSessionAction.bind(this));
|
||||
navigator.mediaSession.setActionHandler('nexttrack', this.onMediaSessionAction.bind(this));
|
||||
navigator.mediaSession.setActionHandler('seekto', this.onMediaSessionAction.bind(this));
|
||||
const actions: MediaSessionAction[] = ['pause', 'play', 'previoustrack', 'nexttrack', 'stop', 'seekto'];
|
||||
|
||||
// iOS will only show next/prev track controls or seek controls
|
||||
if (!browser.iOS) {
|
||||
navigator.mediaSession.setActionHandler('seekbackward', this.onMediaSessionAction.bind(this));
|
||||
navigator.mediaSession.setActionHandler('seekforward', this.onMediaSessionAction.bind(this));
|
||||
if (!browser.iOS) actions.push('seekbackward', 'seekforward');
|
||||
|
||||
for (const action of actions) {
|
||||
try {
|
||||
/* eslint-disable-next-line compat/compat */
|
||||
navigator.mediaSession.setActionHandler(action, this.onMediaSessionAction.bind(this));
|
||||
} catch (err) {
|
||||
// NOTE: Some legacy (TV) browsers lack support for the stop and seekto actions
|
||||
console.warn(`[MediaSessionSubscriber] Failed to add "${action}" action handler`, err);
|
||||
}
|
||||
}
|
||||
/* eslint-enable compat/compat */
|
||||
}
|
||||
|
||||
private onMediaSessionAction(details: MediaSessionActionDetails) {
|
||||
|
||||
Reference in New Issue
Block a user