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

This commit is contained in:
CodeDevMLH
2026-03-08 21:57:22 +01:00
parent 70b0a2a192
commit 2f71f7b46b

View File

@@ -836,7 +836,7 @@ const LocalizationUtils = {
}
}
if (window.ApiClient && STATE.jellyfinData?.accessToken) {
if (window.ApiClient && STATE.jellyfinData && STATE.jellyfinData.accessToken) {
try {
const userId = window.ApiClient.getCurrentUserId();
if (userId) {
@@ -846,7 +846,7 @@ const LocalizationUtils = {
});
if (userResponse.ok) {
const userData = await userResponse.json();
if (userData.Configuration?.AudioLanguagePreference) {
if (userData.Configuration && userData.Configuration.AudioLanguagePreference) {
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 {
const configUrl = window.ApiClient.getUrl('System/Configuration');
const configResponse = await fetch(configUrl, {
@@ -1031,7 +1031,7 @@ const LocalizationUtils = {
*/
getLocalizedString(key, fallback, ...args) {
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) {
for (let i = 0; i < args.length; i++) {
@@ -1776,9 +1776,12 @@ const SlideCreator = {
}
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 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) {
isVideo = true;
@@ -2804,7 +2807,7 @@ const SlideshowManager = {
if (currentItemId) {
const currentSlide = document.querySelector(`.slide[data-item-id="${currentItemId}"]`);
const video = currentSlide?.querySelector('video');
const video = currentSlide ? currentSlide.querySelector('video') : null;
if (video) {
video.muted = STATE.slideshow.isMuted;
@@ -2964,7 +2967,7 @@ const SlideshowManager = {
if (!currentSlide) return;
// 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 (STATE.slideshow.isMuted) {
if (typeof ytPlayer.mute === 'function') ytPlayer.mute();