mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
Add prefer optional chaining rule
This commit is contained in:
parent
ec0adb895b
commit
f35a8151e0
61 changed files with 152 additions and 152 deletions
|
@ -35,7 +35,7 @@ function seriesImageUrl(item, options = {}) {
|
|||
function imageUrl(item, options = {}) {
|
||||
options.type = options.type || 'Primary';
|
||||
|
||||
if (item.ImageTags && item.ImageTags[options.type]) {
|
||||
if (item.ImageTags?.[options.type]) {
|
||||
options.tag = item.ImageTags[options.type];
|
||||
|
||||
return ServerConnections.getApiClient(item.ServerId).getScaledImageUrl(item.Id, options);
|
||||
|
|
|
@ -23,7 +23,7 @@ export function getNowPlayingNames(nowPlayingItem, includeNonNameInfo) {
|
|||
|
||||
let bottomText = '';
|
||||
|
||||
if (nowPlayingItem.ArtistItems && nowPlayingItem.ArtistItems.length) {
|
||||
if (nowPlayingItem.ArtistItems?.length) {
|
||||
bottomItem = {
|
||||
Id: nowPlayingItem.ArtistItems[0].Id,
|
||||
Name: nowPlayingItem.ArtistItems[0].Name,
|
||||
|
@ -34,7 +34,7 @@ export function getNowPlayingNames(nowPlayingItem, includeNonNameInfo) {
|
|||
bottomText = nowPlayingItem.ArtistItems.map(function (a) {
|
||||
return a.Name;
|
||||
}).join(', ');
|
||||
} else if (nowPlayingItem.Artists && nowPlayingItem.Artists.length) {
|
||||
} else if (nowPlayingItem.Artists?.length) {
|
||||
bottomText = nowPlayingItem.Artists.join(', ');
|
||||
} else if (nowPlayingItem.SeriesName || nowPlayingItem.Album) {
|
||||
bottomText = topText;
|
||||
|
|
|
@ -163,12 +163,12 @@ function backdropImageUrl(apiClient, item, options) {
|
|||
options.quality = 100;
|
||||
}
|
||||
|
||||
if (item.BackdropImageTags && item.BackdropImageTags.length) {
|
||||
if (item.BackdropImageTags?.length) {
|
||||
options.tag = item.BackdropImageTags[0];
|
||||
return apiClient.getScaledImageUrl(item.Id, options);
|
||||
}
|
||||
|
||||
if (item.ParentBackdropImageTags && item.ParentBackdropImageTags.length) {
|
||||
if (item.ParentBackdropImageTags?.length) {
|
||||
options.tag = item.ParentBackdropImageTags[0];
|
||||
return apiClient.getScaledImageUrl(item.ParentBackdropItemId, options);
|
||||
}
|
||||
|
@ -773,7 +773,7 @@ class PlaybackManager {
|
|||
|
||||
self.setActivePlayer = function (player, targetInfo) {
|
||||
if (player === 'localplayer' || player.name === 'localplayer') {
|
||||
if (self._currentPlayer && self._currentPlayer.isLocalPlayer) {
|
||||
if (self._currentPlayer?.isLocalPlayer) {
|
||||
return;
|
||||
}
|
||||
setCurrentPlayerInternal(null, null);
|
||||
|
@ -795,7 +795,7 @@ class PlaybackManager {
|
|||
|
||||
self.trySetActivePlayer = function (player, targetInfo) {
|
||||
if (player === 'localplayer' || player.name === 'localplayer') {
|
||||
if (self._currentPlayer && self._currentPlayer.isLocalPlayer) {
|
||||
if (self._currentPlayer?.isLocalPlayer) {
|
||||
return;
|
||||
}
|
||||
return;
|
||||
|
@ -967,7 +967,7 @@ class PlaybackManager {
|
|||
return player.isPlaying();
|
||||
}
|
||||
|
||||
return player != null && player.currentSrc() != null;
|
||||
return player?.currentSrc() != null;
|
||||
};
|
||||
|
||||
self.isPlayingMediaType = function (mediaType, player) {
|
||||
|
@ -989,7 +989,7 @@ class PlaybackManager {
|
|||
self.isPlayingLocally = function (mediaTypes, player) {
|
||||
player = player || self._currentPlayer;
|
||||
|
||||
if (!player || !player.isLocalPlayer) {
|
||||
if (!player?.isLocalPlayer) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -1068,7 +1068,7 @@ class PlaybackManager {
|
|||
self.setAspectRatio = function (val, player) {
|
||||
player = player || self._currentPlayer;
|
||||
|
||||
if (player && player.setAspectRatio) {
|
||||
if (player?.setAspectRatio) {
|
||||
player.setAspectRatio(val);
|
||||
}
|
||||
};
|
||||
|
@ -1076,7 +1076,7 @@ class PlaybackManager {
|
|||
self.getSupportedAspectRatios = function (player) {
|
||||
player = player || self._currentPlayer;
|
||||
|
||||
if (player && player.getSupportedAspectRatios) {
|
||||
if (player?.getSupportedAspectRatios) {
|
||||
return player.getSupportedAspectRatios();
|
||||
}
|
||||
|
||||
|
@ -1086,7 +1086,7 @@ class PlaybackManager {
|
|||
self.getAspectRatio = function (player) {
|
||||
player = player || self._currentPlayer;
|
||||
|
||||
if (player && player.getAspectRatio) {
|
||||
if (player?.getAspectRatio) {
|
||||
return player.getAspectRatio();
|
||||
}
|
||||
};
|
||||
|
@ -1131,7 +1131,7 @@ class PlaybackManager {
|
|||
|
||||
self.getSupportedPlaybackRates = function (player) {
|
||||
player = player || self._currentPlayer;
|
||||
if (player && player.getSupportedPlaybackRates) {
|
||||
if (player?.getSupportedPlaybackRates) {
|
||||
return player.getSupportedPlaybackRates();
|
||||
}
|
||||
return [];
|
||||
|
@ -1351,7 +1351,7 @@ class PlaybackManager {
|
|||
|
||||
self.getMaxStreamingBitrate = function (player) {
|
||||
player = player || self._currentPlayer;
|
||||
if (player && player.getMaxStreamingBitrate) {
|
||||
if (player?.getMaxStreamingBitrate) {
|
||||
return player.getMaxStreamingBitrate();
|
||||
}
|
||||
|
||||
|
@ -1370,7 +1370,7 @@ class PlaybackManager {
|
|||
|
||||
self.enableAutomaticBitrateDetection = function (player) {
|
||||
player = player || self._currentPlayer;
|
||||
if (player && player.enableAutomaticBitrateDetection) {
|
||||
if (player?.enableAutomaticBitrateDetection) {
|
||||
return player.enableAutomaticBitrateDetection();
|
||||
}
|
||||
|
||||
|
@ -1386,7 +1386,7 @@ class PlaybackManager {
|
|||
|
||||
self.setMaxStreamingBitrate = function (options, player) {
|
||||
player = player || self._currentPlayer;
|
||||
if (player && player.setMaxStreamingBitrate) {
|
||||
if (player?.setMaxStreamingBitrate) {
|
||||
return player.setMaxStreamingBitrate(options);
|
||||
}
|
||||
|
||||
|
@ -1443,7 +1443,7 @@ class PlaybackManager {
|
|||
document.webkitCancelFullscreen();
|
||||
} else {
|
||||
const elem = document.querySelector('video');
|
||||
if (elem && elem.webkitEnterFullscreen) {
|
||||
if (elem?.webkitEnterFullscreen) {
|
||||
elem.webkitEnterFullscreen();
|
||||
}
|
||||
}
|
||||
|
@ -2078,7 +2078,7 @@ class PlaybackManager {
|
|||
|
||||
const mediaSource = self.currentMediaSource(player);
|
||||
|
||||
if (mediaSource && mediaSource.RunTimeTicks) {
|
||||
if (mediaSource?.RunTimeTicks) {
|
||||
return mediaSource.RunTimeTicks;
|
||||
}
|
||||
|
||||
|
@ -2614,7 +2614,7 @@ class PlaybackManager {
|
|||
|
||||
if (mediaSource.MediaStreams && player.useFullSubtitleUrls) {
|
||||
mediaSource.MediaStreams.forEach(stream => {
|
||||
if (stream.DeliveryUrl && stream.DeliveryUrl.startsWith('/')) {
|
||||
if (stream.DeliveryUrl?.startsWith('/')) {
|
||||
stream.DeliveryUrl = apiClient.getUrl(stream.DeliveryUrl);
|
||||
}
|
||||
});
|
||||
|
@ -3444,7 +3444,7 @@ class PlaybackManager {
|
|||
|
||||
const streamInfo = getPlayerData(player).streamInfo;
|
||||
|
||||
if (streamInfo && streamInfo.started && !streamInfo.ended) {
|
||||
if (streamInfo?.started && !streamInfo.ended) {
|
||||
reportPlayback(self, state, player, reportPlaylist, serverId, 'reportPlaybackProgress', progressEventName);
|
||||
}
|
||||
|
||||
|
@ -3515,7 +3515,7 @@ class PlaybackManager {
|
|||
|
||||
const nextItem = this._playQueueManager.getNextItemInfo();
|
||||
|
||||
if (!nextItem || !nextItem.item) {
|
||||
if (!nextItem?.item) {
|
||||
return Promise.reject();
|
||||
}
|
||||
|
||||
|
@ -3656,7 +3656,7 @@ class PlaybackManager {
|
|||
async playTrailers(item) {
|
||||
const player = this._currentPlayer;
|
||||
|
||||
if (player && player.playTrailers) {
|
||||
if (player?.playTrailers) {
|
||||
return player.playTrailers(item);
|
||||
}
|
||||
|
||||
|
@ -3668,7 +3668,7 @@ class PlaybackManager {
|
|||
items = await apiClient.getLocalTrailers(apiClient.getCurrentUserId(), item.Id);
|
||||
}
|
||||
|
||||
if (!items || !items.length) {
|
||||
if (!items?.length) {
|
||||
items = (item.RemoteTrailers || []).map((t) => {
|
||||
return {
|
||||
Name: t.Name || (item.Name + ' Trailer'),
|
||||
|
@ -3750,7 +3750,7 @@ class PlaybackManager {
|
|||
}
|
||||
|
||||
setPlaybackRate(value, player = this._currentPlayer) {
|
||||
if (player && player.setPlaybackRate) {
|
||||
if (player?.setPlaybackRate) {
|
||||
player.setPlaybackRate(value);
|
||||
|
||||
// Save the new playback rate in the browser session, to restore when playing a new video.
|
||||
|
@ -3759,7 +3759,7 @@ class PlaybackManager {
|
|||
}
|
||||
|
||||
getPlaybackRate(player = this._currentPlayer) {
|
||||
if (player && player.getPlaybackRate) {
|
||||
if (player?.getPlaybackRate) {
|
||||
return player.getPlaybackRate();
|
||||
}
|
||||
|
||||
|
@ -3767,7 +3767,7 @@ class PlaybackManager {
|
|||
}
|
||||
|
||||
instantMix(item, player = this._currentPlayer) {
|
||||
if (player && player.instantMix) {
|
||||
if (player?.instantMix) {
|
||||
return player.instantMix(item);
|
||||
}
|
||||
|
||||
|
@ -3788,7 +3788,7 @@ class PlaybackManager {
|
|||
}
|
||||
|
||||
shuffle(shuffleItem, player = this._currentPlayer) {
|
||||
if (player && player.shuffle) {
|
||||
if (player?.shuffle) {
|
||||
return player.shuffle(shuffleItem);
|
||||
}
|
||||
|
||||
|
@ -3805,7 +3805,7 @@ class PlaybackManager {
|
|||
|
||||
const mediaSource = this.currentMediaSource(player);
|
||||
|
||||
const mediaStreams = (mediaSource || {}).MediaStreams || [];
|
||||
const mediaStreams = mediaSource?.MediaStreams || [];
|
||||
return mediaStreams.filter(function (s) {
|
||||
return s.Type === 'Audio';
|
||||
}).sort(itemHelper.sortTracks);
|
||||
|
@ -3821,7 +3821,7 @@ class PlaybackManager {
|
|||
|
||||
const mediaSource = this.currentMediaSource(player);
|
||||
|
||||
const mediaStreams = (mediaSource || {}).MediaStreams || [];
|
||||
const mediaStreams = mediaSource?.MediaStreams || [];
|
||||
return mediaStreams.filter(function (s) {
|
||||
return s.Type === 'Subtitle';
|
||||
}).sort(itemHelper.sortTracks);
|
||||
|
@ -3960,7 +3960,7 @@ class PlaybackManager {
|
|||
}
|
||||
|
||||
displayContent(options, player = this._currentPlayer) {
|
||||
if (player && player.displayContent) {
|
||||
if (player?.displayContent) {
|
||||
player.displayContent(options);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
import { playbackManager } from './playbackmanager';
|
||||
import layoutManager from '../layoutManager';
|
||||
import Events from '../../utils/events.ts';
|
||||
|
@ -19,7 +18,7 @@ Events.on(playbackManager, 'playbackstart', function (e, player) {
|
|||
|
||||
if (isLocalVideo && layoutManager.mobile) {
|
||||
/* eslint-disable-next-line compat/compat */
|
||||
const lockOrientation = window.screen.lockOrientation || window.screen.mozLockOrientation || window.screen.msLockOrientation || (window.screen.orientation && window.screen.orientation.lock);
|
||||
const lockOrientation = window.screen.lockOrientation || window.screen.mozLockOrientation || window.screen.msLockOrientation || (window.screen.orientation?.lock);
|
||||
|
||||
if (lockOrientation) {
|
||||
try {
|
||||
|
@ -40,7 +39,7 @@ Events.on(playbackManager, 'playbackstart', function (e, player) {
|
|||
Events.on(playbackManager, 'playbackstop', function (e, playbackStopInfo) {
|
||||
if (orientationLocked && !playbackStopInfo.nextMediaType) {
|
||||
/* eslint-disable-next-line compat/compat */
|
||||
const unlockOrientation = window.screen.unlockOrientation || window.screen.mozUnlockOrientation || window.screen.msUnlockOrientation || (window.screen.orientation && window.screen.orientation.unlock);
|
||||
const unlockOrientation = window.screen.unlockOrientation || window.screen.mozUnlockOrientation || window.screen.msUnlockOrientation || (window.screen.orientation?.unlock);
|
||||
|
||||
if (unlockOrientation) {
|
||||
try {
|
||||
|
|
|
@ -248,7 +248,7 @@ export function show(options) {
|
|||
const player = options.player;
|
||||
const currentItem = playbackManager.currentItem(player);
|
||||
|
||||
if (!currentItem || !currentItem.ServerId) {
|
||||
if (!currentItem?.ServerId) {
|
||||
return showWithUser(options, player, null);
|
||||
}
|
||||
|
||||
|
|
|
@ -3,9 +3,9 @@ export function getDisplayPlayMethod(session) {
|
|||
return null;
|
||||
}
|
||||
|
||||
if (session.TranscodingInfo && session.TranscodingInfo.IsVideoDirect && session.TranscodingInfo.IsAudioDirect) {
|
||||
if (session.TranscodingInfo?.IsVideoDirect && session.TranscodingInfo.IsAudioDirect) {
|
||||
return 'Remux';
|
||||
} else if (session.TranscodingInfo && session.TranscodingInfo.IsVideoDirect) {
|
||||
} else if (session.TranscodingInfo?.IsVideoDirect) {
|
||||
return 'DirectStream';
|
||||
} else if (session.PlayState.PlayMethod === 'Transcode') {
|
||||
return 'Transcode';
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue