diff --git a/src/store/music/actions.ts b/src/store/music/actions.ts index 8772827..8fb23d0 100644 --- a/src/store/music/actions.ts +++ b/src/store/music/actions.ts @@ -71,6 +71,7 @@ AsyncThunkAPI const albums = await Promise.all(results.filter((item) => ( !state.music.albums.ids.includes(item.Type === 'MusicAlbum' ? item.Id : item.AlbumId) + && (item.Type === 'Audio' ? item.AlbumId : true) )).map(async (item) => { if (item.Type === 'MusicAlbum') { return item; diff --git a/src/utility/JellyfinApi.ts b/src/utility/JellyfinApi.ts index ad0752b..ccd9504 100644 --- a/src/utility/JellyfinApi.ts +++ b/src/utility/JellyfinApi.ts @@ -214,9 +214,13 @@ export async function searchItem( }).toString(); const results = await fetch(`${credentials?.uri}/Users/${credentials?.user_id}/Items?${params}`, config) - .then(response => response.json()); + .then(response => response.json() as Promise<{ Items: (Album | AlbumTrack)[] }>); - return results.Items; + return results.Items + .filter((item) => ( + // GUARD: Ensure that we're either dealing with an album or a track from an album. + item.Type === 'MusicAlbum' || (item.Type === 'Audio' && item.AlbumId) + )); } const playlistOptions = {