show starred artists and albums
This commit is contained in:
		
							parent
							
								
									e12c1f8d33
								
							
						
					
					
						commit
						b8db546f64
					
				| @ -1,22 +1,39 @@ | |||||||
| <template> | <template> | ||||||
|   <TrackList v-if="items" :tracks="items" /> |   <div v-if="result"> | ||||||
|  |     <div v-if="result.albums.length > 0" class="mb-4"> | ||||||
|  |       <h1>Albums</h1> | ||||||
|  |       <AlbumList :items="result.albums" /> | ||||||
|  |     </div> | ||||||
|  |     <div v-if="result.artists.length > 0" class="mb-4"> | ||||||
|  |       <h1>Artists</h1> | ||||||
|  |       <ArtistList :items="result.artists" /> | ||||||
|  |     </div> | ||||||
|  |     <div v-if="result.tracks.length > 0" class="mb-4"> | ||||||
|  |       <h1>Tracks</h1> | ||||||
|  |       <TrackList :tracks="result.tracks" /> | ||||||
|  |     </div> | ||||||
|  |   </div> | ||||||
| </template> | </template> | ||||||
| <script lang="ts"> | <script lang="ts"> | ||||||
|   import Vue from 'vue' |   import Vue from 'vue' | ||||||
|  |   import AlbumList from '@/library/album/AlbumList.vue' | ||||||
|  |   import ArtistList from '@/library/artist/ArtistList.vue' | ||||||
|   import TrackList from '@/library/TrackList.vue' |   import TrackList from '@/library/TrackList.vue' | ||||||
| 
 | 
 | ||||||
|   export default Vue.extend({ |   export default Vue.extend({ | ||||||
|     components: { |     components: { | ||||||
|  |       AlbumList, | ||||||
|  |       ArtistList, | ||||||
|       TrackList, |       TrackList, | ||||||
|     }, |     }, | ||||||
|     data() { |     data() { | ||||||
|       return { |       return { | ||||||
|         items: null as any, |         result: null as any, | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     created() { |     created() { | ||||||
|       this.$api.getStarred().then(result => { |       this.$api.getStarred().then(result => { | ||||||
|         this.items = result |         this.result = result | ||||||
|       }) |       }) | ||||||
|     } |     } | ||||||
|   }) |   }) | ||||||
|  | |||||||
| @ -107,7 +107,7 @@ export class API { | |||||||
|       lastFmUrl: info2.lastFmUrl, |       lastFmUrl: info2.lastFmUrl, | ||||||
|       musicBrainzUrl: info2.musicBrainzId |       musicBrainzUrl: info2.musicBrainzId | ||||||
|         ? `https://musicbrainz.org/artist/${info2.musicBrainzId}` : null, |         ? `https://musicbrainz.org/artist/${info2.musicBrainzId}` : null, | ||||||
|       albums: info1.album.map((album: any) => this.normalizeAlbumResponse(album)), |       albums: info1.album.map((album: any) => this.normalizeAlbum(album)), | ||||||
|       similarArtist: (info2.similarArtist || []).map((artist: any) => ({ |       similarArtist: (info2.similarArtist || []).map((artist: any) => ({ | ||||||
|         id: artist.id, |         id: artist.id, | ||||||
|         name: artist.name, |         name: artist.name, | ||||||
| @ -193,7 +193,11 @@ export class API { | |||||||
| 
 | 
 | ||||||
|   async getStarred() { |   async getStarred() { | ||||||
|     const response = await this.get('rest/getStarred2') |     const response = await this.get('rest/getStarred2') | ||||||
|     return this.normalizeTrackList(response.starred2?.song || []) |     return { | ||||||
|  |       albums: (response.starred2?.album || []).map(this.normalizeAlbum, this), | ||||||
|  |       artists: (response.starred2?.artist || []).map(this.normalizeArtist, this), | ||||||
|  |       tracks: this.normalizeTrackList(response.starred2?.song || []) | ||||||
|  |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   async star(type: 'track' | 'album' | 'artist', id: string) { |   async star(type: 'track' | 'album' | 'artist', id: string) { | ||||||
| @ -221,8 +225,8 @@ export class API { | |||||||
|     const data = await this.get('rest/search3', params) |     const data = await this.get('rest/search3', params) | ||||||
|     return { |     return { | ||||||
|       tracks: this.normalizeTrackList(data.searchResult3.song || []), |       tracks: this.normalizeTrackList(data.searchResult3.song || []), | ||||||
|       albums: (data.searchResult3.album || []).map((x: any) => this.normalizeAlbumResponse(x)), |       albums: (data.searchResult3.album || []).map((x: any) => this.normalizeAlbum(x)), | ||||||
|       artists: (data.searchResult3.artist || []).map((x: any) => this.normalizeArtistResponse(x)), |       artists: (data.searchResult3.artist || []).map((x: any) => this.normalizeArtist(x)), | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| @ -234,14 +238,14 @@ export class API { | |||||||
|     })) |     })) | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   private normalizeAlbumResponse(item: any) { |   private normalizeAlbum(item: any) { | ||||||
|     return { |     return { | ||||||
|       ...item, |       ...item, | ||||||
|       image: this.getCoverArtUrl(item) |       image: this.getCoverArtUrl(item) | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   private normalizeArtistResponse(item: any) { |   private normalizeArtist(item: any) { | ||||||
|     return { |     return { | ||||||
|       ...item, |       ...item, | ||||||
|       image: this.getCoverArtUrl(item) |       image: this.getCoverArtUrl(item) | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user