mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-15 05:36:17 -08:00
feat: draggable channels in favorites list
This commit is contained in:
1 parent
de17686cdf
commit
ba41c8dae5
9 files changed
+101
-23
No files matched your search
@@ -66,6 +66,11 @@ export const updateFavorites = createAction(
|
||||
props<{ channel: Channel }>()
|
||||
);
|
||||
|
||||
export const setFavorites = createAction(
|
||||
`${STORE_KEY} Set favorites`,
|
||||
props<{ channelIds: string[] }>()
|
||||
);
|
||||
|
||||
export const setActiveChannel = createAction(
|
||||
`${STORE_KEY} Set active channel`,
|
||||
props<{ channel: Channel }>()
|
||||
|
||||
@@ -35,6 +35,24 @@ export class PlaylistEffects {
|
||||
{ dispatch: false }
|
||||
);
|
||||
|
||||
setFavorites$ = createEffect(
|
||||
() => {
|
||||
return this.actions$.pipe(
|
||||
ofType(PlaylistActions.setFavorites),
|
||||
combineLatestWith(this.store.select(selectActivePlaylistId)),
|
||||
switchMap(([action, playlistId]) =>
|
||||
this.playlistsService.setFavorites(
|
||||
playlistId,
|
||||
action.channelIds
|
||||
)
|
||||
)
|
||||
);
|
||||
},
|
||||
{
|
||||
dispatch: false,
|
||||
}
|
||||
);
|
||||
|
||||
setActiveChannel$ = createEffect(() => {
|
||||
return this.actions$.pipe(
|
||||
ofType(PlaylistActions.setActiveChannel),
|
||||
|
||||
@@ -79,6 +79,22 @@ export const playlistReducer = createReducer(
|
||||
},
|
||||
};
|
||||
}),
|
||||
on(PlaylistActions.setFavorites, (state, action): PlaylistState => {
|
||||
const { channelIds } = action;
|
||||
return {
|
||||
...state,
|
||||
playlists: {
|
||||
...state.playlists,
|
||||
entities: {
|
||||
...state.playlists.entities,
|
||||
[state.playlists.selectedId]: {
|
||||
...state.playlists.entities[state.playlists.selectedId],
|
||||
favorites: channelIds,
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
}),
|
||||
on(PlaylistActions.loadPlaylistsSuccess, (state, action): PlaylistState => {
|
||||
return {
|
||||
...state,
|
||||
|
||||
Reference in new issue
Block a user