handle favorite/update in similarArtists

This commit is contained in:
jeffvli
2025-12-28 03:43:59 -08:00
parent 66699b9572
commit 1a930021b6
9 changed files with 124 additions and 15 deletions
@@ -215,13 +215,36 @@ export const applyFavoriteOptimisticUpdates = (
queryClient.setQueryData(
queryKey,
(prev: AlbumArtistDetailResponse | undefined) => {
if (prev && itemIdSet.has(prev.id)) {
if (!prev) {
return prev;
}
// Update the main artist if it matches
if (itemIdSet.has(prev.id)) {
return {
...prev,
userFavorite: isFavorite,
};
}
// Update similar artists if any match
if (prev.similarArtists && prev.similarArtists.length > 0) {
const hasMatchingSimilarArtist = prev.similarArtists.some(
(artist) => itemIdSet.has(artist.id),
);
if (hasMatchingSimilarArtist) {
return {
...prev,
similarArtists: prev.similarArtists.map((artist) =>
itemIdSet.has(artist.id)
? { ...artist, userFavorite: isFavorite }
: artist,
),
};
}
}
return prev;
},
);
@@ -184,9 +184,33 @@ export const applyRatingOptimisticUpdates = (
queryClient.setQueryData(
queryKey,
(prev: AlbumArtistDetailResponse | undefined) => {
if (prev && itemIdSet.has(prev.id)) {
if (!prev) {
return prev;
}
// Update the main artist if it matches
if (itemIdSet.has(prev.id)) {
return { ...prev, userRating: rating };
}
// Update similar artists if any match
if (prev.similarArtists && prev.similarArtists.length > 0) {
const hasMatchingSimilarArtist = prev.similarArtists.some(
(artist) => itemIdSet.has(artist.id),
);
if (hasMatchingSimilarArtist) {
return {
...prev,
similarArtists: prev.similarArtists.map((artist) =>
itemIdSet.has(artist.id)
? { ...artist, userRating: rating }
: artist,
),
};
}
}
return prev;
},
);