1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00
jellyfin-web/src/scripts/autobackdrops.js
Nicholos Merrill ccbb5a00e9 Changed backdrop initialization module to load on page show instead of
before page show so that home page does continues to load backdrop image
even after changing page.

Also added my name to contributors.
2019-01-19 02:52:02 -07:00

53 lines
No EOL
2.1 KiB
JavaScript

define(["backdrop", "userSettings", "libraryMenu"], function(backdrop, userSettings, libraryMenu) {
"use strict";
function enabled() {
return userSettings.enableBackdrops()
}
function getBackdropItemIds(apiClient, userId, types, parentId) {
var key = "backdrops2_" + userId + (types || "") + (parentId || ""),
data = cache[key];
if (data) return console.log("Found backdrop id list in cache. Key: " + key), data = JSON.parse(data), Promise.resolve(data);
var options = {
SortBy: "IsFavoriteOrLiked,Random",
Limit: 20,
Recursive: !0,
IncludeItemTypes: types,
ImageTypes: "Backdrop",
ParentId: parentId,
EnableTotalRecordCount: !1
};
return apiClient.getItems(apiClient.getCurrentUserId(), options).then(function(result) {
var images = result.Items.map(function(i) {
return {
Id: i.Id,
tag: i.BackdropImageTags[0],
ServerId: i.ServerId
}
});
return cache[key] = JSON.stringify(images), images
})
}
function showBackdrop(type, parentId) {
var apiClient = window.ApiClient;
apiClient && getBackdropItemIds(apiClient, apiClient.getCurrentUserId(), type, parentId).then(function(images) {
images.length ? backdrop.setBackdrops(images.map(function(i) {
return i.BackdropImageTags = [i.tag], i
})) : backdrop.clear()
})
}
var cache = {};
pageClassOn("pageshow", "page", function() {
var page = this;
if (!page.classList.contains("selfBackdropPage"))
if (page.classList.contains("backdropPage"))
if (enabled()) {
var type = page.getAttribute("data-backdroptype"),
parentId = page.classList.contains("globalBackdropPage") ? "" : libraryMenu.getTopParentId();
showBackdrop(type, parentId)
} else page.classList.remove("backdropPage"), backdrop.clear();
else backdrop.clear()
})
});