mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-09 20:29:36 +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 { useCallback, useEffect, useMemo, useRef } from 'react';
|
||||||
|
|
||||||
import { queryKeys } from '/@/renderer/api/query-keys';
|
import { queryKeys } from '/@/renderer/api/query-keys';
|
||||||
|
import { useListContext } from '/@/renderer/context/list-context';
|
||||||
import { eventEmitter } from '/@/renderer/events/event-emitter';
|
import { eventEmitter } from '/@/renderer/events/event-emitter';
|
||||||
import { UserFavoriteEventPayload, UserRatingEventPayload } from '/@/renderer/events/events';
|
import { UserFavoriteEventPayload, UserRatingEventPayload } from '/@/renderer/events/events';
|
||||||
import { getServerById } from '/@/renderer/store';
|
import { getServerById } from '/@/renderer/store';
|
||||||
@@ -45,6 +46,16 @@ export const useItemListInfiniteLoader = ({
|
|||||||
|
|
||||||
const { data: totalItemCount } = useSuspenseQuery<number, any, number, any>(listCountQuery);
|
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>>({});
|
const pagesLoaded = useRef<Record<string, boolean>>({});
|
||||||
|
|
||||||
// Reset the loaded pages when the query changes
|
// Reset the loaded pages when the query changes
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import {
|
|||||||
import { useCallback, useEffect, useMemo } from 'react';
|
import { useCallback, useEffect, useMemo } from 'react';
|
||||||
|
|
||||||
import { queryKeys } from '/@/renderer/api/query-keys';
|
import { queryKeys } from '/@/renderer/api/query-keys';
|
||||||
|
import { useListContext } from '/@/renderer/context/list-context';
|
||||||
import { eventEmitter } from '/@/renderer/events/event-emitter';
|
import { eventEmitter } from '/@/renderer/events/event-emitter';
|
||||||
import { UserFavoriteEventPayload, UserRatingEventPayload } from '/@/renderer/events/events';
|
import { UserFavoriteEventPayload, UserRatingEventPayload } from '/@/renderer/events/events';
|
||||||
import { getServerById } from '/@/renderer/store';
|
import { getServerById } from '/@/renderer/store';
|
||||||
@@ -37,6 +38,16 @@ export const useItemListPaginatedLoader = ({
|
|||||||
const queryClient = useQueryClient();
|
const queryClient = useQueryClient();
|
||||||
const { data: totalItemCount } = useSuspenseQuery<number, any, number, any>(listCountQuery);
|
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 pageCount = Math.ceil(totalItemCount / itemsPerPage);
|
||||||
|
|
||||||
const fetchRange = getFetchRange(currentPage, itemsPerPage);
|
const fetchRange = getFetchRange(currentPage, itemsPerPage);
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
import { createContext, useContext } from 'react';
|
import { createContext, useContext } from 'react';
|
||||||
|
|
||||||
import { ListKey } from '/@/renderer/store';
|
import { ListKey } from '/@/renderer/store';
|
||||||
import { Play } from '/@/shared/types/types';
|
|
||||||
|
|
||||||
interface ListContextProps {
|
interface ListContextProps {
|
||||||
customFilters?: Record<string, unknown>;
|
customFilters?: Record<string, unknown>;
|
||||||
handlePlay?: (args: { initialSongId?: string; playType: Play }) => void;
|
|
||||||
id?: string;
|
id?: string;
|
||||||
|
itemCount?: number;
|
||||||
pageKey: ListKey;
|
pageKey: ListKey;
|
||||||
|
setItemCount?: (itemCount: number) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const ListContext = createContext<ListContextProps>({
|
export const ListContext = createContext<ListContextProps>({
|
||||||
|
|||||||
Reference in New Issue
Block a user