feat: enhance EPG and portal features with error suppression and status resolution

- Added suppressErrorLog option to EPG API calls in withEpg feature.
- Introduced resolvePortalStatus function to streamline portal status checks in withPortal feature.
- Updated checkPortalStatus to return PortalStatusType instead of void.
- Enhanced XtreamStore to preserve cancelled content initialization block.
- Expanded XtreamState to include contentInitBlockReason for better state management.
- Added XtreamContentGateComponent to manage content initialization states.
- Implemented tests for XtreamContentGateComponent to ensure correct rendering based on contentInitBlockReason.
- Created PlaylistRefreshService to handle playlist refresh operations and events.
- Introduced new IPC commands for playlist refresh functionality.
- Added interfaces for playlist refresh events and payloads to improve type safety.
This commit is contained in:
4gray committed 2026-04-04 13:40:34 +02:00
1 parent 4e0afe8b20
commit 91cd650c1a
55 files changed
+3485 -397

No files matched your search

+1
View File
@@ -12,6 +12,7 @@ export * from './lib/language.enum';
export * from './lib/parsed-playlist.interface';
export * from './lib/playback-position.interface';
export * from './lib/playlist-meta.type';
export * from './lib/playlist-refresh.interface';
export * from './lib/playlist-recently-viewed.interface';
export * from './lib/playlist-recently-viewed.utils';
export * from './lib/playlist.interface';
@@ -12,6 +12,9 @@ export const EPG_FORCE_FETCH = 'EPG:EPG_FORCE_FETCH';
// Playlist related commands
export const PLAYLIST_PARSE_BY_URL = 'PLAYLIST:PARSE_PLAYLIST_BY_URL';
export const PLAYLIST_UPDATE = 'PLAYLIST:UPDATE';
export const PLAYLIST_REFRESH = 'PLAYLIST:REFRESH';
export const PLAYLIST_REFRESH_EVENT = 'PLAYLIST:REFRESH_EVENT';
export const PLAYLIST_CANCEL_REFRESH = 'PLAYLIST:CANCEL_REFRESH';
// General
export const ERROR = 'ERROR';
@@ -38,6 +41,7 @@ export const EXTERNAL_PLAYER_SESSION_UPDATE =
// Xtream
export const XTREAM_REQUEST = 'XTREAM_REQUEST';
export const XTREAM_RESPONSE = 'XTREAM_RESPONSE';
export const XTREAM_CANCEL_SESSION = 'XTREAM_CANCEL_SESSION';
// Stalker
export const STALKER_REQUEST = 'STALKER_REQUEST';
@@ -0,0 +1,28 @@
export type PlaylistRefreshPhase =
| 'fetching'
| 'reading-file'
| 'parsing'
| 'saving';
export type PlaylistRefreshStatus =
| 'started'
| 'progress'
| 'completed'
| 'cancelled'
| 'error';
export interface PlaylistRefreshEvent {
operationId: string;
playlistId: string;
phase?: PlaylistRefreshPhase;
status: PlaylistRefreshStatus;
error?: string;
}
export interface PlaylistRefreshPayload {
operationId: string;
playlistId: string;
title: string;
filePath?: string;
url?: string;
}