mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-07 04:20:12 +02:00
add itemCount to list context
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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>({
|
||||
|
||||
Reference in New Issue
Block a user