From 60776b5f028c2b15103f98ee840f3d55f6f4922a Mon Sep 17 00:00:00 2001 From: jeffvli Date: Wed, 11 Mar 2026 02:04:51 -0700 Subject: [PATCH] fix missing list query invalidation on playlist create/delete --- .../mutations/create-playlist-mutation.ts | 20 +++++++++++++++---- .../mutations/delete-playlist-mutation.ts | 20 +++++++++++++++---- 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/src/renderer/features/playlists/mutations/create-playlist-mutation.ts b/src/renderer/features/playlists/mutations/create-playlist-mutation.ts index c64e6fb21..5f287b9ea 100644 --- a/src/renderer/features/playlists/mutations/create-playlist-mutation.ts +++ b/src/renderer/features/playlists/mutations/create-playlist-mutation.ts @@ -3,8 +3,13 @@ import { AxiosError } from 'axios'; import { api } from '/@/renderer/api'; import { queryKeys } from '/@/renderer/api/query-keys'; +import { infiniteLoaderDataQueryKey } from '/@/renderer/components/item-list/helpers/item-list-infinite-loader'; import { MutationHookArgs } from '/@/renderer/lib/react-query'; -import { CreatePlaylistArgs, CreatePlaylistResponse } from '/@/shared/types/domain-types'; +import { + CreatePlaylistArgs, + CreatePlaylistResponse, + LibraryItem, +} from '/@/shared/types/domain-types'; export const useCreatePlaylist = (args: MutationHookArgs) => { const { options } = args || {}; @@ -17,12 +22,19 @@ export const useCreatePlaylist = (args: MutationHookArgs) => { apiClientProps: { serverId: args.apiClientProps.serverId }, }); }, - onSuccess: (_args, variables) => { + ...options, + onSuccess: (data, variables, context) => { + const { serverId } = variables.apiClientProps; queryClient.invalidateQueries({ exact: false, - queryKey: queryKeys.playlists.list(variables.apiClientProps.serverId), + queryKey: queryKeys.playlists.root(serverId), }); + + queryClient.invalidateQueries({ + exact: false, + queryKey: infiniteLoaderDataQueryKey(serverId, LibraryItem.PLAYLIST), + }); + options?.onSuccess?.(data, variables, context); }, - ...options, }); }; diff --git a/src/renderer/features/playlists/mutations/delete-playlist-mutation.ts b/src/renderer/features/playlists/mutations/delete-playlist-mutation.ts index e1999070f..dd8b165b3 100644 --- a/src/renderer/features/playlists/mutations/delete-playlist-mutation.ts +++ b/src/renderer/features/playlists/mutations/delete-playlist-mutation.ts @@ -3,13 +3,18 @@ import { AxiosError } from 'axios'; import { api } from '/@/renderer/api'; import { queryKeys } from '/@/renderer/api/query-keys'; +import { infiniteLoaderDataQueryKey } from '/@/renderer/components/item-list/helpers/item-list-infinite-loader'; import { applyDeletePlaylistOptimisticUpdates, PreviousQueryData, restorePlaylistQueryData, } from '/@/renderer/features/playlists/mutations/playlist-optimistic-updates'; import { MutationHookArgs } from '/@/renderer/lib/react-query'; -import { DeletePlaylistArgs, DeletePlaylistResponse } from '/@/shared/types/domain-types'; +import { + DeletePlaylistArgs, + DeletePlaylistResponse, + LibraryItem, +} from '/@/shared/types/domain-types'; export const useDeletePlaylist = (args: MutationHookArgs) => { const { options } = args || {}; @@ -34,13 +39,20 @@ export const useDeletePlaylist = (args: MutationHookArgs) => { }); return applyDeletePlaylistOptimisticUpdates(queryClient, variables); }, - onSuccess: (_data, variables) => { + ...options, + onSuccess: (data, variables, context) => { + const { serverId } = variables.apiClientProps; queryClient.invalidateQueries({ exact: false, - queryKey: queryKeys.playlists.list(variables.apiClientProps.serverId), + queryKey: queryKeys.playlists.root(serverId), }); + + queryClient.invalidateQueries({ + exact: false, + queryKey: infiniteLoaderDataQueryKey(serverId, LibraryItem.PLAYLIST), + }); + options?.onSuccess?.(data, variables, context); }, - ...options, }, ); };