import { UseSuspenseQueryOptions } from '@tanstack/react-query'; import { api } from '/@/renderer/api'; import { useItemListInfiniteLoader } from '/@/renderer/components/item-list/helpers/item-list-infinite-loader'; import { useItemListColumnReorder } from '/@/renderer/components/item-list/helpers/use-item-list-column-reorder'; import { useItemListColumnResize } from '/@/renderer/components/item-list/helpers/use-item-list-column-resize'; import { useItemListScrollPersist } from '/@/renderer/components/item-list/helpers/use-item-list-scroll-persist'; import { ItemTableList } from '/@/renderer/components/item-list/item-table-list/item-table-list'; import { ItemTableListColumn } from '/@/renderer/components/item-list/item-table-list/item-table-list-column'; import { ItemListTableComponentProps } from '/@/renderer/components/item-list/types'; import { artistsQueries } from '/@/renderer/features/artists/api/artists-api'; import { ArtistListQuery, ArtistListSort, LibraryItem, SortOrder, } from '/@/shared/types/domain-types'; import { ItemListKey } from '/@/shared/types/types'; interface ArtistListInfiniteTableProps extends ItemListTableComponentProps {} export const ArtistListInfiniteTable = ({ autoFitColumns = false, columns, enableAlternateRowColors = false, enableHeader = true, enableHorizontalBorders = false, enableRowHoverHighlight = true, enableSelection = true, enableVerticalBorders = false, itemsPerPage = 100, query = { sortBy: ArtistListSort.NAME, sortOrder: SortOrder.ASC, }, saveScrollOffset = true, serverId, size = 'default', }: ArtistListInfiniteTableProps) => { const listCountQuery = artistsQueries.artistListCount({ query: { ...query, limit: itemsPerPage }, serverId: serverId, }) as UseSuspenseQueryOptions; const listQueryFn = api.controller.getArtistList; const { getItem, getItemIndex, itemCount, loadedItems, onRangeChanged } = useItemListInfiniteLoader({ eventKey: ItemListKey.ARTIST, itemsPerPage, itemType: LibraryItem.ARTIST, listCountQuery, listQueryFn, query, serverId, }); const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ enabled: saveScrollOffset, }); const { handleColumnReordered } = useItemListColumnReorder({ itemListKey: ItemListKey.ARTIST, }); const { handleColumnResized } = useItemListColumnResize({ itemListKey: ItemListKey.ARTIST, }); return ( ); };