Allow navigating directly to playlist song view

This commit is contained in:
jeffvli 2023-07-15 15:57:40 -07:00
parent d64040f3f0
commit 3dcb0dc4ed
6 changed files with 58 additions and 13 deletions

View file

@ -15,7 +15,7 @@ import {
import { usePlayQueueAdd } from '/@/renderer/features/player';
import { useCreateFavorite, useDeleteFavorite } from '/@/renderer/features/shared';
import { AppRoute } from '/@/renderer/router/routes';
import { useCurrentServer, usePlaylistListStore } from '/@/renderer/store';
import { useCurrentServer, useGeneralSettings, usePlaylistListStore } from '/@/renderer/store';
import { CardRow, ListDisplayType } from '/@/renderer/types';
interface PlaylistListGridViewProps {
@ -31,6 +31,7 @@ export const PlaylistListGridView = ({ gridRef, itemCount }: PlaylistListGridVie
const grid = usePlaylistGridStore();
const { setGrid } = usePlaylistStoreActions();
const page = usePlaylistListStore();
const { defaultFullPlaylist } = useGeneralSettings();
const createFavoriteMutation = useCreateFavorite({});
const deleteFavoriteMutation = useDeleteFavorite({});
@ -61,7 +62,9 @@ export const PlaylistListGridView = ({ gridRef, itemCount }: PlaylistListGridVie
};
const cardRows = useMemo(() => {
const rows: CardRow<Playlist>[] = [PLAYLIST_CARD_ROWS.name];
const rows: CardRow<Playlist>[] = defaultFullPlaylist
? [PLAYLIST_CARD_ROWS.nameFull]
: [PLAYLIST_CARD_ROWS.name];
switch (page.filter.sortBy) {
case PlaylistListSort.DURATION:
@ -84,7 +87,7 @@ export const PlaylistListGridView = ({ gridRef, itemCount }: PlaylistListGridVie
}
return rows;
}, [page.filter.sortBy]);
}, [defaultFullPlaylist, page.filter.sortBy]);
const handleGridScroll = useCallback(
(e: ListOnScrollProps) => {
@ -144,7 +147,9 @@ export const PlaylistListGridView = ({ gridRef, itemCount }: PlaylistListGridVie
loading={itemCount === undefined || itemCount === null}
minimumBatchSize={40}
route={{
route: AppRoute.PLAYLISTS_DETAIL,
route: defaultFullPlaylist
? AppRoute.PLAYLISTS_DETAIL_SONGS
: AppRoute.PLAYLISTS_DETAIL,
slugs: [{ idProperty: 'id', slugProperty: 'playlistId' }],
}}
width={width}

View file

@ -27,6 +27,7 @@ import {
useSetPlaylistTable,
useCurrentServer,
usePlaylistListStore,
useGeneralSettings,
} from '/@/renderer/store';
import { ListDisplayType } from '/@/renderer/types';
@ -43,6 +44,7 @@ export const PlaylistListTableView = ({ tableRef, itemCount }: PlaylistListTable
const pagination = usePlaylistTablePagination();
const setPagination = useSetPlaylistTablePagination();
const setTable = useSetPlaylistTable();
const { defaultFullPlaylist } = useGeneralSettings();
const isPaginationEnabled = page.display === ListDisplayType.TABLE_PAGINATED;
@ -171,7 +173,11 @@ export const PlaylistListTableView = ({ tableRef, itemCount }: PlaylistListTable
const handleRowDoubleClick = (e: RowDoubleClickedEvent) => {
if (!e.data) return;
navigate(generatePath(AppRoute.PLAYLISTS_DETAIL, { playlistId: e.data.id }));
if (defaultFullPlaylist) {
navigate(generatePath(AppRoute.PLAYLISTS_DETAIL_SONGS, { playlistId: e.data.id }));
} else {
navigate(generatePath(AppRoute.PLAYLISTS_DETAIL, { playlistId: e.data.id }));
}
};
return (