diff --git a/src/renderer/api/jellyfin/jellyfin-normalize.ts b/src/renderer/api/jellyfin/jellyfin-normalize.ts index bb6642a1..f6bd0c1b 100644 --- a/src/renderer/api/jellyfin/jellyfin-normalize.ts +++ b/src/renderer/api/jellyfin/jellyfin-normalize.ts @@ -236,7 +236,6 @@ const normalizeAlbum = ( })), id: item.Id, imagePlaceholderUrl: null, - participants: null, imageUrl: getAlbumCoverArtUrl({ baseUrl: server?.url || '', item, @@ -248,6 +247,7 @@ const normalizeAlbum = ( mbzId: item.ProviderIds?.MusicBrainzAlbum || null, name: item.Name, originalDate: null, + participants: null, playCount: item.UserData?.PlayCount || 0, releaseDate: item.PremiereDate?.split('T')[0] || null, releaseYear: item.ProductionYear || null, diff --git a/src/renderer/api/navidrome/navidrome-controller.ts b/src/renderer/api/navidrome/navidrome-controller.ts index 2e3389f6..59f869d3 100644 --- a/src/renderer/api/navidrome/navidrome-controller.ts +++ b/src/renderer/api/navidrome/navidrome-controller.ts @@ -287,7 +287,7 @@ export const NavidromeController: ControllerEndpoint = { _start: query.startIndex, name: query.searchTerm, ...query._custom?.navidrome, - role: query.role, + role: query.role || undefined, }, }); @@ -425,7 +425,8 @@ export const NavidromeController: ControllerEndpoint = { }; }, getRandomSongList: SubsonicController.getRandomSongList, - getRoles: async () => NAVIDROME_ROLES, + getRoles: async ({ apiClientProps }) => + hasFeature(apiClientProps.server, ServerFeature.BFR) ? NAVIDROME_ROLES : [], getServerInfo: async (args) => { const { apiClientProps } = args; diff --git a/src/renderer/api/navidrome/navidrome-normalize.ts b/src/renderer/api/navidrome/navidrome-normalize.ts index 36cd1495..c60f1a7f 100644 --- a/src/renderer/api/navidrome/navidrome-normalize.ts +++ b/src/renderer/api/navidrome/navidrome-normalize.ts @@ -279,7 +279,10 @@ const normalizeAlbumArtist = ( } return { - albumCount: item.stats?.albumartist?.albumCount || item.albumCount, + albumCount: Math.max( + item.stats?.albumartist?.albumCount || item.albumCount, + item.stats?.artist?.albumCount || 0, + ), backgroundImageUrl: null, biography: item.biography || null, duration: null, diff --git a/src/renderer/api/types.ts b/src/renderer/api/types.ts index f30cfaa9..a1a9c432 100644 --- a/src/renderer/api/types.ts +++ b/src/renderer/api/types.ts @@ -503,6 +503,7 @@ export interface SongListQuery extends BaseQuery { maxYear?: number; minYear?: number; musicFolderId?: string; + role?: string; searchTerm?: string; startIndex: number; } diff --git a/src/renderer/features/sidebar/components/collapsed-sidebar-item.tsx b/src/renderer/features/sidebar/components/collapsed-sidebar-item.tsx index c1fc6e56..e30122d3 100644 --- a/src/renderer/features/sidebar/components/collapsed-sidebar-item.tsx +++ b/src/renderer/features/sidebar/components/collapsed-sidebar-item.tsx @@ -46,7 +46,7 @@ const TextWrapper = styled.div` overflow: hidden; text-align: center; text-overflow: ellipsis; - white-space: nowrap; + white-space: pre-line; `; const ActiveTabIndicator = styled(motion.div)` @@ -90,7 +90,6 @@ const _CollapsedSidebarItem = forwardRef {label} diff --git a/src/renderer/features/sidebar/components/collapsed-sidebar.tsx b/src/renderer/features/sidebar/components/collapsed-sidebar.tsx index c170e928..4abadf10 100644 --- a/src/renderer/features/sidebar/components/collapsed-sidebar.tsx +++ b/src/renderer/features/sidebar/components/collapsed-sidebar.tsx @@ -33,7 +33,11 @@ export const CollapsedSidebar = () => { const translatedSidebarItemMap = useMemo( () => ({ Albums: t('page.sidebar.albums', { postProcess: 'titleCase' }), - Artists: t('page.sidebar.artists', { postProcess: 'titleCase' }), + Artists: t('page.sidebar.albumArtists', { postProcess: 'titleCase' }).replace( + ' ', + '\n', + ), + 'Artists-all': t('page.sidebar.artists', { postProcess: 'titleCase' }), Folders: t('page.sidebar.folders', { postProcess: 'titleCase' }), Genres: t('page.sidebar.genres', { postProcess: 'titleCase' }), Home: t('page.sidebar.home', { postProcess: 'titleCase' }),