From c51194cd034f29d9f09008563a3499612b8a6ef6 Mon Sep 17 00:00:00 2001 From: jeffvli Date: Sun, 8 Jan 2023 20:45:38 -0800 Subject: [PATCH] Update album artist detail endpoints --- src/renderer/api/controller.ts | 7 +++++++ src/renderer/api/jellyfin.api.ts | 2 +- src/renderer/api/normalize.ts | 22 ++++++++++++++++++++++ src/renderer/api/query-keys.ts | 3 ++- 4 files changed, 32 insertions(+), 2 deletions(-) diff --git a/src/renderer/api/controller.ts b/src/renderer/api/controller.ts index dcfb58b8..1c0ebfca 100644 --- a/src/renderer/api/controller.ts +++ b/src/renderer/api/controller.ts @@ -199,6 +199,12 @@ const getGenreList = async (args: GenreListArgs) => { return (apiController('getGenreList') as ControllerEndpoint['getGenreList'])?.(args); }; +const getAlbumArtistDetail = async (args: AlbumArtistDetailArgs) => { + return (apiController('getAlbumArtistDetail') as ControllerEndpoint['getAlbumArtistDetail'])?.( + args, + ); +}; + const getAlbumArtistList = async (args: AlbumArtistListArgs) => { return (apiController('getAlbumArtistList') as ControllerEndpoint['getAlbumArtistList'])?.(args); }; @@ -254,6 +260,7 @@ export const controller = { createPlaylist, deleteFavorite, deletePlaylist, + getAlbumArtistDetail, getAlbumArtistList, getAlbumDetail, getAlbumList, diff --git a/src/renderer/api/jellyfin.api.ts b/src/renderer/api/jellyfin.api.ts index 242d3da6..efc01f34 100644 --- a/src/renderer/api/jellyfin.api.ts +++ b/src/renderer/api/jellyfin.api.ts @@ -666,7 +666,7 @@ const normalizeSong = ( playCount: (item.UserData && item.UserData.PlayCount) || 0, // releaseDate: (item.ProductionYear && new Date(item.ProductionYear, 0, 1).toISOString()) || null, releaseDate: null, - releaseYear: (item.ProductionYear && String(item.ProductionYear)) || null, + releaseYear: item.ProductionYear ? String(item.ProductionYear) : null, serverId: server.id, serverType: ServerType.JELLYFIN, size: item.MediaSources && item.MediaSources[0]?.Size, diff --git a/src/renderer/api/normalize.ts b/src/renderer/api/normalize.ts index c89adeb1..bdee695d 100644 --- a/src/renderer/api/normalize.ts +++ b/src/renderer/api/normalize.ts @@ -19,6 +19,8 @@ import type { import { SSGenreList, SSMusicFolderList } from '/@/renderer/api/subsonic.types'; import type { Album, + AlbumArtist, + RawAlbumArtistDetailResponse, RawAlbumArtistListResponse, RawAlbumDetailResponse, RawAlbumListResponse, @@ -149,6 +151,25 @@ const genreList = (data: RawGenreListResponse | undefined, server: ServerListIte return genres; }; +const albumArtistDetail = ( + data: RawAlbumArtistDetailResponse | undefined, + server: ServerListItem | null, +): AlbumArtist | undefined => { + let albumArtist: AlbumArtist | undefined; + switch (server?.type) { + case 'jellyfin': + albumArtist = jfNormalize.albumArtist(data as JFAlbumArtist, server); + break; + case 'navidrome': + albumArtist = ndNormalize.albumArtist(data as NDAlbumArtist, server); + break; + case 'subsonic': + break; + } + + return albumArtist; +}; + const albumArtistList = ( data: RawAlbumArtistListResponse | undefined, server: ServerListItem | null, @@ -235,6 +256,7 @@ const userList = (data: RawUserListResponse | undefined, server: ServerListItem }; export const normalize = { + albumArtistDetail, albumArtistList, albumDetail, albumList, diff --git a/src/renderer/api/query-keys.ts b/src/renderer/api/query-keys.ts index 2aaed496..c79920bc 100644 --- a/src/renderer/api/query-keys.ts +++ b/src/renderer/api/query-keys.ts @@ -8,11 +8,12 @@ import type { PlaylistDetailQuery, PlaylistSongListQuery, UserListQuery, + AlbumArtistDetailQuery, } from './types'; export const queryKeys = { albumArtists: { - detail: (serverId: string, query?: AlbumArtistListQuery) => { + detail: (serverId: string, query?: AlbumArtistDetailQuery) => { if (query) return [serverId, 'albumArtists', 'detail', query] as const; return [serverId, 'albumArtists', 'detail'] as const; },