From 5d9906b8f2281a36662c02f2936fa39af715951d Mon Sep 17 00:00:00 2001 From: Kendall Garner <17521368+kgarner7@users.noreply.github.com> Date: Wed, 7 May 2025 21:16:47 -0700 Subject: [PATCH] include album artist song/album count for jellyfin, and disable playing/adding playinsts for artists with no albums --- src/renderer/api/jellyfin/jellyfin-normalize.ts | 4 ++-- src/renderer/api/jellyfin/jellyfin-types.ts | 2 ++ .../components/album-artist-detail-content.tsx | 13 +++++++++++-- .../features/shared/components/play-button.tsx | 6 +++++- 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/renderer/api/jellyfin/jellyfin-normalize.ts b/src/renderer/api/jellyfin/jellyfin-normalize.ts index f6bd0c1b..7e64fb9f 100644 --- a/src/renderer/api/jellyfin/jellyfin-normalize.ts +++ b/src/renderer/api/jellyfin/jellyfin-normalize.ts @@ -284,7 +284,7 @@ const normalizeAlbumArtist = ( ) || []; return { - albumCount: null, + albumCount: item.AlbumCount ?? null, backgroundImageUrl: null, biography: item.Overview || null, duration: item.RunTimeTicks / 10000, @@ -308,7 +308,7 @@ const normalizeAlbumArtist = ( serverId: server?.id || '', serverType: ServerType.JELLYFIN, similarArtists, - songCount: null, + songCount: item.SongCount ?? null, userFavorite: item.UserData?.IsFavorite || false, userRating: null, }; diff --git a/src/renderer/api/jellyfin/jellyfin-types.ts b/src/renderer/api/jellyfin/jellyfin-types.ts index 70b402a5..2a2a37b4 100644 --- a/src/renderer/api/jellyfin/jellyfin-types.ts +++ b/src/renderer/api/jellyfin/jellyfin-types.ts @@ -431,6 +431,7 @@ const providerIds = z.object({ }); const albumArtist = z.object({ + AlbumCount: z.number().optional(), BackdropImageTags: z.array(z.string()), ChannelId: z.null(), DateCreated: z.string(), @@ -446,6 +447,7 @@ const albumArtist = z.object({ ProviderIds: providerIds.optional(), RunTimeTicks: z.number(), ServerId: z.string(), + SongCount: z.number().optional(), Type: z.string(), UserData: userData.optional(), }); diff --git a/src/renderer/features/artists/components/album-artist-detail-content.tsx b/src/renderer/features/artists/components/album-artist-detail-content.tsx index a8a8499f..e1de5674 100644 --- a/src/renderer/features/artists/components/album-artist-detail-content.tsx +++ b/src/renderer/features/artists/components/album-artist-detail-content.tsx @@ -340,9 +340,15 @@ export const AlbumArtistDetailContent = ({ background }: AlbumArtistDetailConten } }; + const albumCount = detailQuery?.data?.albumCount; + const artistContextItems = + (albumCount ?? 1) > 0 + ? ARTIST_CONTEXT_MENU_ITEMS + : ARTIST_CONTEXT_MENU_ITEMS.filter((item) => !item.id.toLowerCase().includes('play')); + const handleGeneralContextMenu = useHandleGeneralContextMenu( LibraryItem.ALBUM_ARTIST, - ARTIST_CONTEXT_MENU_ITEMS, + artistContextItems, ); const topSongs = topSongsQuery?.data?.items?.slice(0, 10); @@ -369,7 +375,10 @@ export const AlbumArtistDetailContent = ({ background }: AlbumArtistDetailConten - handlePlay(playButtonBehavior)} /> + handlePlay(playButtonBehavior)} + />