jellyfish-web/src/types/library.ts
2023-10-11 00:10:16 -04:00

66 lines
1.8 KiB
TypeScript

import type { ItemFilter } from '@jellyfin/sdk/lib/generated-client/models/item-filter';
import type { VideoType } from '@jellyfin/sdk/lib/generated-client/models/video-type';
import type { SortOrder } from '@jellyfin/sdk/lib/generated-client/models/sort-order';
import type { SeriesStatus } from '@jellyfin/sdk/lib/generated-client/models/series-status';
import type { ImageType } from '@jellyfin/sdk/lib/generated-client';
import { ItemSortBy } from '@jellyfin/sdk/lib/models/api/item-sort-by';
export type ParentId = string | null | undefined;
export interface LibraryViewProps {
parentId: ParentId;
}
export enum FeatureFilters {
HasSubtitles = 'HasSubtitles',
HasTrailer = 'HasTrailer',
HasSpecialFeature = 'HasSpecialFeature',
HasThemeSong = 'HasThemeSong',
HasThemeVideo = 'HasThemeVideo',
}
export enum EpisodeFilter {
ParentIndexNumber = 'ParentIndexNumber',
IsMissing = 'IsMissing',
IsUnaired = 'IsUnaired',
}
export enum VideoBasicFilter {
IsSD = 'IsSD',
IsHD = 'IsHD',
Is4K = 'Is4K',
Is3D = 'Is3D',
}
export interface Filters {
Features?: FeatureFilters[];
Genres?: string[];
OfficialRatings?: string[];
EpisodeFilter?: EpisodeFilter[];
Status?: ItemFilter[];
EpisodesStatus?: string[];
SeriesStatus?: SeriesStatus[];
StudioIds?: string[];
Tags?: string[];
VideoBasicFilter?: VideoBasicFilter[];
VideoTypes?: VideoType[];
Years?: number[];
}
export enum ViewMode {
GridView = 'grid',
ListView = 'list',
}
export interface LibraryViewSettings {
SortBy: ItemSortBy;
SortOrder: SortOrder;
StartIndex: number;
CardLayout: boolean;
ImageType: ImageType;
ViewMode: ViewMode;
ShowTitle: boolean;
ShowYear?: boolean;
Filters?: Filters;
Alphabet?: string | null;
}