mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
60 lines
2 KiB
TypeScript
60 lines
2 KiB
TypeScript
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;
|
|
}
|