fix paginated loader query return value to be consistent with domain types

This commit is contained in:
jeffvli
2025-11-24 03:59:01 -08:00
parent 6dc110e776
commit 04c2bec58f
@@ -85,14 +85,14 @@ export const useItemListPaginatedLoader = ({
const { data, refetch: queryRefetch } = useQuery({ const { data, refetch: queryRefetch } = useQuery({
gcTime: 1000 * 15, gcTime: 1000 * 15,
placeholderData: getInitialData(itemsPerPage), placeholderData: { items: getInitialData(itemsPerPage) },
queryFn: async ({ signal }) => { queryFn: async ({ signal }) => {
const result = await listQueryFn({ const result = await listQueryFn({
apiClientProps: { serverId, signal }, apiClientProps: { serverId, signal },
query: queryParams, query: queryParams,
}); });
return result.items; return result;
}, },
queryKey: queryKeys[getQueryKeyName(itemType)].list(serverId, queryParams), queryKey: queryKeys[getQueryKeyName(itemType)].list(serverId, queryParams),
staleTime: 1000 * 15, staleTime: 1000 * 15,
@@ -106,25 +106,28 @@ export const useItemListPaginatedLoader = ({
(indexes: number[], value: object) => { (indexes: number[], value: object) => {
return queryClient.setQueryData( return queryClient.setQueryData(
queryKeys[getQueryKeyName(itemType)].list(serverId, queryParams), queryKeys[getQueryKeyName(itemType)].list(serverId, queryParams),
(prev: undefined | unknown[]) => { (prev: undefined | { items: unknown[] }) => {
if (!prev) { if (!prev) {
return prev; return prev;
} }
return prev.map((item: any, index) => { return {
if (!item) { ...prev,
return item; items: prev.items.map((item: any, index) => {
} if (!item) {
return item;
}
if (!indexes.includes(index)) { if (!indexes.includes(index)) {
return item; return item;
} }
return { return {
...item, ...item,
...value, ...value,
}; };
}); }),
};
}, },
); );
}, },
@@ -141,7 +144,7 @@ export const useItemListPaginatedLoader = ({
}; };
const handleFavorite = (payload: UserFavoriteEventPayload) => { const handleFavorite = (payload: UserFavoriteEventPayload) => {
if (!data) { if (!data || !data.items) {
return; return;
} }
@@ -149,7 +152,7 @@ export const useItemListPaginatedLoader = ({
return; return;
} }
const idToIndexMap = data const idToIndexMap = data.items
.filter(Boolean) .filter(Boolean)
.reduce((acc: Record<string, number>, item: any, index: number) => { .reduce((acc: Record<string, number>, item: any, index: number) => {
acc[item.id] = index; acc[item.id] = index;
@@ -168,7 +171,7 @@ export const useItemListPaginatedLoader = ({
}; };
const handleRating = (payload: UserRatingEventPayload) => { const handleRating = (payload: UserRatingEventPayload) => {
if (!data) { if (!data || !data.items) {
return; return;
} }
@@ -176,7 +179,7 @@ export const useItemListPaginatedLoader = ({
return; return;
} }
const idToIndexMap = data.reduce( const idToIndexMap = data.items.reduce(
(acc: Record<string, number>, item: any, index: number) => { (acc: Record<string, number>, item: any, index: number) => {
acc[item.id] = index; acc[item.id] = index;
return acc; return acc;
@@ -206,7 +209,7 @@ export const useItemListPaginatedLoader = ({
}; };
}, [data, eventKey, itemType, serverId, refresh, updateItems]); }, [data, eventKey, itemType, serverId, refresh, updateItems]);
return { data, pageCount, totalItemCount }; return { data: data?.items || [], pageCount, totalItemCount };
}; };
const getFetchRange = (pageIndex: number, itemsPerPage: number) => { const getFetchRange = (pageIndex: number, itemsPerPage: number) => {