67 lines
1.8 KiB
TypeScript
67 lines
1.8 KiB
TypeScript
import { GlobalSearchResult } from 'services';
|
|
import {
|
|
EpgItem,
|
|
XtreamCategory,
|
|
XtreamLiveStream,
|
|
XtreamSerieItem,
|
|
XtreamVodStream,
|
|
} from 'shared-interfaces';
|
|
import {
|
|
XtreamContentItem,
|
|
XtreamPlaylistData,
|
|
} from './data-sources/xtream-data-source.interface';
|
|
|
|
export type ContentType = 'live' | 'vod' | 'series';
|
|
export type XtreamContentLoadState = 'idle' | 'loading' | 'ready' | 'error';
|
|
export type XtreamContentLoadStateByType = Record<
|
|
ContentType,
|
|
XtreamContentLoadState
|
|
>;
|
|
|
|
export type PortalStatusType =
|
|
| 'active'
|
|
| 'inactive'
|
|
| 'expired'
|
|
| 'unavailable';
|
|
|
|
export type XtreamContentInitBlockReason =
|
|
| 'cancelled'
|
|
| 'expired'
|
|
| 'inactive'
|
|
| 'unavailable'
|
|
| 'error';
|
|
|
|
export interface XtreamPortalStatus {
|
|
status: 'active' | 'inactive' | 'expired' | 'unavailable';
|
|
message?: string;
|
|
}
|
|
|
|
export interface XtreamState {
|
|
isLoadingCategories: boolean;
|
|
isLoadingContent: boolean;
|
|
isImporting: boolean;
|
|
contentLoadStateByType: XtreamContentLoadStateByType;
|
|
liveCategories: XtreamCategory[];
|
|
vodCategories: XtreamCategory[];
|
|
serialCategories: XtreamCategory[];
|
|
liveStreams: XtreamLiveStream[];
|
|
vodStreams: XtreamVodStream[];
|
|
serialStreams: XtreamSerieItem[];
|
|
page: number;
|
|
limit: number;
|
|
selectedCategoryId: number | null;
|
|
searchResults: XtreamContentItem[];
|
|
selectedContentType: ContentType;
|
|
selectedItem: unknown | null;
|
|
importCount: number;
|
|
itemsToImport: number;
|
|
currentPlaylist: XtreamPlaylistData | null;
|
|
epgItems: EpgItem[];
|
|
hideExternalInfoDialog: boolean;
|
|
portalStatus: PortalStatusType;
|
|
contentInitBlockReason: XtreamContentInitBlockReason | null;
|
|
globalSearchResults: GlobalSearchResult[];
|
|
streamUrl: string;
|
|
playlistId: string | null;
|
|
}
|