omit song from similar list, handle subsonic error

This commit is contained in:
Kendall Garner 2024-02-19 10:09:05 -08:00
parent f81bea339b
commit 3a116e938e
No known key found for this signature in database
GPG Key ID: 18D2767419676C87
4 changed files with 24 additions and 8 deletions

View File

@ -980,7 +980,13 @@ const getSimilarSongs = async (args: SimilarSongsArgs): Promise<Song[]> => {
throw new Error('Failed to get similar songs');
}
return res.body.Items.map((song) => jfNormalize.song(song, apiClientProps.server, ''));
return res.body.Items.reduce<Song[]>((acc, song) => {
if (song.Id !== query.songId) {
acc.push(jfNormalize.song(song, apiClientProps.server, ''));
}
return acc;
}, []);
};
export const jfController = {

View File

@ -460,9 +460,17 @@ const getSimilarSongs = async (args: SimilarSongsArgs): Promise<Song[]> => {
throw new Error('Failed to get similar songs');
}
return res.body.similarSongs.song.map((song) =>
ssNormalize.song(song, apiClientProps.server, ''),
);
if (!res.body.similarSongs) {
return [];
}
return res.body.similarSongs.song.reduce<Song[]>((acc, song) => {
if (song.id !== query.songId) {
acc.push(ssNormalize.song(song, apiClientProps.server, ''));
}
return acc;
}, []);
};
export const ssController = {

View File

@ -253,9 +253,11 @@ const similarSongsParameters = z.object({
});
const similarSongs = z.object({
similarSongs: z.object({
similarSongs: z
.object({
song: z.array(song),
}),
})
.optional(),
});
export const ssType = {

View File

@ -71,7 +71,7 @@ export const SimilarSongsList = ({ count, fullScreen, song }: SimilarSongsListPr
deselectOnClickOutside={fullScreen}
getRowId={(data) => data.data.uniqueId}
rowBuffer={50}
rowData={songQuery.data}
rowData={songQuery.data ?? []}
rowHeight={tableConfig.rowHeight || 40}
onCellContextMenu={onCellContextMenu}
onCellDoubleClicked={handleRowDoubleClick}