Improve null checks and conditionals for better stability in localization and slideshow management
Some checks failed
Auto Release Plugin / build-and-release (push) Has been cancelled
Some checks failed
Auto Release Plugin / build-and-release (push) Has been cancelled
This commit is contained in:
@@ -836,7 +836,7 @@ const LocalizationUtils = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (window.ApiClient && STATE.jellyfinData?.accessToken) {
|
if (window.ApiClient && STATE.jellyfinData && STATE.jellyfinData.accessToken) {
|
||||||
try {
|
try {
|
||||||
const userId = window.ApiClient.getCurrentUserId();
|
const userId = window.ApiClient.getCurrentUserId();
|
||||||
if (userId) {
|
if (userId) {
|
||||||
@@ -846,7 +846,7 @@ const LocalizationUtils = {
|
|||||||
});
|
});
|
||||||
if (userResponse.ok) {
|
if (userResponse.ok) {
|
||||||
const userData = await userResponse.json();
|
const userData = await userResponse.json();
|
||||||
if (userData.Configuration?.AudioLanguagePreference) {
|
if (userData.Configuration && userData.Configuration.AudioLanguagePreference) {
|
||||||
locale = userData.Configuration.AudioLanguagePreference.toLowerCase();
|
locale = userData.Configuration.AudioLanguagePreference.toLowerCase();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -856,7 +856,7 @@ const LocalizationUtils = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!locale && window.ApiClient && STATE.jellyfinData?.accessToken) {
|
if (!locale && window.ApiClient && (STATE.jellyfinData && STATE.jellyfinData.accessToken)) {
|
||||||
try {
|
try {
|
||||||
const configUrl = window.ApiClient.getUrl('System/Configuration');
|
const configUrl = window.ApiClient.getUrl('System/Configuration');
|
||||||
const configResponse = await fetch(configUrl, {
|
const configResponse = await fetch(configUrl, {
|
||||||
@@ -1031,7 +1031,7 @@ const LocalizationUtils = {
|
|||||||
*/
|
*/
|
||||||
getLocalizedString(key, fallback, ...args) {
|
getLocalizedString(key, fallback, ...args) {
|
||||||
const locale = this.cachedLocale || 'en-us';
|
const locale = this.cachedLocale || 'en-us';
|
||||||
let translated = this.translations[locale]?.[key] || fallback;
|
let translated = (this.translations[locale] && this.translations[locale][key]) || fallback;
|
||||||
|
|
||||||
if (args.length > 0) {
|
if (args.length > 0) {
|
||||||
for (let i = 0; i < args.length; i++) {
|
for (let i = 0; i < args.length; i++) {
|
||||||
@@ -1776,9 +1776,12 @@ const SlideCreator = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const isLowPower = isLowPowerDevice();
|
const isLowPower = isLowPowerDevice();
|
||||||
|
const isIOSApp = /iPhone|iPad|iPod/i.test(navigator.userAgent);
|
||||||
|
const limitVideos = isLowPower || isIOSApp;
|
||||||
const itemIndex = STATE.slideshow.itemIds ? STATE.slideshow.itemIds.indexOf(itemId) : -1;
|
const itemIndex = STATE.slideshow.itemIds ? STATE.slideshow.itemIds.indexOf(itemId) : -1;
|
||||||
const isActiveSlide = itemIndex !== -1 && itemIndex === STATE.slideshow.currentSlideIndex;
|
const isActiveSlide = itemIndex !== -1 && itemIndex === STATE.slideshow.currentSlideIndex;
|
||||||
const shouldCreateVideo = !isLowPower || isActiveSlide;
|
// Limit YouTube iframe bulk creation on low power devices OR iOS (which kills the WebProcess on OOM)
|
||||||
|
const shouldCreateVideo = !limitVideos || isActiveSlide;
|
||||||
|
|
||||||
if (isYoutube && videoId && shouldCreateVideo) {
|
if (isYoutube && videoId && shouldCreateVideo) {
|
||||||
isVideo = true;
|
isVideo = true;
|
||||||
@@ -2804,7 +2807,7 @@ const SlideshowManager = {
|
|||||||
|
|
||||||
if (currentItemId) {
|
if (currentItemId) {
|
||||||
const currentSlide = document.querySelector(`.slide[data-item-id="${currentItemId}"]`);
|
const currentSlide = document.querySelector(`.slide[data-item-id="${currentItemId}"]`);
|
||||||
const video = currentSlide?.querySelector('video');
|
const video = currentSlide ? currentSlide.querySelector('video') : null;
|
||||||
|
|
||||||
if (video) {
|
if (video) {
|
||||||
video.muted = STATE.slideshow.isMuted;
|
video.muted = STATE.slideshow.isMuted;
|
||||||
@@ -2964,7 +2967,7 @@ const SlideshowManager = {
|
|||||||
if (!currentSlide) return;
|
if (!currentSlide) return;
|
||||||
|
|
||||||
// YouTube player: just resume, don't reload
|
// YouTube player: just resume, don't reload
|
||||||
const ytPlayer = STATE.slideshow.videoPlayers?.[currentItemId];
|
const ytPlayer = (STATE.slideshow.videoPlayers && STATE.slideshow.videoPlayers[currentItemId]) ? STATE.slideshow.videoPlayers[currentItemId] : undefined;
|
||||||
if (ytPlayer && typeof ytPlayer.playVideo === 'function') {
|
if (ytPlayer && typeof ytPlayer.playVideo === 'function') {
|
||||||
if (STATE.slideshow.isMuted) {
|
if (STATE.slideshow.isMuted) {
|
||||||
if (typeof ytPlayer.mute === 'function') ytPlayer.mute();
|
if (typeof ytPlayer.mute === 'function') ytPlayer.mute();
|
||||||
|
|||||||
Reference in New Issue
Block a user