Merge pull request #1597 from Camc314/migrate-to-ES6-35

Migration of nowplayingbar to ES6 module
This commit is contained in:
dkanada 2020-07-20 08:47:25 +09:00 committed by GitHub
commit 4dad5e0c79
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 88 additions and 66 deletions

View file

@ -120,6 +120,7 @@
"src/components/maintabsmanager.js", "src/components/maintabsmanager.js",
"src/components/mediaLibraryCreator/mediaLibraryCreator.js", "src/components/mediaLibraryCreator/mediaLibraryCreator.js",
"src/components/mediaLibraryEditor/mediaLibraryEditor.js", "src/components/mediaLibraryEditor/mediaLibraryEditor.js",
"src/components/nowPlayingBar/nowPlayingBar.js",
"src/components/listview/listview.js", "src/components/listview/listview.js",
"src/components/playback/brightnessosd.js", "src/components/playback/brightnessosd.js",
"src/components/playback/mediasession.js", "src/components/playback/mediasession.js",

View file

@ -1,31 +1,46 @@
define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', 'layoutManager', 'playbackManager', 'nowPlayingHelper', 'apphost', 'dom', 'connectionManager', 'itemContextMenu', 'paper-icon-button-light', 'emby-ratingbutton'], function (require, datetime, itemHelper, events, browser, imageLoader, layoutManager, playbackManager, nowPlayingHelper, appHost, dom, connectionManager, itemContextMenu) { import require from 'require';
'use strict'; import datetime from 'datetime';
import itemHelper from 'itemHelper';
import events from 'events';
import browser from 'browser';
import imageLoader from 'imageLoader';
import layoutManager from 'layoutManager';
import playbackManager from 'playbackManager';
import nowPlayingHelper from 'nowPlayingHelper';
import appHost from 'apphost';
import dom from 'dom';
import connectionManager from 'connectionManager';
import itemContextMenu from 'itemContextMenu';
import 'paper-icon-button-light';
import 'emby-ratingbutton';
var currentPlayer; /* eslint-disable indent */
var currentPlayerSupportedCommands = [];
var currentTimeElement; let currentPlayer;
var nowPlayingImageElement; let currentPlayerSupportedCommands = [];
var nowPlayingTextElement;
var nowPlayingUserData;
var muteButton;
var volumeSlider;
var volumeSliderContainer;
var playPauseButtons;
var positionSlider;
var toggleRepeatButton;
var toggleRepeatButtonIcon;
var lastUpdateTime = 0; let currentTimeElement;
var lastPlayerState = {}; let nowPlayingImageElement;
var isEnabled; let nowPlayingTextElement;
var currentRuntimeTicks = 0; let nowPlayingUserData;
let muteButton;
let volumeSlider;
let volumeSliderContainer;
let playPauseButtons;
let positionSlider;
let toggleRepeatButton;
let toggleRepeatButtonIcon;
var isVisibilityAllowed = true; let lastUpdateTime = 0;
let lastPlayerState = {};
let isEnabled;
let currentRuntimeTicks = 0;
let isVisibilityAllowed = true;
function getNowPlayingBarHtml() { function getNowPlayingBarHtml() {
var html = ''; let html = '';
html += '<div class="nowPlayingBar hide nowPlayingBar-hidden">'; html += '<div class="nowPlayingBar hide nowPlayingBar-hidden">';
@ -198,7 +213,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
if (currentPlayer) { if (currentPlayer) {
var newPercent = parseFloat(this.value); const newPercent = parseFloat(this.value);
playbackManager.seekPercent(newPercent, currentPlayer); playbackManager.seekPercent(newPercent, currentPlayer);
} }
@ -207,13 +222,13 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
positionSlider.getBubbleText = function (value) { positionSlider.getBubbleText = function (value) {
var state = lastPlayerState; const state = lastPlayerState;
if (!state || !state.NowPlayingItem || !currentRuntimeTicks) { if (!state || !state.NowPlayingItem || !currentRuntimeTicks) {
return '--:--'; return '--:--';
} }
var ticks = currentRuntimeTicks; let ticks = currentRuntimeTicks;
ticks /= 100; ticks /= 100;
ticks *= value; ticks *= value;
@ -230,12 +245,12 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
function showRemoteControl() { function showRemoteControl() {
require(['appRouter'], function (appRouter) { import('appRouter').then(({default: appRouter}) => {
appRouter.showNowPlaying(); appRouter.showNowPlaying();
}); });
} }
var nowPlayingBarElement; let nowPlayingBarElement;
function getNowPlayingBar() { function getNowPlayingBar() {
if (nowPlayingBarElement) { if (nowPlayingBarElement) {
@ -243,10 +258,15 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
} }
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
Promise.all([
require(['appFooter-shared', 'itemShortcuts', 'css!./nowPlayingBar.css', 'emby-slider'], function (appfooter, itemShortcuts) { import('appFooter-shared'),
import('itemShortcuts'),
var parentContainer = appfooter.element; import('css!./nowPlayingBar.css'),
import('emby-slider')
])
.then(([appfooter, itemShortcuts]) => {
console.log(appfooter);
const parentContainer = appfooter.element;
nowPlayingBarElement = parentContainer.querySelector('.nowPlayingBar'); nowPlayingBarElement = parentContainer.querySelector('.nowPlayingBar');
if (nowPlayingBarElement) { if (nowPlayingBarElement) {
@ -294,13 +314,13 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
lastPlayerState = state; lastPlayerState = state;
var playerInfo = playbackManager.getPlayerInfo(); const playerInfo = playbackManager.getPlayerInfo();
var playState = state.PlayState || {}; const playState = state.PlayState || {};
updatePlayPauseState(playState.IsPaused); updatePlayPauseState(playState.IsPaused);
var supportedCommands = playerInfo.supportedCommands; const supportedCommands = playerInfo.supportedCommands;
currentPlayerSupportedCommands = supportedCommands; currentPlayerSupportedCommands = supportedCommands;
if (supportedCommands.indexOf('SetRepeatMode') === -1) { if (supportedCommands.indexOf('SetRepeatMode') === -1) {
@ -317,11 +337,11 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
positionSlider.disabled = !playState.CanSeek; positionSlider.disabled = !playState.CanSeek;
// determines if both forward and backward buffer progress will be visible // determines if both forward and backward buffer progress will be visible
var isProgressClear = state.MediaSource && state.MediaSource.RunTimeTicks == null; const isProgressClear = state.MediaSource && state.MediaSource.RunTimeTicks == null;
positionSlider.setIsClear(isProgressClear); positionSlider.setIsClear(isProgressClear);
} }
var nowPlayingItem = state.NowPlayingItem || {}; const nowPlayingItem = state.NowPlayingItem || {};
updateTimeDisplay(playState.PositionTicks, nowPlayingItem.RunTimeTicks, playbackManager.getBufferedRanges(player)); updateTimeDisplay(playState.PositionTicks, nowPlayingItem.RunTimeTicks, playbackManager.getBufferedRanges(player));
updateNowPlayingInfo(state); updateNowPlayingInfo(state);
@ -348,7 +368,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
if (positionSlider && !positionSlider.dragging) { if (positionSlider && !positionSlider.dragging) {
if (runtimeTicks) { if (runtimeTicks) {
var pct = positionTicks / runtimeTicks; let pct = positionTicks / runtimeTicks;
pct *= 100; pct *= 100;
positionSlider.value = pct; positionSlider.value = pct;
@ -365,7 +385,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
if (currentTimeElement) { if (currentTimeElement) {
var timeText = positionTicks == null ? '--:--' : datetime.getDisplayRunningTime(positionTicks); let timeText = positionTicks == null ? '--:--' : datetime.getDisplayRunningTime(positionTicks);
if (runtimeTicks) { if (runtimeTicks) {
timeText += ' / ' + datetime.getDisplayRunningTime(runtimeTicks); timeText += ' / ' + datetime.getDisplayRunningTime(runtimeTicks);
@ -377,10 +397,10 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
function updatePlayerVolumeState(isMuted, volumeLevel) { function updatePlayerVolumeState(isMuted, volumeLevel) {
var supportedCommands = currentPlayerSupportedCommands; const supportedCommands = currentPlayerSupportedCommands;
var showMuteButton = true; let showMuteButton = true;
var showVolumeSlider = true; let showVolumeSlider = true;
if (supportedCommands.indexOf('ToggleMute') === -1) { if (supportedCommands.indexOf('ToggleMute') === -1) {
showMuteButton = false; showMuteButton = false;
@ -495,37 +515,37 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
return null; return null;
} }
var currentImgUrl; let currentImgUrl;
function updateNowPlayingInfo(state) { function updateNowPlayingInfo(state) {
var nowPlayingItem = state.NowPlayingItem; const nowPlayingItem = state.NowPlayingItem;
var textLines = nowPlayingItem ? nowPlayingHelper.getNowPlayingNames(nowPlayingItem) : []; const textLines = nowPlayingItem ? nowPlayingHelper.getNowPlayingNames(nowPlayingItem) : [];
if (textLines.length > 1) { if (textLines.length > 1) {
textLines[1].secondary = true; textLines[1].secondary = true;
} }
nowPlayingTextElement.innerHTML = textLines.map(function (nowPlayingName) { nowPlayingTextElement.innerHTML = textLines.map(function (nowPlayingName) {
var cssClass = nowPlayingName.secondary ? ' class="nowPlayingBarSecondaryText"' : ''; const cssClass = nowPlayingName.secondary ? ' class="nowPlayingBarSecondaryText"' : '';
if (nowPlayingName.item) { if (nowPlayingName.item) {
var nowPlayingText = getTextActionButton(nowPlayingName.item, nowPlayingName.text); const nowPlayingText = getTextActionButton(nowPlayingName.item, nowPlayingName.text);
return `<div ${cssClass}>${nowPlayingText}</div>`; return `<div ${cssClass}>${nowPlayingText}</div>`;
} }
let nowPlayingText = '';
return `<div ${cssClass}>${nowPlayingText}</div>`; return `<div ${cssClass}>${nowPlayingText}</div>`;
}).join(''); }).join('');
var imgHeight = 70; const imgHeight = 70;
var url = nowPlayingItem ? (seriesImageUrl(nowPlayingItem, { const url = nowPlayingItem ? (seriesImageUrl(nowPlayingItem, {
height: imgHeight height: imgHeight
}) || imageUrl(nowPlayingItem, { }) || imageUrl(nowPlayingItem, {
height: imgHeight height: imgHeight
})) : null; })) : null;
var isRefreshing = false; let isRefreshing = false;
if (url !== currentImgUrl) { if (url !== currentImgUrl) {
currentImgUrl = url; currentImgUrl = url;
@ -541,12 +561,12 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
if (nowPlayingItem.Id) { if (nowPlayingItem.Id) {
if (isRefreshing) { if (isRefreshing) {
var apiClient = connectionManager.getApiClient(nowPlayingItem.ServerId); const apiClient = connectionManager.getApiClient(nowPlayingItem.ServerId);
apiClient.getItem(apiClient.getCurrentUserId(), nowPlayingItem.Id).then(function (item) { apiClient.getItem(apiClient.getCurrentUserId(), nowPlayingItem.Id).then(function (item) {
var userData = item.UserData || {}; const userData = item.UserData || {};
var likes = userData.Likes == null ? '' : userData.Likes; const likes = userData.Likes == null ? '' : userData.Likes;
var contextButton = document.querySelector('.btnToggleContextMenu'); const contextButton = document.querySelector('.btnToggleContextMenu');
var options = { const options = {
play: false, play: false,
queue: false, queue: false,
positionTo: contextButton positionTo: contextButton
@ -570,7 +590,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
function onPlaybackStart(e, state) { function onPlaybackStart(e, state) {
console.debug('nowplaying event: ' + e.type); console.debug('nowplaying event: ' + e.type);
var player = this; const player = this;
onStateChanged.call(player, e, state); onStateChanged.call(player, e, state);
} }
@ -581,7 +601,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
return; return;
} }
var player = this; const player = this;
updateRepeatModeDisplay(playbackManager.getRepeatMode(player)); updateRepeatModeDisplay(playbackManager.getRepeatMode(player));
} }
@ -604,7 +624,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
// in the event of a stop->play command // in the event of a stop->play command
// Don't call getNowPlayingBar here because we don't want to end up creating it just to hide it // Don't call getNowPlayingBar here because we don't want to end up creating it just to hide it
var elem = document.getElementsByClassName('nowPlayingBar')[0]; const elem = document.getElementsByClassName('nowPlayingBar')[0];
if (elem) { if (elem) {
slideDown(elem); slideDown(elem);
@ -614,7 +634,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
function onPlaybackStopped(e, state) { function onPlaybackStopped(e, state) {
console.debug('nowplaying event: ' + e.type); console.debug('nowplaying event: ' + e.type);
var player = this; const player = this;
if (player.isLocalPlayer) { if (player.isLocalPlayer) {
if (state.NextMediaType !== 'Audio') { if (state.NextMediaType !== 'Audio') {
@ -633,14 +653,14 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
return; return;
} }
var player = this; const player = this;
updatePlayPauseState(player.paused()); updatePlayPauseState(player.paused());
} }
function onStateChanged(event, state) { function onStateChanged(event, state) {
console.debug('nowplaying event: ' + event.type); console.debug('nowplaying event: ' + event.type);
var player = this; const player = this;
if (!state.NowPlayingItem || layoutManager.tv) { if (!state.NowPlayingItem || layoutManager.tv) {
hideNowPlayingBar(); hideNowPlayingBar();
@ -671,21 +691,21 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
} }
// Try to avoid hammering the document with changes // Try to avoid hammering the document with changes
var now = new Date().getTime(); const now = new Date().getTime();
if ((now - lastUpdateTime) < 700) { if ((now - lastUpdateTime) < 700) {
return; return;
} }
lastUpdateTime = now; lastUpdateTime = now;
var player = this; const player = this;
currentRuntimeTicks = playbackManager.duration(player); currentRuntimeTicks = playbackManager.duration(player);
updateTimeDisplay(playbackManager.currentTime(player), currentRuntimeTicks, playbackManager.getBufferedRanges(player)); updateTimeDisplay(playbackManager.currentTime(player), currentRuntimeTicks, playbackManager.getBufferedRanges(player));
} }
function releaseCurrentPlayer() { function releaseCurrentPlayer() {
var player = currentPlayer; const player = currentPlayer;
if (player) { if (player) {
events.off(player, 'playbackstart', onPlaybackStart); events.off(player, 'playbackstart', onPlaybackStart);
@ -708,14 +728,14 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
return; return;
} }
var player = this; const player = this;
updatePlayerVolumeState(player.isMuted(), player.getVolume()); updatePlayerVolumeState(player.isMuted(), player.getVolume());
} }
function refreshFromPlayer(player) { function refreshFromPlayer(player) {
var state = playbackManager.getPlayerState(player); const state = playbackManager.getPlayerState(player);
onStateChanged.call(player, { type: 'init' }, state); onStateChanged.call(player, { type: 'init' }, state);
} }
@ -771,4 +791,5 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
} }
} }
}); });
});
/* eslint-enable indent */