2018-10-23 01:05:09 +03:00
|
|
|
define(["playbackManager", "userSettings", "connectionManager"], function(playbackManager, userSettings, connectionManager) {
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
function playThemeMedia(items, ownerId) {
|
|
|
|
var currentThemeItems = items.filter(function(i) {
|
|
|
|
return enabled(i.MediaType)
|
|
|
|
});
|
|
|
|
if (currentThemeItems.length) {
|
|
|
|
if (!currentOwnerId && playbackManager.isPlaying()) return;
|
|
|
|
currentThemeIds = currentThemeItems.map(function(i) {
|
|
|
|
return i.Id
|
|
|
|
}), playbackManager.play({
|
|
|
|
items: currentThemeItems,
|
|
|
|
fullscreen: !1,
|
|
|
|
enableRemotePlayers: !1
|
|
|
|
}).then(function() {
|
|
|
|
currentOwnerId = ownerId
|
|
|
|
})
|
|
|
|
} else stopIfPlaying()
|
|
|
|
}
|
|
|
|
|
|
|
|
function stopIfPlaying() {
|
|
|
|
currentOwnerId && playbackManager.stop(), currentOwnerId = null
|
|
|
|
}
|
|
|
|
|
|
|
|
function enabled(mediaType) {
|
|
|
|
return "Video" === mediaType ? userSettings.enableThemeVideos() : userSettings.enableThemeSongs()
|
|
|
|
}
|
|
|
|
|
|
|
|
function loadThemeMedia(item) {
|
|
|
|
if (item.CollectionType) return void stopIfPlaying();
|
|
|
|
if (-1 !== excludeTypes.indexOf(item.Type)) return void stopIfPlaying();
|
|
|
|
var apiClient = connectionManager.getApiClient(item.ServerId);
|
|
|
|
apiClient.getThemeMedia(apiClient.getCurrentUserId(), item.Id, !0).then(function(themeMediaResult) {
|
|
|
|
var ownerId = themeMediaResult.ThemeVideosResult.Items.length ? themeMediaResult.ThemeVideosResult.OwnerId : themeMediaResult.ThemeSongsResult.OwnerId;
|
|
|
|
if (ownerId !== currentOwnerId) {
|
|
|
|
playThemeMedia(themeMediaResult.ThemeVideosResult.Items.length ? themeMediaResult.ThemeVideosResult.Items : themeMediaResult.ThemeSongsResult.Items, ownerId)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
var currentOwnerId, currentThemeIds = [],
|
|
|
|
excludeTypes = ["CollectionFolder", "UserView", "Program", "SeriesTimer", "Person", "TvChannel", "Channel"];
|
|
|
|
document.addEventListener("viewshow", function(e) {
|
|
|
|
var state = e.detail.state || {},
|
|
|
|
item = state.item;
|
|
|
|
if (item && item.ServerId) return void loadThemeMedia(item);
|
|
|
|
(e.detail.options || {}).supportsThemeMedia || playThemeMedia([], null)
|
|
|
|
}, !0)
|
|
|
|
});
|