Add play controls to playlist song list

This commit is contained in:
jeffvli 2023-01-03 02:13:21 -08:00
parent 19e3f435c4
commit 008c12626d

View file

@ -20,6 +20,8 @@ import {
Text, Text,
TextTitle, TextTitle,
} from '/@/renderer/components'; } from '/@/renderer/components';
import { usePlayQueueAdd } from '/@/renderer/features/player';
import { usePlaylistDetail } from '/@/renderer/features/playlists/queries/playlist-detail-query';
import { useContainerQuery } from '/@/renderer/hooks'; import { useContainerQuery } from '/@/renderer/hooks';
import { import {
useCurrentServer, useCurrentServer,
@ -30,7 +32,7 @@ import {
useSetPlaylistDetailFilters, useSetPlaylistDetailFilters,
useSetPlaylistStore, useSetPlaylistStore,
} from '/@/renderer/store'; } from '/@/renderer/store';
import { ListDisplayType, TableColumn } from '/@/renderer/types'; import { LibraryItem, ListDisplayType, Play, TableColumn } from '/@/renderer/types';
const FILTERS = { const FILTERS = {
jellyfin: [ jellyfin: [
@ -93,6 +95,9 @@ export const PlaylistDetailSongListHeader = ({ tableRef }: PlaylistDetailHeaderP
sortOrder: page?.table.id[playlistId]?.filter?.sortOrder || SortOrder.ASC, sortOrder: page?.table.id[playlistId]?.filter?.sortOrder || SortOrder.ASC,
}; };
const detailQuery = usePlaylistDetail({ id: playlistId });
const handlePlayQueueAdd = usePlayQueueAdd();
const cq = useContainerQuery(); const cq = useContainerQuery();
const setPagination = useSetPlaylistTablePagination(); const setPagination = useSetPlaylistTablePagination();
@ -217,6 +222,15 @@ export const PlaylistDetailSongListHeader = ({ tableRef }: PlaylistDetailHeaderP
} }
}; };
const handlePlay = async (playType: Play) => {
handlePlayQueueAdd?.({
byItemType: { id: [playlistId], type: LibraryItem.PLAYLIST },
play: playType,
});
};
if (detailQuery.isLoading) return null;
return ( return (
<PageHeader p="1rem"> <PageHeader p="1rem">
<HeaderItems ref={cq.ref}> <HeaderItems ref={cq.ref}>
@ -238,7 +252,7 @@ export const PlaylistDetailSongListHeader = ({ tableRef }: PlaylistDetailHeaderP
fw="bold" fw="bold"
order={3} order={3}
> >
Playlist {detailQuery?.data?.name}
</TextTitle> </TextTitle>
</Button> </Button>
</DropdownMenu.Target> </DropdownMenu.Target>
@ -350,44 +364,23 @@ export const PlaylistDetailSongListHeader = ({ tableRef }: PlaylistDetailHeaderP
</Button> </Button>
</DropdownMenu.Target> </DropdownMenu.Target>
<DropdownMenu.Dropdown> <DropdownMenu.Dropdown>
<DropdownMenu.Item disabled>Play</DropdownMenu.Item> <DropdownMenu.Item onClick={() => handlePlay(Play.NOW)}>Play</DropdownMenu.Item>
<DropdownMenu.Item disabled>Add to queue (next)</DropdownMenu.Item> <DropdownMenu.Item
<DropdownMenu.Item disabled>Add to queue (last)</DropdownMenu.Item> disabled
<DropdownMenu.Item disabled>Add to playlist</DropdownMenu.Item> onClick={() => handlePlay(Play.NEXT)}
>
Add to queue (last)
</DropdownMenu.Item>
<DropdownMenu.Item
disabled
onClick={() => handlePlay(Play.LAST)}
>
Add to queue (next)
</DropdownMenu.Item>
</DropdownMenu.Dropdown> </DropdownMenu.Dropdown>
</DropdownMenu> </DropdownMenu>
</Flex> </Flex>
</HeaderItems> </HeaderItems>
{/* <HeaderContainer ref={mergedRef}> */}
{/* <MetadataWrapper>
<Group>
<Text
$link
component={Link}
fw="600"
sx={{ textTransform: 'uppercase' }}
to={AppRoute.LIBRARY_ALBUMS}
>
Playlist
</Text>
</Group>
<TextTitle
fw="900"
lh="1"
mb="0.12em"
mt=".08em"
sx={{ fontSize: titleSize }}
>
{detailQuery?.data?.name}
</TextTitle>
<Group
py="1rem"
spacing="xs"
>
<PlayButton />
</Group>
</MetadataWrapper> */}
{/* </HeaderContainer> */}
</PageHeader> </PageHeader>
); );
}; };