Skip to content

Commit 6c7ca69

Browse files
committed
[ 1.0.12 ] * This release requires the SpotifyPlus v1.0.65 release; please make sure you update the SpotifyPlus integration prior to updating this SpotifyPlus Card release.
* Added category browser: browse Spotify playlists by categories; existing card configurations have to enable the section in the general configuration settings. * Added dynamic track recommendation capability to user-defined presets. Simply put, you define a preset with the parameters of what you want to play and Spotify searches its media catalog for tracks that match. The matching tracks are then added to a play queue and played in random order. The matching tracks will change over time, as Spotify adds new content to its media catalog. * Added action for all playable media types: Copy Preset Info to Clipboard. This will create a user-preset configuration entry for the selected media and copy it to the clipboard; the entry can then be pasted into the configuration editor under the `userPresets:` key, which will create a user preset for the media item. * Updated artist details to show more information about the artist. Note that actions menu can be used to display more artist-related details (albums, top tracks, etc). * Added artist action: show artist albums; lists only the artist albums (no compilations, no appears on, no singles, etc). * Added artist action: show artist album compilations; lists only the artist compilation albums (no appears on, no singles, etc). * Added artist action: show artist albums appears on (aka collaborations); lists only the artist appears on albums (no compilations, no singles, etc). * Added artist action: show artist album singles; lists only the artist single release albums (no compilations, no appears on, etc). * Added artist action: show artist related artists; lists artists that are similar to the selected artist. * Added show action: search show episodes; lists show episodes with cover art for the selected show. * Updated show details form to only display the first 20 episodes of the show after the show description. This will make the UI much more responsive, as most shows have 200+ episodes. More shows can be listed by using the actions menu drop down.
1 parent 862445d commit 6c7ca69

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+3827
-765
lines changed

CHANGELOG.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,21 @@ Change are listed in reverse chronological order (newest to oldest).
66

77
<span class="changelog">
88

9+
###### [ 1.0.12 ] - 2024/11/15
10+
11+
* This release requires the SpotifyPlus v1.0.65 release; please make sure you update the SpotifyPlus integration prior to updating this SpotifyPlus Card release.
12+
* Added category browser: browse Spotify playlists by categories; existing card configurations have to enable the section in the general configuration settings.
13+
* Added dynamic track recommendation capability to user-defined presets. Simply put, you define a preset with the parameters of what you want to play and Spotify searches its media catalog for tracks that match. The matching tracks are then added to a play queue and played in random order. The matching tracks will change over time, as Spotify adds new content to its media catalog.
14+
* Added action for all playable media types: Copy Preset Info to Clipboard. This will create a user-preset configuration entry for the selected media and copy it to the clipboard; the entry can then be pasted into the configuration editor under the `userPresets:` key, which will create a user preset for the media item.
15+
* Updated artist details to show more information about the artist. Note that actions menu can be used to display more artist-related details (albums, top tracks, etc).
16+
* Added artist action: show artist albums; lists only the artist albums (no compilations, no appears on, no singles, etc).
17+
* Added artist action: show artist album compilations; lists only the artist compilation albums (no appears on, no singles, etc).
18+
* Added artist action: show artist albums appears on (aka collaborations); lists only the artist appears on albums (no compilations, no singles, etc).
19+
* Added artist action: show artist album singles; lists only the artist single release albums (no compilations, no appears on, etc).
20+
* Added artist action: show artist related artists; lists artists that are similar to the selected artist.
21+
* Added show action: search show episodes; lists show episodes with cover art for the selected show.
22+
* Updated show details form to only display the first 20 episodes of the show after the show description. This will make the UI much more responsive, as most shows have 200+ episodes. More shows can be listed by using the actions menu drop down.
23+
924
###### [ 1.0.11 ] - 2024/11/04
1025

1126
* Fixed a bug in all media list rendering controls that was causing the media list not to render for some browser types (Fire HD, iPad Air, etc).

SpotifyPlusCard.njsproj

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -127,9 +127,7 @@
127127
<TypeScriptCompile Include="src\components\media-browser-icons.ts" />
128128
<TypeScriptCompile Include="src\components\media-browser-list.ts" />
129129
<TypeScriptCompile Include="src\components\player-body-audiobook.ts" />
130-
<TypeScriptCompile Include="src\components\player-body-queue.ts">
131-
<SubType>Code</SubType>
132-
</TypeScriptCompile>
130+
<TypeScriptCompile Include="src\components\player-body-queue.ts" />
133131
<TypeScriptCompile Include="src\components\player-body-track.ts" />
134132
<TypeScriptCompile Include="src\components\player-body-show.ts" />
135133
<TypeScriptCompile Include="src\components\player-controls.ts" />
@@ -140,10 +138,10 @@
140138
<TypeScriptCompile Include="src\components\show-actions.ts" />
141139
<TypeScriptCompile Include="src\components\track-actions.ts" />
142140
<TypeScriptCompile Include="src\components\userpreset-actions.ts" />
141+
<TypeScriptCompile Include="src\editor\category-browser-editor.ts" />
143142
<TypeScriptCompile Include="src\editor\episode-fav-browser-editor.ts" />
144-
<TypeScriptCompile Include="src\events\search-media.ts">
145-
<SubType>Code</SubType>
146-
</TypeScriptCompile>
143+
<TypeScriptCompile Include="src\events\search-media.ts" />
144+
<TypeScriptCompile Include="src\sections\category-browser.ts" />
147145
<TypeScriptCompile Include="src\sections\episode-fav-browser.ts" />
148146
<TypeScriptCompile Include="src\sections\fav-browser-base.ts" />
149147
<TypeScriptCompile Include="src\styles\shared-styles-grid.js" />
@@ -201,6 +199,8 @@
201199
<TypeScriptCompile Include="src\types\spotifyplus\audiobook-page-simplified.ts" />
202200
<TypeScriptCompile Include="src\types\spotifyplus\audiobook-simplified.ts" />
203201
<TypeScriptCompile Include="src\types\spotifyplus\author.ts" />
202+
<TypeScriptCompile Include="src\types\spotifyplus\category-page.ts" />
203+
<TypeScriptCompile Include="src\types\spotifyplus\category.ts" />
204204
<TypeScriptCompile Include="src\types\spotifyplus\chapter-page-simplified.ts" />
205205
<TypeScriptCompile Include="src\types\spotifyplus\chapter-simplified.ts" />
206206
<TypeScriptCompile Include="src\types\spotifyplus\chapter.ts" />
@@ -219,12 +219,11 @@
219219
<TypeScriptCompile Include="src\types\spotifyplus\narrator.ts" />
220220
<TypeScriptCompile Include="src\types\spotifyplus\play-history.ts" />
221221
<TypeScriptCompile Include="src\types\spotifyplus\play-history-page.ts" />
222-
<TypeScriptCompile Include="src\types\spotifyplus\player-queue-info.ts">
223-
<SubType>Code</SubType>
224-
</TypeScriptCompile>
222+
<TypeScriptCompile Include="src\types\spotifyplus\player-queue-info.ts" />
225223
<TypeScriptCompile Include="src\types\spotifyplus\playlist-page.ts" />
226224
<TypeScriptCompile Include="src\types\spotifyplus\playlist-track.ts" />
227225
<TypeScriptCompile Include="src\types\spotifyplus\playlist.ts" />
226+
<TypeScriptCompile Include="src\types\spotifyplus\recommendation-seed.ts" />
228227
<TypeScriptCompile Include="src\types\spotifyplus\restrictions.ts" />
229228
<TypeScriptCompile Include="src\types\spotifyplus\resume-point.ts" />
230229
<TypeScriptCompile Include="src\types\spotifyplus\show.ts" />
@@ -235,6 +234,8 @@
235234
<TypeScriptCompile Include="src\types\spotifyplus\spotify-basic-object.ts" />
236235
<TypeScriptCompile Include="src\types\spotifyplus\spotify-connect-device.ts" />
237236
<TypeScriptCompile Include="src\types\spotifyplus\spotify-connect-devices.ts" />
237+
<TypeScriptCompile Include="src\types\spotifyplus\track-recommendations.ts" />
238+
<TypeScriptCompile Include="src\types\spotifyplus\track-recommendations-properties.ts" />
238239
<TypeScriptCompile Include="src\types\spotifyplus\track.ts" />
239240
<TypeScriptCompile Include="src\types\spotifyplus\track-page.ts" />
240241
<TypeScriptCompile Include="src\types\spotifyplus\track-page-saved.ts" />
@@ -256,6 +257,7 @@
256257
<TypeScriptCompile Include="src\types\spotifyplus\zeroconf-property.ts" />
257258
<TypeScriptCompile Include="src\types\spotifyplus\zeroconf-response.ts" />
258259
<TypeScriptCompile Include="src\types\spotifyplus\user-preset.ts" />
260+
<TypeScriptCompile Include="src\utils\config-util.ts" />
259261
<TypeScriptCompile Include="src\utils\media-browser-utils.ts" />
260262
</ItemGroup>
261263
<Import Project="$(MSBuildToolsPath)\Microsoft.Common.targets" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />

src/card.ts

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { when } from 'lit/directives/when.js';
1010
import './sections/album-fav-browser'; // SECTION.ALBUM_FAVORITES
1111
import './sections/artist-fav-browser'; // SECTION.ARTIST_FAVORITES
1212
import './sections/audiobook-fav-browser'; // SECTION.AUDIOBOOK_FAVORITES
13+
import './sections/category-browser'; // SECTION.CATEGORYS
1314
import './sections/device-browser'; // SECTION.DEVICES
1415
import './sections/episode-fav-browser'; // SECTION.EPISODE_FAVORITES
1516
import './sections/player'; // SECTION.PLAYER
@@ -168,6 +169,7 @@ export class Card extends LitElement {
168169
[Section.ALBUM_FAVORITES, () => html`<spc-album-fav-browser .store=${this.store} @item-selected=${this.onMediaListItemSelected}></spc-album-fav-browser>`],
169170
[Section.ARTIST_FAVORITES, () => html`<spc-artist-fav-browser .store=${this.store} @item-selected=${this.onMediaListItemSelected}></spc-artist-fav-browser>`],
170171
[Section.AUDIOBOOK_FAVORITES, () => html`<spc-audiobook-fav-browser .store=${this.store} @item-selected=${this.onMediaListItemSelected}></spc-audiobook-fav-browser>`],
172+
[Section.CATEGORYS, () => html`<spc-category-browser .store=${this.store} @item-selected=${this.onMediaListItemSelected}></spc-category-browser>`],
171173
[Section.DEVICES, () => html`<spc-device-browser .store=${this.store} @item-selected=${this.onMediaListItemSelected}></spc-device-browser>`],
172174
[Section.EPISODE_FAVORITES, () => html`<spc-episode-fav-browser .store=${this.store} @item-selected=${this.onMediaListItemSelected}></spc-episode-fav-browser>`],
173175
[Section.PLAYER, () => html`<spc-player id="spcPlayer" .store=${this.store}></spc-player>`],
@@ -484,6 +486,8 @@ export class Card extends LitElement {
484486
sectionNew = Section.USERPRESETS;
485487
} else if (sectionsConfigured.includes(Section.RECENTS)) {
486488
sectionNew = Section.RECENTS;
489+
} else if (sectionsConfigured.includes(Section.CATEGORYS)) {
490+
sectionNew = Section.CATEGORYS;
487491
} else if (sectionsConfigured.includes(Section.PLAYLIST_FAVORITES)) {
488492
sectionNew = Section.PLAYLIST_FAVORITES;
489493
} else if (sectionsConfigured.includes(Section.ALBUM_FAVORITES)) {
@@ -664,7 +668,6 @@ export class Card extends LitElement {
664668
// show the search section.
665669
this.section = Section.SEARCH_MEDIA;
666670
this.store.section = this.section;
667-
//this.dispatchEvent(customEvent(SHOW_SECTION, Section.SEARCH_MEDIA));
668671

669672
// wait just a bit before executing the search.
670673
setTimeout(() => {
@@ -747,6 +750,10 @@ export class Card extends LitElement {
747750
newConfig.audiobookFavBrowserItemsHideTitle = newConfig.audiobookFavBrowserItemsHideTitle || false;
748751
newConfig.audiobookFavBrowserItemsSortTitle = newConfig.audiobookFavBrowserItemsSortTitle || false;
749752

753+
newConfig.categoryBrowserItemsPerRow = newConfig.categoryBrowserItemsPerRow || 4;
754+
newConfig.categoryBrowserItemsHideTitle = newConfig.categoryBrowserItemsHideTitle || false;
755+
newConfig.categoryBrowserItemsSortTitle = newConfig.categoryBrowserItemsSortTitle || false;
756+
750757
newConfig.deviceBrowserItemsPerRow = newConfig.deviceBrowserItemsPerRow || 1;
751758
newConfig.deviceBrowserItemsHideSubTitle = newConfig.deviceBrowserItemsHideSubTitle || false;
752759
newConfig.deviceBrowserItemsHideTitle = newConfig.deviceBrowserItemsHideTitle || false;
@@ -854,9 +861,9 @@ export class Card extends LitElement {
854861
public static getStubConfig(): Record<string, unknown> {
855862

856863
return {
857-
sections: [Section.PLAYER, Section.ALBUM_FAVORITES, Section.ARTIST_FAVORITES, Section.PLAYLIST_FAVORITES, Section.RECENTS,
858-
Section.DEVICES, Section.TRACK_FAVORITES, Section.USERPRESETS, Section.AUDIOBOOK_FAVORITES, Section.SHOW_FAVORITES,
859-
Section.EPISODE_FAVORITES, Section.SEARCH_MEDIA],
864+
sections: [Section.PLAYER, Section.ALBUM_FAVORITES, Section.ARTIST_FAVORITES, Section.CATEGORYS, Section.PLAYLIST_FAVORITES,
865+
Section.RECENTS, Section.DEVICES, Section.TRACK_FAVORITES, Section.USERPRESETS, Section.AUDIOBOOK_FAVORITES,
866+
Section.SHOW_FAVORITES, Section.EPISODE_FAVORITES, Section.SEARCH_MEDIA],
860867
entity: "",
861868

862869
playerHeaderTitle: "{player.source}",
@@ -885,6 +892,13 @@ export class Card extends LitElement {
885892
audiobookFavBrowserItemsHideSubTitle: false,
886893
audiobookFavBrowserItemsSortTitle: true,
887894

895+
categoryBrowserTitle: "Categorys for {player.sp_user_display_name} ({medialist.itemcount} items)",
896+
categoryBrowserSubTitle: "click a tile item to view the content; click-hold for actions",
897+
categoryBrowserItemsPerRow: 4,
898+
categoryBrowserItemsHideTitle: false,
899+
categoryBrowserItemsHideSubTitle: true,
900+
categoryBrowserItemsSortTitle: true,
901+
888902
deviceBrowserTitle: "Spotify Connect Devices ({medialist.itemcount} items)",
889903
deviceBrowserSubTitle: "click an item to select the device; click-hold for device info",
890904
deviceBrowserItemsPerRow: 1,

src/components/album-actions.ts

Lines changed: 77 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import copyTextToClipboard from 'copy-text-to-clipboard';
55
import {
66
mdiAccountMusic,
77
mdiAlbum,
8+
mdiBookmarkMusicOutline,
89
mdiClipboardPlusOutline,
910
mdiDotsHorizontal,
1011
mdiHeart,
@@ -26,15 +27,17 @@ import { SearchMediaEvent } from '../events/search-media';
2627
import { getIdFromSpotifyUri } from '../services/spotifyplus-service';
2728
import { formatDateHHMMSSFromMilliseconds } from '../utils/utils';
2829
import { openWindowNewTab } from '../utils/media-browser-utils';
29-
import { RADIO_SEARCH_KEY } from '../constants';
30+
import { ALERT_INFO_PRESET_COPIED_TO_CLIPBOARD, RADIO_SEARCH_KEY } from '../constants';
3031
import { GetCopyrights } from '../types/spotifyplus/copyright';
32+
import { GetUserPresetConfigEntry } from '../types/spotifyplus/user-preset';
3133
import { IAlbum } from '../types/spotifyplus/album';
3234
import { ITrackPageSimplified } from '../types/spotifyplus/track-page-simplified';
3335

3436
/**
3537
* Album actions.
3638
*/
3739
enum Actions {
40+
AlbumCopyPresetToClipboard = "AlbumCopyPresetToClipboard",
3841
AlbumCopyUriToClipboard = "AlbumCopyUriToClipboard",
3942
AlbumFavoriteAdd = "AlbumFavoriteAdd",
4043
AlbumFavoriteRemove = "AlbumFavoriteRemove",
@@ -49,6 +52,12 @@ enum Actions {
4952
ArtistSearchPlaylists = "ArtistSearchPlaylists",
5053
ArtistSearchRadio = "ArtistSearchRadio",
5154
ArtistSearchTracks = "ArtistSearchTracks",
55+
ArtistShowAlbums = "ArtistShowAlbums",
56+
ArtistShowAlbumsAppearsOn = "ArtistShowAlbumsAppearsOn",
57+
ArtistShowAlbumsCompilation = "ArtistShowAlbumsCompilation",
58+
ArtistShowAlbumsSingle = "ArtistShowAlbumsSingle",
59+
ArtistShowRelatedArtists = "ArtistShowRelatedArtists",
60+
ArtistShowTopTracks = "ArtistShowTopTracks",
5261
}
5362

5463

@@ -167,6 +176,10 @@ class AlbumActions extends FavActionsBase {
167176
<ha-svg-icon slot="start" .path=${mdiClipboardPlusOutline}></ha-svg-icon>
168177
<div slot="headline">Copy Album URI to Clipboard</div>
169178
</ha-md-menu-item>
179+
<ha-md-menu-item @click=${() => this.onClickAction(Actions.AlbumCopyPresetToClipboard)}>
180+
<ha-svg-icon slot="start" .path=${mdiBookmarkMusicOutline}></ha-svg-icon>
181+
<div slot="headline">Copy Album Preset Info to Clipboard</div>
182+
</ha-md-menu-item>
170183
</ha-md-button-menu>
171184
`;
172185

@@ -189,6 +202,31 @@ class AlbumActions extends FavActionsBase {
189202
<div slot="headline">Search for Artist Radio</div>
190203
</ha-md-menu-item>
191204
<ha-md-divider role="separator" tabindex="-1"></ha-md-divider>
205+
<ha-md-menu-item @click=${() => this.onClickAction(Actions.ArtistShowTopTracks)} hide=${this.hideSearchType(SearchMediaTypes.TRACKS)}>
206+
<ha-svg-icon slot="start" .path=${mdiMusic}></ha-svg-icon>
207+
<div slot="headline">Show Artist Top Tracks</div>
208+
</ha-md-menu-item>
209+
<ha-md-menu-item @click=${() => this.onClickAction(Actions.ArtistShowAlbums)} hide=${this.hideSearchType(SearchMediaTypes.ALBUMS)}>
210+
<ha-svg-icon slot="start" .path=${mdiAlbum}></ha-svg-icon>
211+
<div slot="headline">Show Artist Albums</div>
212+
</ha-md-menu-item>
213+
<ha-md-menu-item @click=${() => this.onClickAction(Actions.ArtistShowAlbumsCompilation)} hide=${this.hideSearchType(SearchMediaTypes.ALBUMS)}>
214+
<ha-svg-icon slot="start" .path=${mdiAlbum}></ha-svg-icon>
215+
<div slot="headline">Show Artist Albums Compilations</div>
216+
</ha-md-menu-item>
217+
<ha-md-menu-item @click=${() => this.onClickAction(Actions.ArtistShowAlbumsSingle)} hide=${this.hideSearchType(SearchMediaTypes.ALBUMS)}>
218+
<ha-svg-icon slot="start" .path=${mdiAlbum}></ha-svg-icon>
219+
<div slot="headline">Show Artist Albums Singles</div>
220+
</ha-md-menu-item>
221+
<ha-md-menu-item @click=${() => this.onClickAction(Actions.ArtistShowAlbumsAppearsOn)} hide=${this.hideSearchType(SearchMediaTypes.ALBUMS)}>
222+
<ha-svg-icon slot="start" .path=${mdiAlbum}></ha-svg-icon>
223+
<div slot="headline">Show Artist Albums AppearsOn</div>
224+
</ha-md-menu-item>
225+
<ha-md-menu-item @click=${() => this.onClickAction(Actions.ArtistShowRelatedArtists)} hide=${this.hideSearchType(SearchMediaTypes.ARTISTS)}>
226+
<ha-svg-icon slot="start" .path=${mdiAccountMusic}></ha-svg-icon>
227+
<div slot="headline">Show Related Artists</div>
228+
</ha-md-menu-item>
229+
<ha-md-divider role="separator" tabindex="-1"></ha-md-divider>
192230
<ha-md-menu-item @click=${() => this.onClickAction(Actions.ArtistCopyUriToClipboard)}>
193231
<ha-svg-icon slot="start" .path=${mdiClipboardPlusOutline}></ha-svg-icon>
194232
<div slot="headline">Copy Artist URI to Clipboard</div>
@@ -203,6 +241,7 @@ class AlbumActions extends FavActionsBase {
203241
return html`
204242
<div class="album-actions-container">
205243
${this.alertError ? html`<ha-alert alert-type="error" dismissable @alert-dismissed-clicked=${this.alertErrorClear}>${this.alertError}</ha-alert>` : ""}
244+
${this.alertInfo ? html`<ha-alert alert-type="info" dismissable @alert-dismissed-clicked=${this.alertInfoClear}>${this.alertInfo}</ha-alert>` : ""}
206245
<div class="media-info-content">
207246
<div class="img" style="background:url(${this.mediaItem.image_url});"></div>
208247
<div class="media-info-details">
@@ -322,7 +361,13 @@ class AlbumActions extends FavActionsBase {
322361
try {
323362

324363
// process actions that don't require a progress indicator.
325-
if (action == Actions.AlbumCopyUriToClipboard) {
364+
if (action == Actions.AlbumCopyPresetToClipboard) {
365+
366+
copyTextToClipboard(GetUserPresetConfigEntry(this.mediaItem, this.mediaItem.artists[0].name));
367+
this.alertInfoSet(ALERT_INFO_PRESET_COPIED_TO_CLIPBOARD);
368+
return true;
369+
370+
} else if (action == Actions.AlbumCopyUriToClipboard) {
326371

327372
copyTextToClipboard(this.mediaItem.uri);
328373
return true;
@@ -347,6 +392,36 @@ class AlbumActions extends FavActionsBase {
347392
this.dispatchEvent(SearchMediaEvent(SearchMediaTypes.PLAYLISTS, this.mediaItem.artists[0].name + RADIO_SEARCH_KEY));
348393
return true;
349394

395+
} else if (action == Actions.ArtistShowAlbums) {
396+
397+
this.dispatchEvent(SearchMediaEvent(SearchMediaTypes.ARTIST_ALBUMS, this.mediaItem.artists[0].name, this.mediaItem.artists[0].name, this.mediaItem.artists[0].uri));
398+
return true;
399+
400+
} else if (action == Actions.ArtistShowAlbumsAppearsOn) {
401+
402+
this.dispatchEvent(SearchMediaEvent(SearchMediaTypes.ARTIST_ALBUMS_APPEARSON, this.mediaItem.artists[0].name, this.mediaItem.artists[0].name, this.mediaItem.artists[0].uri));
403+
return true;
404+
405+
} else if (action == Actions.ArtistShowAlbumsCompilation) {
406+
407+
this.dispatchEvent(SearchMediaEvent(SearchMediaTypes.ARTIST_ALBUMS_COMPILATION, this.mediaItem.artists[0].name, this.mediaItem.artists[0].name, this.mediaItem.artists[0].uri));
408+
return true;
409+
410+
} else if (action == Actions.ArtistShowAlbumsSingle) {
411+
412+
this.dispatchEvent(SearchMediaEvent(SearchMediaTypes.ARTIST_ALBUMS_SINGLE, this.mediaItem.artists[0].name, this.mediaItem.artists[0].name, this.mediaItem.artists[0].uri));
413+
return true;
414+
415+
} else if (action == Actions.ArtistShowRelatedArtists) {
416+
417+
this.dispatchEvent(SearchMediaEvent(SearchMediaTypes.ARTIST_RELATED_ARTISTS, this.mediaItem.artists[0].name, this.mediaItem.artists[0].name, this.mediaItem.artists[0].uri));
418+
return true;
419+
420+
} else if (action == Actions.ArtistShowTopTracks) {
421+
422+
this.dispatchEvent(SearchMediaEvent(SearchMediaTypes.ARTIST_TOP_TRACKS, this.mediaItem.artists[0].name, this.mediaItem.artists[0].name, this.mediaItem.artists[0].uri));
423+
return true;
424+
350425
} else if (action == Actions.ArtistSearchTracks) {
351426

352427
this.dispatchEvent(SearchMediaEvent(SearchMediaTypes.TRACKS, this.mediaItem.artists[0].name));

0 commit comments

Comments
 (0)