add itemCount to list context

This commit is contained in:
jeffvli
2025-10-11 03:33:12 -07:00
parent f90a11e9cf
commit 51b1945957
3 changed files with 24 additions and 2 deletions
@@ -8,6 +8,7 @@ import throttle from 'lodash/throttle';
import { useCallback, useEffect, useMemo, useRef } from 'react';
import { queryKeys } from '/@/renderer/api/query-keys';
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';
@@ -45,6 +46,16 @@ export const useItemListInfiniteLoader = ({
const { data: totalItemCount } = useSuspenseQuery<number, any, number, any>(listCountQuery);
const { setItemCount } = useListContext();
useEffect(() => {
if (!totalItemCount || !setItemCount) {
return;
}
setItemCount(totalItemCount);
}, [setItemCount, totalItemCount]);
const pagesLoaded = useRef<Record<string, boolean>>({});
// Reset the loaded pages when the query changes
@@ -7,6 +7,7 @@ import {
import { useCallback, useEffect, useMemo } from 'react';
import { queryKeys } from '/@/renderer/api/query-keys';
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';
@@ -37,6 +38,16 @@ export const useItemListPaginatedLoader = ({
const queryClient = useQueryClient();
const { data: totalItemCount } = useSuspenseQuery<number, any, number, any>(listCountQuery);
const { setItemCount } = useListContext();
useEffect(() => {
if (!totalItemCount || !setItemCount) {
return;
}
setItemCount(totalItemCount);
}, [setItemCount, totalItemCount]);
const pageCount = Math.ceil(totalItemCount / itemsPerPage);
const fetchRange = getFetchRange(currentPage, itemsPerPage);
+2 -2
View File
@@ -1,13 +1,13 @@
import { createContext, useContext } from 'react';
import { ListKey } from '/@/renderer/store';
import { Play } from '/@/shared/types/types';
interface ListContextProps {
customFilters?: Record<string, unknown>;
handlePlay?: (args: { initialSongId?: string; playType: Play }) => void;
id?: string;
itemCount?: number;
pageKey: ListKey;
setItemCount?: (itemCount: number) => void;
}
export const ListContext = createContext<ListContextProps>({