From cae4d7c0f4039273466ea16c5dc95966fe16b5e6 Mon Sep 17 00:00:00 2001 From: upsiflu Date: Thu, 6 Feb 2025 17:52:44 +0100 Subject: [PATCH] refactor(utils): add convenience function to get artist's cover url --- front/src/utils/utils.ts | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/front/src/utils/utils.ts b/front/src/utils/utils.ts index d11fbb921..6ad78b41e 100644 --- a/front/src/utils/utils.ts +++ b/front/src/utils/utils.ts @@ -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))