mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-16 21:50:35 +02:00
support query key override on infinite carousels
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { useSuspenseInfiniteQuery } from '@tanstack/react-query';
|
||||
import { QueryFunctionContext, useSuspenseInfiniteQuery } from '@tanstack/react-query';
|
||||
import { useEffect, useMemo, useRef } from 'react';
|
||||
|
||||
import { api } from '/@/renderer/api';
|
||||
@@ -9,14 +9,21 @@ import { Album, AlbumListResponse, AlbumListSort, SortOrder } from '/@/shared/ty
|
||||
|
||||
interface InfiniteAlbumFeatureCarouselProps {
|
||||
itemLimit?: number;
|
||||
queryKey?: QueryFunctionContext['queryKey'];
|
||||
}
|
||||
|
||||
export const AlbumInfiniteFeatureCarousel = ({
|
||||
itemLimit = 20,
|
||||
queryKey,
|
||||
}: InfiniteAlbumFeatureCarouselProps) => {
|
||||
const serverId = useCurrentServerId();
|
||||
const loadMoreTriggeredRef = useRef(false);
|
||||
|
||||
const defaultQueryKey = queryKeys.albums.infiniteList(serverId, {
|
||||
sortBy: AlbumListSort.RANDOM,
|
||||
sortOrder: SortOrder.DESC,
|
||||
});
|
||||
|
||||
const { data, fetchNextPage, hasNextPage, isFetchingNextPage } =
|
||||
useSuspenseInfiniteQuery<AlbumListResponse>({
|
||||
getNextPageParam: (lastPage, _allPages, lastPageParam) => {
|
||||
@@ -40,10 +47,7 @@ export const AlbumInfiniteFeatureCarousel = ({
|
||||
},
|
||||
});
|
||||
},
|
||||
queryKey: queryKeys.albums.infiniteList(serverId, {
|
||||
sortBy: AlbumListSort.RANDOM,
|
||||
sortOrder: SortOrder.DESC,
|
||||
}),
|
||||
queryKey: queryKey || defaultQueryKey,
|
||||
});
|
||||
|
||||
// Flatten all pages and filter for albums with images
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { useSuspenseInfiniteQuery } from '@tanstack/react-query';
|
||||
import { QueryFunctionContext, useSuspenseInfiniteQuery } from '@tanstack/react-query';
|
||||
import { useEffect, useMemo, useRef } from 'react';
|
||||
|
||||
import { api } from '/@/renderer/api';
|
||||
@@ -9,14 +9,21 @@ import { Album, AlbumListResponse, AlbumListSort, SortOrder } from '/@/shared/ty
|
||||
|
||||
interface InfiniteAlbumSingleFeatureCarouselProps {
|
||||
itemLimit?: number;
|
||||
queryKey?: QueryFunctionContext['queryKey'];
|
||||
}
|
||||
|
||||
export const AlbumInfiniteSingleFeatureCarousel = ({
|
||||
itemLimit = 20,
|
||||
queryKey,
|
||||
}: InfiniteAlbumSingleFeatureCarouselProps) => {
|
||||
const serverId = useCurrentServerId();
|
||||
const loadMoreTriggeredRef = useRef(false);
|
||||
|
||||
const defaultQueryKey = queryKeys.albums.infiniteList(serverId, {
|
||||
sortBy: AlbumListSort.RANDOM,
|
||||
sortOrder: SortOrder.DESC,
|
||||
});
|
||||
|
||||
const { data, fetchNextPage, hasNextPage, isFetchingNextPage } =
|
||||
useSuspenseInfiniteQuery<AlbumListResponse>({
|
||||
getNextPageParam: (lastPage, _allPages, lastPageParam) => {
|
||||
@@ -40,10 +47,7 @@ export const AlbumInfiniteSingleFeatureCarousel = ({
|
||||
},
|
||||
});
|
||||
},
|
||||
queryKey: queryKeys.albums.infiniteList(serverId, {
|
||||
sortBy: AlbumListSort.RANDOM,
|
||||
sortOrder: SortOrder.DESC,
|
||||
}),
|
||||
queryKey: queryKey || defaultQueryKey,
|
||||
});
|
||||
|
||||
// Flatten all pages and filter for albums with images
|
||||
|
||||
Reference in New Issue
Block a user