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)}
+ />