invalidate the album query on scrobble submission

This commit is contained in:
jeffvli
2026-01-16 04:23:57 -08:00
parent fc5024be90
commit 2827b2ae01
3 changed files with 20 additions and 1 deletions
@@ -121,6 +121,7 @@ export const useScrobble = () => {
{
apiClientProps: { serverId: currentSong._serverId || '' },
query: {
albumId: currentSong.albumId,
event: 'timeupdate',
id: currentSong.id,
position,
@@ -163,6 +164,7 @@ export const useScrobble = () => {
{
apiClientProps: { serverId: currentSong._serverId || '' },
query: {
albumId: currentSong.albumId,
id: currentSong.id,
position,
submission: true,
@@ -245,6 +247,7 @@ export const useScrobble = () => {
{
apiClientProps: { serverId: currentSong._serverId || '' },
query: {
albumId: currentSong.albumId,
event: 'start',
id: currentSong.id,
position: 0,
@@ -306,6 +309,7 @@ export const useScrobble = () => {
{
apiClientProps: { serverId: currentSong._serverId || '' },
query: {
albumId: currentSong.albumId,
event: 'timeupdate',
id: currentSong.id,
position,
@@ -353,6 +357,7 @@ export const useScrobble = () => {
{
apiClientProps: { serverId: currentSong._serverId || '' },
query: {
albumId: currentSong.albumId,
event: 'pause',
id: currentSong.id,
position,
@@ -378,6 +383,7 @@ export const useScrobble = () => {
{
apiClientProps: { serverId: currentSong._serverId || '' },
query: {
albumId: currentSong.albumId,
event: 'unpause',
id: currentSong.id,
position,
@@ -1,12 +1,15 @@
import { useMutation } from '@tanstack/react-query';
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { AxiosError } from 'axios';
import { api } from '/@/renderer/api';
import { queryKeys } from '/@/renderer/api/query-keys';
import { MutationOptions } from '/@/renderer/lib/react-query';
import { incrementQueuePlayCount } from '/@/renderer/store/player.store';
import { ScrobbleArgs, ScrobbleResponse } from '/@/shared/types/domain-types';
export const useSendScrobble = (options?: MutationOptions) => {
const queryClient = useQueryClient();
return useMutation<ScrobbleResponse, AxiosError, ScrobbleArgs, null>({
mutationFn: (args) => {
return api.controller.scrobble({
@@ -18,6 +21,15 @@ export const useSendScrobble = (options?: MutationOptions) => {
// Manually increment the play count for the song in the queue if scrobble was submitted
if (variables.query.submission) {
incrementQueuePlayCount([variables.query.id]);
// Invalidate the album detail query for the song's album
if (variables.query.albumId && variables.apiClientProps.serverId) {
queryClient.invalidateQueries({
queryKey: queryKeys.albums.detail(variables.apiClientProps.serverId, {
id: variables.query.albumId,
}),
});
}
}
},
...options,
+1
View File
@@ -1237,6 +1237,7 @@ export type ScrobbleArgs = BaseEndpointArgs & {
};
export type ScrobbleQuery = {
albumId?: string;
event?: 'pause' | 'start' | 'timeupdate' | 'unpause';
id: string;
position?: number;