Add play controls to playlist song list
This commit is contained in:
parent
19e3f435c4
commit
008c12626d
1 changed files with 29 additions and 36 deletions
|
@ -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>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
Reference in a new issue