feat: draggable channels in favorites list

This commit is contained in:
4gray committed 2023-02-28 22:16:14 +01:00
1 parent de17686cdf
commit ba41c8dae5
9 files changed
+101 -23

No files matched your search

+5
View File
@@ -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 }>()
+18
View File
@@ -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),
+16
View File
@@ -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,