Play all artist tracks, fixes #395

This commit is contained in:
James Barnsley
2020-11-23 20:45:42 +13:00
parent bbf81003be
commit a3a99a8e7c
6 changed files with 181 additions and 133 deletions

View File

@ -898,6 +898,16 @@ class ContextMenu extends React.Component {
</div>
);
const play_artist_all_tracks = (
<div className="context-menu__item">
<a className="context-menu__item__link" onClick={this.playURIs}>
<span className="context-menu__item__label">
<I18n path="context_menu.play_all_tracks" />
</span>
</a>
</div>
);
const add_to_queue = (
<div className="context-menu__item">
<a className="context-menu__item__link" onClick={this.addToQueue}>
@ -1146,6 +1156,7 @@ class ContextMenu extends React.Component {
return (
<div>
{context.source === 'spotify' && play_artist_top_tracks}
{play_artist_all_tracks}
{context.source === 'spotify' && start_radio}
{this.canBeInLibrary() && <div className="context-menu__divider" />}
{this.canBeInLibrary() && toggle_in_library}

View File

@ -173,6 +173,7 @@ context_menu:
no_playlists: No writable playlists
play_next: Play next
play_top_tracks: Play top tracks
play_all_tracks: Play all tracks
love_track: Love track
unlove_track: Unlove track
pin: Pin

View File

@ -123,17 +123,26 @@ class Artist extends React.Component {
trackEvent({ category: 'Artist', action: `Sort${type}`, label: `${value} ${reverse ? 'DESC' : 'ASC'}` });
}
onPlay = () => {
onPlayAll = () => {
const {
artist: {
uri,
tracks,
albums_uris,
},
uiActions: {
createNotification,
},
mopidyActions: {
playURIs,
},
} = this.props;
if ((!albums_uris || !albums_uris.length) && (!tracks || !tracks.length)) {
createNotification({ content: i18n('errors.no_results'), level: 'warning' });
return;
}
playURIs(arrayOf('uri', tracks) || albums_uris, uri);
}
@ -159,6 +168,7 @@ class Artist extends React.Component {
context: 'artist',
items: [artist],
uris: [uri],
tracklist_uri: uri,
});
}
@ -507,7 +517,7 @@ class Artist extends React.Component {
<div className="actions">
<Button
type="primary"
onClick={this.onPlay}
onClick={this.onPlayAll}
tracking={{ category: 'Artist', action: 'Play' }}
>
<I18n path="actions.play" />