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

Migration of themeMediaPlayer to ES6 module

This commit is contained in:
Cameron 2020-08-06 11:41:45 +01:00
parent 42ac558a17
commit e813f64cd2
2 changed files with 88 additions and 88 deletions

View file

@ -167,6 +167,7 @@
"src/components/syncPlay/playbackPermissionManager.js", "src/components/syncPlay/playbackPermissionManager.js",
"src/components/syncPlay/syncPlayManager.js", "src/components/syncPlay/syncPlayManager.js",
"src/components/syncPlay/timeSyncManager.js", "src/components/syncPlay/timeSyncManager.js",
"src/components/themeMediaPlayer.js",
"src/components/toast/toast.js", "src/components/toast/toast.js",
"src/components/upnextdialog/upnextdialog.js", "src/components/upnextdialog/upnextdialog.js",
"src/components/viewContainer.js", "src/components/viewContainer.js",

View file

@ -1,103 +1,102 @@
define(['playbackManager', 'userSettings', 'connectionManager'], function (playbackManager, userSettings, connectionManager) { import playbackManager from 'playbackManager';
'use strict'; import userSettings from 'userSettings';
import connectionManager from 'connectionManager';
playbackManager = playbackManager.default || playbackManager; let currentOwnerId;
let currentThemeIds = [];
var currentOwnerId; function playThemeMedia(items, ownerId) {
var currentThemeIds = []; const currentThemeItems = items.filter(function (i) {
return enabled(i.MediaType);
});
function playThemeMedia(items, ownerId) { if (currentThemeItems.length) {
var currentThemeItems = items.filter(function (i) { // Stop if a theme song from another ownerId
return enabled(i.MediaType); // Leave it alone if anything else (e.g user playing a movie)
if (!currentOwnerId && playbackManager.isPlaying()) {
return;
}
currentThemeIds = currentThemeItems.map(function (i) {
return i.Id;
}); });
if (currentThemeItems.length) { playbackManager.play({
// Stop if a theme song from another ownerId items: currentThemeItems,
// Leave it alone if anything else (e.g user playing a movie) fullscreen: false,
if (!currentOwnerId && playbackManager.isPlaying()) { enableRemotePlayers: false
return; }).then(function () {
} currentOwnerId = ownerId;
currentThemeIds = currentThemeItems.map(function (i) {
return i.Id;
});
playbackManager.play({
items: currentThemeItems,
fullscreen: false,
enableRemotePlayers: false
}).then(function () {
currentOwnerId = ownerId;
});
} else {
stopIfPlaying();
}
}
function stopIfPlaying() {
if (currentOwnerId) {
playbackManager.stop();
}
currentOwnerId = null;
}
function enabled(mediaType) {
if (mediaType === 'Video') {
return userSettings.enableThemeVideos();
}
return userSettings.enableThemeSongs();
}
var excludeTypes = ['CollectionFolder', 'UserView', 'Program', 'SeriesTimer', 'Person', 'TvChannel', 'Channel'];
function loadThemeMedia(item) {
if (item.CollectionType) {
stopIfPlaying();
return;
}
if (excludeTypes.indexOf(item.Type) !== -1) {
stopIfPlaying();
return;
}
var apiClient = connectionManager.getApiClient(item.ServerId);
apiClient.getThemeMedia(apiClient.getCurrentUserId(), item.Id, true).then(function (themeMediaResult) {
var ownerId = themeMediaResult.ThemeVideosResult.Items.length ? themeMediaResult.ThemeVideosResult.OwnerId : themeMediaResult.ThemeSongsResult.OwnerId;
if (ownerId !== currentOwnerId) {
var items = themeMediaResult.ThemeVideosResult.Items.length ? themeMediaResult.ThemeVideosResult.Items : themeMediaResult.ThemeSongsResult.Items;
playThemeMedia(items, ownerId);
}
}); });
} else {
stopIfPlaying();
}
}
function stopIfPlaying() {
if (currentOwnerId) {
playbackManager.stop();
} }
document.addEventListener('viewshow', function (e) { currentOwnerId = null;
var state = e.detail.state || {}; }
var item = state.item;
if (item && item.ServerId) { function enabled(mediaType) {
loadThemeMedia(item); if (mediaType === 'Video') {
return; return userSettings.enableThemeVideos();
} }
var viewOptions = e.detail.options || {}; return userSettings.enableThemeSongs();
}
if (viewOptions.supportsThemeMedia) { const excludeTypes = ['CollectionFolder', 'UserView', 'Program', 'SeriesTimer', 'Person', 'TvChannel', 'Channel'];
// Do nothing here, allow it to keep playing
} else {
playThemeMedia([], null);
}
}, true);
Events.on(playbackManager, 'playbackstart', function (e, player) { function loadThemeMedia(item) {
var item = playbackManager.currentItem(player); if (item.CollectionType) {
// User played something manually stopIfPlaying();
if (currentThemeIds.indexOf(item.Id) == -1) { return;
currentOwnerId = null; }
if (excludeTypes.indexOf(item.Type) !== -1) {
stopIfPlaying();
return;
}
const apiClient = connectionManager.getApiClient(item.ServerId);
apiClient.getThemeMedia(apiClient.getCurrentUserId(), item.Id, true).then(function (themeMediaResult) {
const ownerId = themeMediaResult.ThemeVideosResult.Items.length ? themeMediaResult.ThemeVideosResult.OwnerId : themeMediaResult.ThemeSongsResult.OwnerId;
if (ownerId !== currentOwnerId) {
const items = themeMediaResult.ThemeVideosResult.Items.length ? themeMediaResult.ThemeVideosResult.Items : themeMediaResult.ThemeSongsResult.Items;
playThemeMedia(items, ownerId);
} }
}); });
}
document.addEventListener('viewshow', function (e) {
const state = e.detail.state || {};
const item = state.item;
if (item && item.ServerId) {
loadThemeMedia(item);
return;
}
const viewOptions = e.detail.options || {};
if (viewOptions.supportsThemeMedia) {
// Do nothing here, allow it to keep playing
} else {
playThemeMedia([], null);
}
}, true);
Events.on(playbackManager, 'playbackstart', function (e, player) {
const item = playbackManager.currentItem(player);
// User played something manually
if (currentThemeIds.indexOf(item.Id) == -1) {
currentOwnerId = null;
}
}); });