mirror of
https://github.com/antebudimir/feishin.git
synced 2026-01-01 10:23:33 +00:00
Split key pagination in central handler
This commit is contained in:
parent
1cb0a1d72a
commit
6821735f65
4 changed files with 91 additions and 103 deletions
|
|
@ -3,7 +3,7 @@ import { useCallback, useMemo } from 'react';
|
|||
import AutoSizer from 'react-virtualized-auto-sizer';
|
||||
import { ListOnScrollProps } from 'react-window';
|
||||
import { controller } from '/@/renderer/api/controller';
|
||||
import { queryKeys, splitPaginatedQuery } from '/@/renderer/api/query-keys';
|
||||
import { queryKeys } from '/@/renderer/api/query-keys';
|
||||
import {
|
||||
Album,
|
||||
AlbumListQuery,
|
||||
|
|
@ -169,16 +169,14 @@ export const AlbumListGridView = ({ gridRef, itemCount }: any) => {
|
|||
return [];
|
||||
}
|
||||
|
||||
const listQuery: AlbumListQuery = {
|
||||
const query: AlbumListQuery = {
|
||||
limit: take,
|
||||
startIndex: skip,
|
||||
...filter,
|
||||
...customFilters,
|
||||
};
|
||||
|
||||
const { query, pagination } = splitPaginatedQuery(listQuery);
|
||||
|
||||
const queryKey = queryKeys.albums.list(server?.id || '', query, pagination);
|
||||
const queryKey = queryKeys.albums.list(server?.id || '', query);
|
||||
|
||||
const albums = await queryClient.fetchQuery(queryKey, async ({ signal }) =>
|
||||
controller.getAlbumList({
|
||||
|
|
@ -186,7 +184,7 @@ export const AlbumListGridView = ({ gridRef, itemCount }: any) => {
|
|||
server,
|
||||
signal,
|
||||
},
|
||||
query: listQuery,
|
||||
query,
|
||||
}),
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import {
|
|||
RiAddBoxFill,
|
||||
RiAddCircleFill,
|
||||
RiFilterFill,
|
||||
RiFolder2Line,
|
||||
RiFolder2Fill,
|
||||
RiMoreFill,
|
||||
RiPlayFill,
|
||||
RiRefreshLine,
|
||||
|
|
@ -275,6 +275,10 @@ export const AlbumListHeaderFilters = ({ gridRef, tableRef }: AlbumListHeaderFil
|
|||
return isNavidromeFilterApplied || isJellyfinFilterApplied;
|
||||
}, [filter?._custom?.jellyfin, filter?._custom?.navidrome, server?.type]);
|
||||
|
||||
const isFolderFilterApplied = useMemo(() => {
|
||||
return filter.musicFolderId !== undefined;
|
||||
}, [filter.musicFolderId]);
|
||||
|
||||
return (
|
||||
<Flex justify="space-between">
|
||||
<Group
|
||||
|
|
@ -320,9 +324,16 @@ export const AlbumListHeaderFilters = ({ gridRef, tableRef }: AlbumListHeaderFil
|
|||
compact
|
||||
fw={600}
|
||||
size="md"
|
||||
sx={{
|
||||
svg: {
|
||||
fill: isFolderFilterApplied
|
||||
? 'var(--primary-color) !important'
|
||||
: undefined,
|
||||
},
|
||||
}}
|
||||
variant="subtle"
|
||||
>
|
||||
{cq.isSm ? 'Folder' : <RiFolder2Line size="1.3rem" />}
|
||||
<RiFolder2Fill size="1.3rem" />
|
||||
</Button>
|
||||
</DropdownMenu.Target>
|
||||
<DropdownMenu.Dropdown>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue