mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-15 13:46:16 -08:00
* fix(migration): show startup preparation and recover source read failures * fix(migration): keep inventory reload failures recoverable * test(migration): type the deferred recovery hook * fix(migration): reconcile failed EPG cleanup before recovery * fix(migration): await settings before inventory readiness * style(migration): add a subtle theme-aware startup watermark
30 lines
904 B
TypeScript
30 lines
904 B
TypeScript
import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';
|
|
import { PlaylistMeta } from '@iptvnator/shared/interfaces';
|
|
|
|
export const playlistsAdapter: EntityAdapter<PlaylistMeta> =
|
|
createEntityAdapter<PlaylistMeta>({
|
|
selectId: (item: PlaylistMeta) => item._id,
|
|
});
|
|
|
|
export interface PlaylistMetaState extends EntityState<PlaylistMeta> {
|
|
selectedId: string;
|
|
allPlaylistsLoaded: boolean;
|
|
loadFailed: boolean;
|
|
selectedFilters: string[];
|
|
}
|
|
|
|
export const initialPlaylistMetaState: PlaylistMetaState =
|
|
playlistsAdapter.getInitialState({
|
|
selectedId: '',
|
|
allPlaylistsLoaded: false,
|
|
loadFailed: false,
|
|
selectedFilters: ['m3u', 'xtream', 'stalker'],
|
|
});
|
|
|
|
export const {
|
|
selectIds,
|
|
selectEntities: getPlaylistMetaEntities,
|
|
selectAll: getAllPlaylistsMeta,
|
|
selectTotal,
|
|
} = playlistsAdapter.getSelectors();
|