1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

Refactor media session to playback subscriber

This commit is contained in:
Bill Thornton 2024-10-27 01:22:23 -04:00
parent c3614a0c8c
commit 68bac124af
12 changed files with 268 additions and 383 deletions

View file

@ -0,0 +1,59 @@
import { BaseItemKind } from '@jellyfin/sdk/lib/generated-client/models/base-item-kind';
import { ImageType } from '@jellyfin/sdk/lib/generated-client/models/image-type';
import ServerConnections from 'components/ServerConnections';
import type { ItemDto } from 'types/base/models/item-dto';
interface ImageOptions {
height?: number
maxHeight?: number
tag?: string
type?: ImageType
}
function getSeriesImageUrl(item: ItemDto, options: ImageOptions = {}) {
if (!item.ServerId) return null;
if (item.SeriesId && options.type === ImageType.Primary && item.SeriesPrimaryImageTag) {
options.tag = item.SeriesPrimaryImageTag;
return ServerConnections.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options);
}
if (options.type === ImageType.Thumb) {
if (item.SeriesId && item.SeriesThumbImageTag) {
options.tag = item.SeriesThumbImageTag;
return ServerConnections.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options);
}
if (item.ParentThumbItemId && item.ParentThumbImageTag) {
options.tag = item.ParentThumbImageTag;
return ServerConnections.getApiClient(item.ServerId).getScaledImageUrl(item.ParentThumbItemId, options);
}
}
return null;
}
export function getImageUrl(item: ItemDto, options: ImageOptions = {}) {
if (!item.ServerId) return null;
options.type = options.type || ImageType.Primary;
if (item.Type === BaseItemKind.Episode) return getSeriesImageUrl(item, options);
const itemId = item.PrimaryImageItemId || item.Id;
if (itemId && item.ImageTags?.[options.type]) {
options.tag = item.ImageTags[options.type];
return ServerConnections.getApiClient(item.ServerId).getScaledImageUrl(itemId, options);
}
if (item.AlbumId && item.AlbumPrimaryImageTag) {
options.tag = item.AlbumPrimaryImageTag;
return ServerConnections.getApiClient(item.ServerId).getScaledImageUrl(item.AlbumId, options);
}
return null;
}