fix list loader query keys

This commit is contained in:
jeffvli
2025-10-22 18:43:40 -07:00
parent 08ab0715bd
commit 2504c0ec10
6 changed files with 50 additions and 5 deletions
@@ -14,6 +14,25 @@ import { UserFavoriteEventPayload, UserRatingEventPayload } from '/@/renderer/ev
import { getServerById } from '/@/renderer/store';
import { LibraryItem } from '/@/shared/types/domain-types';
const getQueryKeyName = (itemType: LibraryItem): string => {
switch (itemType) {
case LibraryItem.ALBUM:
return 'albums';
case LibraryItem.ALBUM_ARTIST:
return 'albumArtists';
case LibraryItem.ARTIST:
return 'artists';
case LibraryItem.GENRE:
return 'genres';
case LibraryItem.PLAYLIST:
return 'playlists';
case LibraryItem.SONG:
return 'songs';
default:
return 'albums';
}
};
interface UseItemListInfiniteLoaderProps {
eventKey: string;
itemsPerPage: number;
@@ -110,7 +129,7 @@ export const useItemListInfiniteLoader = ({
return result.items;
},
queryKey: queryKeys.albums.list(serverId, queryParams),
queryKey: queryKeys[getQueryKeyName(itemType)].list(serverId, queryParams),
staleTime: 1000 * 15,
});
@@ -120,7 +139,7 @@ export const useItemListInfiniteLoader = ({
pagesLoaded.current[pageNumber] = true;
}, 500);
}, [itemsPerPage, query, queryClient, serverId, dataQueryKey, listQueryFn]);
}, [itemsPerPage, query, queryClient, serverId, dataQueryKey, listQueryFn, itemType]);
const refresh = useCallback(
async (force?: boolean) => {
@@ -11,11 +11,32 @@ import { useListContext } from '/@/renderer/context/list-context';
import { eventEmitter } from '/@/renderer/events/event-emitter';
import { UserFavoriteEventPayload, UserRatingEventPayload } from '/@/renderer/events/events';
import { getServerById } from '/@/renderer/store';
import { LibraryItem } from '/@/shared/types/domain-types';
const getQueryKeyName = (itemType: LibraryItem): string => {
switch (itemType) {
case LibraryItem.ALBUM:
return 'albums';
case LibraryItem.ALBUM_ARTIST:
return 'albumArtists';
case LibraryItem.ARTIST:
return 'artists';
case LibraryItem.GENRE:
return 'genres';
case LibraryItem.PLAYLIST:
return 'playlists';
case LibraryItem.SONG:
return 'songs';
default:
return 'albums'; // fallback
}
};
interface UseItemListPaginatedLoaderProps {
currentPage: number;
eventKey?: string;
itemsPerPage: number;
itemType: LibraryItem;
listCountQuery: UseSuspenseQueryOptions<number, Error, number, readonly unknown[]>;
listQueryFn: (args: { apiClientProps: any; query: any }) => Promise<{ items: unknown[] }>;
query: Record<string, any>;
@@ -30,6 +51,7 @@ export const useItemListPaginatedLoader = ({
currentPage,
eventKey,
itemsPerPage = 100,
itemType,
listCountQuery,
listQueryFn,
query = {},
@@ -73,7 +95,7 @@ export const useItemListPaginatedLoader = ({
return result.items;
},
queryKey: queryKeys.albums.list(serverId, queryParams),
queryKey: queryKeys[getQueryKeyName(itemType)].list(serverId, queryParams),
staleTime: 1000 * 15,
});
@@ -84,7 +106,7 @@ export const useItemListPaginatedLoader = ({
const updateItems = useCallback(
(indexes: number[], value: object) => {
return queryClient.setQueryData(
queryKeys.albums.list(serverId, queryParams),
queryKeys[getQueryKeyName(itemType)].list(serverId, queryParams),
(prev: undefined | unknown[]) => {
if (!prev) {
return prev;
@@ -107,7 +129,7 @@ export const useItemListPaginatedLoader = ({
},
);
},
[queryClient, queryParams, serverId],
[queryClient, queryParams, serverId, itemType],
);
useEffect(() => {
@@ -44,6 +44,7 @@ export const AlbumListPaginatedGrid = forwardRef<any, AlbumListPaginatedGridProp
const { data, pageCount, totalItemCount } = useItemListPaginatedLoader({
currentPage,
itemsPerPage,
itemType: LibraryItem.ALBUM,
listCountQuery,
listQueryFn,
query,
@@ -50,6 +50,7 @@ export const AlbumListPaginatedTable = forwardRef<any, AlbumListPaginatedTablePr
const { data, pageCount, totalItemCount } = useItemListPaginatedLoader({
currentPage,
itemsPerPage,
itemType: LibraryItem.ALBUM,
listCountQuery,
listQueryFn,
query,
@@ -37,6 +37,7 @@ export const SongListPaginatedGrid = forwardRef<any, SongListPaginatedGridProps>
const { data, pageCount, totalItemCount } = useItemListPaginatedLoader({
currentPage,
itemsPerPage,
itemType: LibraryItem.SONG,
listCountQuery,
listQueryFn,
query,
@@ -45,6 +45,7 @@ export const SongListPaginatedTable = forwardRef<any, SongListPaginatedTableProp
const { data, pageCount, totalItemCount } = useItemListPaginatedLoader({
currentPage,
itemsPerPage,
itemType: LibraryItem.SONG,
listCountQuery,
listQueryFn,
query,