1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

Migrate MediaSession to ES6

This commit is contained in:
MrTimscampi 2020-04-15 08:49:46 +02:00
parent 9bcb270942
commit af7c87b9f6
2 changed files with 30 additions and 30 deletions

View file

@ -92,6 +92,7 @@
"src/components/filedownloader.js", "src/components/filedownloader.js",
"src/components/filesystem.js", "src/components/filesystem.js",
"src/components/input/keyboardnavigation.js", "src/components/input/keyboardnavigation.js",
"src/components/playback/mediasession.js",
"src/components/sanatizefilename.js", "src/components/sanatizefilename.js",
"src/components/scrollManager.js", "src/components/scrollManager.js",
"src/scripts/settings/appSettings.js", "src/scripts/settings/appSettings.js",

View file

@ -1,14 +1,12 @@
define(['playbackManager', 'nowPlayingHelper', 'events', 'connectionManager'], function (playbackManager, nowPlayingHelper, events, connectionManager) { import playbackManager from 'playbackManager';
"use strict"; import nowPlayingHelper from 'nowPlayingHelper';
import events from 'events';
// no support for mediaSession import connectionManager from 'connectionManager';
if (!navigator.mediaSession && !window.NativeShell) { /* eslint-disable indent */
return;
}
// Reports media playback to the device for lock screen control // Reports media playback to the device for lock screen control
var currentPlayer; let currentPlayer;
function seriesImageUrl(item, options = {}, type = options.type || 'Primary') { function seriesImageUrl(item, options = {}, type = options.type || 'Primary') {
if (item.Type !== 'Episode') { if (item.Type !== 'Episode') {
@ -47,10 +45,10 @@ define(['playbackManager', 'nowPlayingHelper', 'events', 'connectionManager'], f
} }
function pushImageUrl(item, imageOptions = {}) { function pushImageUrl(item, imageOptions = {}) {
var url = seriesImageUrl(item, imageOptions) || imageUrl(item, imageOptions); const url = seriesImageUrl(item, imageOptions) || imageUrl(item, imageOptions);
if (url) { if (url) {
var height = imageOptions.height || imageOptions.maxHeight; const height = imageOptions.height || imageOptions.maxHeight;
return { return {
src: url, src: url,
@ -60,7 +58,7 @@ define(['playbackManager', 'nowPlayingHelper', 'events', 'connectionManager'], f
} }
function getImageUrls(item, imageSizes = [96, 128, 192, 256, 384, 512]) { function getImageUrls(item, imageSizes = [96, 128, 192, 256, 384, 512]) {
var list = []; const list = [];
imageSizes.forEach((size) => { imageSizes.forEach((size) => {
list.push(pushImageUrl(item, {height: size})); list.push(pushImageUrl(item, {height: size}));
@ -71,45 +69,45 @@ define(['playbackManager', 'nowPlayingHelper', 'events', 'connectionManager'], f
function updatePlayerState(player, state, eventName) { function updatePlayerState(player, state, eventName) {
// Don't go crazy reporting position changes // Don't go crazy reporting position changes
if (eventName == 'timeupdate') { if (eventName === 'timeupdate') {
// Only report if this item hasn't been reported yet, or if there's an actual playback change. // Only report if this item hasn't been reported yet, or if there's an actual playback change.
// Don't report on simple time updates // Don't report on simple time updates
return; return;
} }
var item = state.NowPlayingItem; const item = state.NowPlayingItem;
if (!item) { if (!item) {
hideMediaControls(); hideMediaControls();
return; return;
} }
if (eventName == 'init') { // transform "init" event into "timeupdate" to restraint update rate if (eventName === 'init') { // transform "init" event into "timeupdate" to restraint update rate
eventName = 'timeupdate'; eventName = 'timeupdate';
} }
var isVideo = item.MediaType === 'Video'; const isVideo = item.MediaType === 'Video';
var isLocalPlayer = player.isLocalPlayer || false; const isLocalPlayer = player.isLocalPlayer || false;
// Local players do their own notifications // Local players do their own notifications
if (isLocalPlayer && isVideo) { if (isLocalPlayer && isVideo) {
return; return;
} }
var playState = state.PlayState || {}; const playState = state.PlayState || {};
var parts = nowPlayingHelper.getNowPlayingNames(item); const parts = nowPlayingHelper.getNowPlayingNames(item);
var artist = parts[parts.length - 1].text; const artist = parts[parts.length - 1].text;
var title = parts.length === 1 ? '' : parts[0].text; const title = parts.length === 1 ? '' : parts[0].text;
var album = item.Album || ''; const album = item.Album || '';
var itemId = item.Id; const itemId = item.Id;
// Convert to ms // Convert to ms
var duration = parseInt(item.RunTimeTicks ? (item.RunTimeTicks / 10000) : 0); const duration = parseInt(item.RunTimeTicks ? (item.RunTimeTicks / 10000) : 0);
var currentTime = parseInt(playState.PositionTicks ? (playState.PositionTicks / 10000) : 0); const currentTime = parseInt(playState.PositionTicks ? (playState.PositionTicks / 10000) : 0);
var isPaused = playState.IsPaused || false; const isPaused = playState.IsPaused || false;
var canSeek = playState.CanSeek || false; const canSeek = playState.CanSeek || false;
if ('mediaSession' in navigator) { if ('mediaSession' in navigator) {
navigator.mediaSession.metadata = new MediaMetadata({ navigator.mediaSession.metadata = new MediaMetadata({
@ -119,7 +117,7 @@ define(['playbackManager', 'nowPlayingHelper', 'events', 'connectionManager'], f
artwork: getImageUrls(item) artwork: getImageUrls(item)
}); });
} else { } else {
var imageUrl = []; let imageUrl = [];
imageUrl.push(pushImageUrl(item)); imageUrl.push(pushImageUrl(item));
if (imageUrl.length) { if (imageUrl.length) {
@ -145,7 +143,7 @@ define(['playbackManager', 'nowPlayingHelper', 'events', 'connectionManager'], f
} }
function onGeneralEvent(e) { function onGeneralEvent(e) {
var state = playbackManager.getPlayerState(this); const state = playbackManager.getPlayerState(this);
updatePlayerState(this, state, e.type); updatePlayerState(this, state, e.type);
} }
@ -194,7 +192,7 @@ define(['playbackManager', 'nowPlayingHelper', 'events', 'connectionManager'], f
currentPlayer = player; currentPlayer = player;
var state = playbackManager.getPlayerState(player); const state = playbackManager.getPlayerState(player);
updatePlayerState(player, state, 'init'); updatePlayerState(player, state, 'init');
events.on(currentPlayer, 'playbackstart', onPlaybackStart); events.on(currentPlayer, 'playbackstart', onPlaybackStart);
@ -240,4 +238,5 @@ define(['playbackManager', 'nowPlayingHelper', 'events', 'connectionManager'], f
}); });
bindToPlayer(playbackManager.getCurrentPlayer()); bindToPlayer(playbackManager.getCurrentPlayer());
});
/* eslint-enable indent */