refactor(utils): add convenience function to get artist's cover url

This commit is contained in:
upsiflu 2025-02-06 17:52:44 +01:00
parent 001a264d7e
commit cae4d7c0f4
1 changed files with 16 additions and 3 deletions

View File

@ -1,4 +1,4 @@
import type { Track, Album, ArtistCredit, QueueItemSource } from '~/types'
import type { Track, SimpleArtist, Album, ArtistCredit, QueueItemSource } from '~/types'
import { useStore } from '~/store'
import type { QueueTrack } from '~/composables/audio/queue'
@ -30,8 +30,7 @@ export function generateTrackCreditStringFromQueue (track: QueueTrack | QueueIte
export function getArtistCoverUrl (artistCredits: ArtistCredit[]): string | undefined {
for (const artistCredit of artistCredits) {
const cover = artistCredit.artist.cover
const mediumSquareCrop = cover?.urls?.medium_square_crop
const mediumSquareCrop = getSimpleArtistCoverUrl(artistCredit.artist, 'medium_square_crop')
if (mediumSquareCrop) {
return store.getters['instance/absoluteUrl'](mediumSquareCrop)
@ -39,3 +38,17 @@ export function getArtistCoverUrl (artistCredits: ArtistCredit[]): string | unde
}
return undefined
}
const getSimpleArtistCover = ( artist: SimpleArtist ) =>
( field: 'original' | 'small_square_crop' | 'medium_square_crop' | 'large_square_crop' ) =>
artist.attachment_cover ?
( field in artist.attachment_cover ? artist.attachment_cover.urls[field] : null )
: null
/** Returns the absolute Url of this artist's cover on this instance
*
* @param artist: a simple artist
* @param field: the size you want
*/
export const getSimpleArtistCoverUrl = ( artist: SimpleArtist, field: 'original' | 'small_square_crop' | 'medium_square_crop' | 'large_square_crop' ) =>
store.getters['instance/absoluteUrl'](getSimpleArtistCover(artist)(field))