diff --git a/src/renderer/features/albums/components/album-list-infinite-grid.tsx b/src/renderer/features/albums/components/album-list-infinite-grid.tsx index a8e5542e3..7acbc76e3 100644 --- a/src/renderer/features/albums/components/album-list-infinite-grid.tsx +++ b/src/renderer/features/albums/components/album-list-infinite-grid.tsx @@ -1,5 +1,4 @@ import { UseSuspenseQueryOptions } from '@tanstack/react-query'; -import { forwardRef } from 'react'; import { api } from '/@/renderer/api'; import { useItemListInfiniteLoader } from '/@/renderer/components/item-list/helpers/item-list-infinite-loader'; @@ -15,58 +14,57 @@ import { SortOrder, } from '/@/shared/types/domain-types'; import { ItemListKey } from '/@/shared/types/types'; + interface AlbumListInfiniteGridProps extends ItemListGridComponentProps {} -export const AlbumListInfiniteGrid = forwardRef( - ({ - gap = 'md', - itemsPerPage = 100, - itemsPerRow, - query = { - sortBy: AlbumListSort.NAME, - sortOrder: SortOrder.ASC, - }, - saveScrollOffset = true, - serverId, - }) => { - const listCountQuery = albumQueries.listCount({ - query: { ...query }, - serverId: serverId, - }) as UseSuspenseQueryOptions; - - const listQueryFn = api.controller.getAlbumList; - - const { data, onRangeChanged } = useItemListInfiniteLoader({ - eventKey: ItemListKey.ALBUM, - itemsPerPage, - itemType: LibraryItem.ALBUM, - listCountQuery, - listQueryFn, - query, - serverId, - }); - - const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ - enabled: saveScrollOffset, - }); - - const rows = useGridRows(LibraryItem.ALBUM, ItemListKey.ALBUM); - - return ( - - ); +export const AlbumListInfiniteGrid = ({ + gap = 'md', + itemsPerPage = 100, + itemsPerRow, + query = { + sortBy: AlbumListSort.NAME, + sortOrder: SortOrder.ASC, }, -); + saveScrollOffset = true, + serverId, +}: AlbumListInfiniteGridProps) => { + const listCountQuery = albumQueries.listCount({ + query: { ...query }, + serverId: serverId, + }) as UseSuspenseQueryOptions; + + const listQueryFn = api.controller.getAlbumList; + + const { data, onRangeChanged } = useItemListInfiniteLoader({ + eventKey: ItemListKey.ALBUM, + itemsPerPage, + itemType: LibraryItem.ALBUM, + listCountQuery, + listQueryFn, + query, + serverId, + }); + + const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ + enabled: saveScrollOffset, + }); + + const rows = useGridRows(LibraryItem.ALBUM, ItemListKey.ALBUM); + + return ( + + ); +}; diff --git a/src/renderer/features/albums/components/album-list-infinite-table.tsx b/src/renderer/features/albums/components/album-list-infinite-table.tsx index 6c99674b3..3944bf2fa 100644 --- a/src/renderer/features/albums/components/album-list-infinite-table.tsx +++ b/src/renderer/features/albums/components/album-list-infinite-table.tsx @@ -1,5 +1,4 @@ import { UseSuspenseQueryOptions } from '@tanstack/react-query'; -import { forwardRef } from 'react'; import { api } from '/@/renderer/api'; import { useItemListInfiniteLoader } from '/@/renderer/components/item-list/helpers/item-list-infinite-loader'; @@ -20,79 +19,73 @@ import { ItemListKey } from '/@/shared/types/types'; interface AlbumListInfiniteTableProps extends ItemListTableComponentProps {} -export const AlbumListInfiniteTable = forwardRef( - ( - { - autoFitColumns = false, - columns, - enableAlternateRowColors = false, - enableHorizontalBorders = false, - enableRowHoverHighlight = true, - enableSelection = true, - enableVerticalBorders = false, - itemsPerPage = 100, - query = { - sortBy: AlbumListSort.NAME, - sortOrder: SortOrder.ASC, - }, - saveScrollOffset = true, - serverId, - size = 'default', - }, - ref, - ) => { - const listCountQuery = albumQueries.listCount({ - query: { ...query }, - serverId: serverId, - }) as UseSuspenseQueryOptions; - - const listQueryFn = api.controller.getAlbumList; - - const { data, onRangeChanged } = useItemListInfiniteLoader({ - eventKey: ItemListKey.ALBUM, - itemsPerPage, - itemType: LibraryItem.ALBUM, - listCountQuery, - listQueryFn, - query, - serverId, - }); - - const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ - enabled: saveScrollOffset, - }); - - const { handleColumnReordered } = useItemListColumnReorder({ - itemListKey: ItemListKey.ALBUM, - }); - - const { handleColumnResized } = useItemListColumnResize({ - itemListKey: ItemListKey.ALBUM, - }); - - return ( - - ); +export const AlbumListInfiniteTable = ({ + autoFitColumns = false, + columns, + enableAlternateRowColors = false, + enableHorizontalBorders = false, + enableRowHoverHighlight = true, + enableSelection = true, + enableVerticalBorders = false, + itemsPerPage = 100, + query = { + sortBy: AlbumListSort.NAME, + sortOrder: SortOrder.ASC, }, -); + saveScrollOffset = true, + serverId, + size = 'default', +}: AlbumListInfiniteTableProps) => { + const listCountQuery = albumQueries.listCount({ + query: { ...query }, + serverId: serverId, + }) as UseSuspenseQueryOptions; + + const listQueryFn = api.controller.getAlbumList; + + const { data, onRangeChanged } = useItemListInfiniteLoader({ + eventKey: ItemListKey.ALBUM, + itemsPerPage, + itemType: LibraryItem.ALBUM, + listCountQuery, + listQueryFn, + query, + serverId, + }); + + const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ + enabled: saveScrollOffset, + }); + + const { handleColumnReordered } = useItemListColumnReorder({ + itemListKey: ItemListKey.ALBUM, + }); + + const { handleColumnResized } = useItemListColumnResize({ + itemListKey: ItemListKey.ALBUM, + }); + + return ( + + ); +}; diff --git a/src/renderer/features/albums/components/album-list-paginated-grid.tsx b/src/renderer/features/albums/components/album-list-paginated-grid.tsx index 3c34b4440..9fd55e67e 100644 --- a/src/renderer/features/albums/components/album-list-paginated-grid.tsx +++ b/src/renderer/features/albums/components/album-list-paginated-grid.tsx @@ -1,5 +1,4 @@ import { UseSuspenseQueryOptions } from '@tanstack/react-query'; -import { forwardRef } from 'react'; import { api } from '/@/renderer/api'; import { useItemListPaginatedLoader } from '/@/renderer/components/item-list/helpers/item-list-paginated-loader'; @@ -20,71 +19,65 @@ import { ItemListKey } from '/@/shared/types/types'; interface AlbumListPaginatedGridProps extends ItemListGridComponentProps {} -export const AlbumListPaginatedGrid = forwardRef( - ( - { - gap = 'md', - itemsPerPage = 100, - itemsPerRow, - query = { - sortBy: AlbumListSort.NAME, - sortOrder: SortOrder.ASC, - }, - saveScrollOffset = true, - serverId, - }, - ref, - ) => { - const listCountQuery = albumQueries.listCount({ - query: { ...query }, - serverId: serverId, - }) as UseSuspenseQueryOptions; - - const listQueryFn = api.controller.getAlbumList; - - const { currentPage, onChange } = useItemListPagination(); - - const { data, pageCount, totalItemCount } = useItemListPaginatedLoader({ - currentPage, - eventKey: ItemListKey.ALBUM, - itemsPerPage, - itemType: LibraryItem.ALBUM, - listCountQuery, - listQueryFn, - query, - serverId, - }); - - const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ - enabled: saveScrollOffset, - }); - - const rows = useGridRows(LibraryItem.ALBUM, ItemListKey.ALBUM); - - return ( - - - - ); +export const AlbumListPaginatedGrid = ({ + gap = 'md', + itemsPerPage = 100, + itemsPerRow, + query = { + sortBy: AlbumListSort.NAME, + sortOrder: SortOrder.ASC, }, -); + saveScrollOffset = true, + serverId, +}: AlbumListPaginatedGridProps) => { + const listCountQuery = albumQueries.listCount({ + query: { ...query }, + serverId: serverId, + }) as UseSuspenseQueryOptions; + + const listQueryFn = api.controller.getAlbumList; + + const { currentPage, onChange } = useItemListPagination(); + + const { data, pageCount, totalItemCount } = useItemListPaginatedLoader({ + currentPage, + eventKey: ItemListKey.ALBUM, + itemsPerPage, + itemType: LibraryItem.ALBUM, + listCountQuery, + listQueryFn, + query, + serverId, + }); + + const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ + enabled: saveScrollOffset, + }); + + const rows = useGridRows(LibraryItem.ALBUM, ItemListKey.ALBUM); + + return ( + + + + ); +}; diff --git a/src/renderer/features/albums/components/album-list-paginated-table.tsx b/src/renderer/features/albums/components/album-list-paginated-table.tsx index 8a7f1856b..dc9e172a9 100644 --- a/src/renderer/features/albums/components/album-list-paginated-table.tsx +++ b/src/renderer/features/albums/components/album-list-paginated-table.tsx @@ -1,5 +1,4 @@ import { UseSuspenseQueryOptions } from '@tanstack/react-query'; -import { forwardRef } from 'react'; import { api } from '/@/renderer/api'; import { useItemListPaginatedLoader } from '/@/renderer/components/item-list/helpers/item-list-paginated-loader'; @@ -22,92 +21,86 @@ import { ItemListKey } from '/@/shared/types/types'; interface AlbumListPaginatedTableProps extends ItemListTableComponentProps {} -export const AlbumListPaginatedTable = forwardRef( - ( - { - autoFitColumns = false, - columns, - enableAlternateRowColors = false, - enableHorizontalBorders = false, - enableRowHoverHighlight = true, - enableSelection = true, - enableVerticalBorders = false, - itemsPerPage = 100, - query = { - sortBy: AlbumListSort.NAME, - sortOrder: SortOrder.ASC, - }, - saveScrollOffset = true, - serverId, - size = 'default', - }, - ref, - ) => { - const listCountQuery = albumQueries.listCount({ - query: { ...query }, - serverId: serverId, - }) as UseSuspenseQueryOptions; - - const listQueryFn = api.controller.getAlbumList; - - const { currentPage, onChange } = useItemListPagination(); - - const { data, pageCount, totalItemCount } = useItemListPaginatedLoader({ - currentPage, - eventKey: ItemListKey.ALBUM, - itemsPerPage, - itemType: LibraryItem.ALBUM, - listCountQuery, - listQueryFn, - query, - serverId, - }); - - const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ - enabled: saveScrollOffset, - }); - - const { handleColumnReordered } = useItemListColumnReorder({ - itemListKey: ItemListKey.ALBUM, - }); - - const { handleColumnResized } = useItemListColumnResize({ - itemListKey: ItemListKey.ALBUM, - }); - - const startRowIndex = currentPage * itemsPerPage; - - return ( - - - - ); +export const AlbumListPaginatedTable = ({ + autoFitColumns = false, + columns, + enableAlternateRowColors = false, + enableHorizontalBorders = false, + enableRowHoverHighlight = true, + enableSelection = true, + enableVerticalBorders = false, + itemsPerPage = 100, + query = { + sortBy: AlbumListSort.NAME, + sortOrder: SortOrder.ASC, }, -); + saveScrollOffset = true, + serverId, + size = 'default', +}: AlbumListPaginatedTableProps) => { + const listCountQuery = albumQueries.listCount({ + query: { ...query }, + serverId: serverId, + }) as UseSuspenseQueryOptions; + + const listQueryFn = api.controller.getAlbumList; + + const { currentPage, onChange } = useItemListPagination(); + + const { data, pageCount, totalItemCount } = useItemListPaginatedLoader({ + currentPage, + eventKey: ItemListKey.ALBUM, + itemsPerPage, + itemType: LibraryItem.ALBUM, + listCountQuery, + listQueryFn, + query, + serverId, + }); + + const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ + enabled: saveScrollOffset, + }); + + const { handleColumnReordered } = useItemListColumnReorder({ + itemListKey: ItemListKey.ALBUM, + }); + + const { handleColumnResized } = useItemListColumnResize({ + itemListKey: ItemListKey.ALBUM, + }); + + const startRowIndex = currentPage * itemsPerPage; + + return ( + + + + ); +}; diff --git a/src/renderer/features/artists/components/album-artist-list-infinite-grid.tsx b/src/renderer/features/artists/components/album-artist-list-infinite-grid.tsx index 7eed32072..8e72a2159 100644 --- a/src/renderer/features/artists/components/album-artist-list-infinite-grid.tsx +++ b/src/renderer/features/artists/components/album-artist-list-infinite-grid.tsx @@ -19,55 +19,53 @@ import { ItemListKey } from '/@/shared/types/types'; interface AlbumArtistListInfiniteGridProps extends ItemListGridComponentProps {} -export const AlbumArtistListInfiniteGrid = forwardRef( - ({ - gap = 'md', - itemsPerPage = 100, - itemsPerRow, - query = { - sortBy: AlbumArtistListSort.NAME, - sortOrder: SortOrder.ASC, - }, - saveScrollOffset = true, - serverId, - }) => { - const listCountQuery = artistsQueries.albumArtistListCount({ - query: { ...query }, - serverId: serverId, - }) as UseSuspenseQueryOptions; - - const listQueryFn = api.controller.getAlbumArtistList; - - const { data, onRangeChanged } = useItemListInfiniteLoader({ - eventKey: ItemListKey.ALBUM_ARTIST, - itemsPerPage, - itemType: LibraryItem.ALBUM_ARTIST, - listCountQuery, - listQueryFn, - query, - serverId, - }); - - const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ - enabled: saveScrollOffset, - }); - - const rows = useGridRows(LibraryItem.ALBUM_ARTIST, ItemListKey.ALBUM_ARTIST); - - return ( - - ); +export const AlbumArtistListInfiniteGrid = ({ + gap = 'md', + itemsPerPage = 100, + itemsPerRow, + query = { + sortBy: AlbumArtistListSort.NAME, + sortOrder: SortOrder.ASC, }, -); + saveScrollOffset = true, + serverId, +}: AlbumArtistListInfiniteGridProps) => { + const listCountQuery = artistsQueries.albumArtistListCount({ + query: { ...query }, + serverId: serverId, + }) as UseSuspenseQueryOptions; + + const listQueryFn = api.controller.getAlbumArtistList; + + const { data, onRangeChanged } = useItemListInfiniteLoader({ + eventKey: ItemListKey.ALBUM_ARTIST, + itemsPerPage, + itemType: LibraryItem.ALBUM_ARTIST, + listCountQuery, + listQueryFn, + query, + serverId, + }); + + const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ + enabled: saveScrollOffset, + }); + + const rows = useGridRows(LibraryItem.ALBUM_ARTIST, ItemListKey.ALBUM_ARTIST); + + return ( + + ); +}; diff --git a/src/renderer/features/artists/components/album-artist-list-infinite-table.tsx b/src/renderer/features/artists/components/album-artist-list-infinite-table.tsx index b8edd64f0..5ac72bebe 100644 --- a/src/renderer/features/artists/components/album-artist-list-infinite-table.tsx +++ b/src/renderer/features/artists/components/album-artist-list-infinite-table.tsx @@ -1,5 +1,4 @@ import { UseSuspenseQueryOptions } from '@tanstack/react-query'; -import { forwardRef } from 'react'; import { api } from '/@/renderer/api'; import { useItemListInfiniteLoader } from '/@/renderer/components/item-list/helpers/item-list-infinite-loader'; @@ -21,80 +20,74 @@ import { ItemListKey } from '/@/shared/types/types'; interface AlbumArtistListInfiniteTableProps extends ItemListTableComponentProps {} -export const AlbumArtistListInfiniteTable = forwardRef( - ( - { - autoFitColumns = false, - columns, - enableAlternateRowColors = false, - enableHorizontalBorders = false, - enableRowHoverHighlight = true, - enableSelection = true, - enableVerticalBorders = false, - itemsPerPage = 100, - query = { - sortBy: AlbumArtistListSort.NAME, - sortOrder: SortOrder.ASC, - }, - saveScrollOffset = true, - serverId, - size = 'default', - }, - ref, - ) => { - const listCountQuery = artistsQueries.albumArtistListCount({ - query: { ...query }, - serverId: serverId, - }) as UseSuspenseQueryOptions; - - const listQueryFn = api.controller.getAlbumArtistList; - - const { data, onRangeChanged } = useItemListInfiniteLoader({ - eventKey: ItemListKey.ALBUM_ARTIST, - itemsPerPage, - itemType: LibraryItem.ALBUM_ARTIST, - listCountQuery, - listQueryFn, - query, - serverId, - }); - - const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ - enabled: saveScrollOffset, - }); - - const { handleColumnReordered } = useItemListColumnReorder({ - itemListKey: ItemListKey.ALBUM_ARTIST, - }); - - const { handleColumnResized } = useItemListColumnResize({ - itemListKey: ItemListKey.ALBUM_ARTIST, - }); - - return ( - - ); +export const AlbumArtistListInfiniteTable = ({ + autoFitColumns = false, + columns, + enableAlternateRowColors = false, + enableHorizontalBorders = false, + enableRowHoverHighlight = true, + enableSelection = true, + enableVerticalBorders = false, + itemsPerPage = 100, + query = { + sortBy: AlbumArtistListSort.NAME, + sortOrder: SortOrder.ASC, }, -); + saveScrollOffset = true, + serverId, + size = 'default', +}: AlbumArtistListInfiniteTableProps) => { + const listCountQuery = artistsQueries.albumArtistListCount({ + query: { ...query }, + serverId: serverId, + }) as UseSuspenseQueryOptions; + + const listQueryFn = api.controller.getAlbumArtistList; + + const { data, onRangeChanged } = useItemListInfiniteLoader({ + eventKey: ItemListKey.ALBUM_ARTIST, + itemsPerPage, + itemType: LibraryItem.ALBUM_ARTIST, + listCountQuery, + listQueryFn, + query, + serverId, + }); + + const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ + enabled: saveScrollOffset, + }); + + const { handleColumnReordered } = useItemListColumnReorder({ + itemListKey: ItemListKey.ALBUM_ARTIST, + }); + + const { handleColumnResized } = useItemListColumnResize({ + itemListKey: ItemListKey.ALBUM_ARTIST, + }); + + return ( + + ); +}; diff --git a/src/renderer/features/artists/components/album-artist-list-paginated-grid.tsx b/src/renderer/features/artists/components/album-artist-list-paginated-grid.tsx index 8fd87885e..ac6251722 100644 --- a/src/renderer/features/artists/components/album-artist-list-paginated-grid.tsx +++ b/src/renderer/features/artists/components/album-artist-list-paginated-grid.tsx @@ -1,5 +1,5 @@ import { UseSuspenseQueryOptions } from '@tanstack/react-query'; -import { forwardRef } from 'react'; +import { ref } from 'process'; import { api } from '/@/renderer/api'; import { useItemListPaginatedLoader } from '/@/renderer/components/item-list/helpers/item-list-paginated-loader'; @@ -21,70 +21,65 @@ import { ItemListKey } from '/@/shared/types/types'; interface AlbumArtistListPaginatedGridProps extends ItemListGridComponentProps {} -export const AlbumArtistListPaginatedGrid = forwardRef( - ( - { - gap = 'md', - itemsPerPage = 100, - itemsPerRow, - query = { - sortBy: AlbumArtistListSort.NAME, - sortOrder: SortOrder.ASC, - }, - saveScrollOffset = true, - serverId, - }, - ref, - ) => { - const listCountQuery = artistsQueries.albumArtistListCount({ - query: { ...query }, - serverId: serverId, - }) as UseSuspenseQueryOptions; - - const listQueryFn = api.controller.getAlbumArtistList; - - const { currentPage, onChange } = useItemListPagination(); - - const { data, pageCount, totalItemCount } = useItemListPaginatedLoader({ - currentPage, - eventKey: ItemListKey.ALBUM_ARTIST, - itemsPerPage, - itemType: LibraryItem.ALBUM_ARTIST, - listCountQuery, - listQueryFn, - query, - serverId, - }); - - const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ - enabled: saveScrollOffset, - }); - - const rows = useGridRows(LibraryItem.ALBUM_ARTIST, ItemListKey.ALBUM_ARTIST); - - return ( - - - - ); +export const AlbumArtistListPaginatedGrid = ({ + gap = 'md', + itemsPerPage = 100, + itemsPerRow, + query = { + sortBy: AlbumArtistListSort.NAME, + sortOrder: SortOrder.ASC, }, -); + saveScrollOffset = true, + serverId, +}: AlbumArtistListPaginatedGridProps) => { + const listCountQuery = artistsQueries.albumArtistListCount({ + query: { ...query }, + serverId: serverId, + }) as UseSuspenseQueryOptions; + + const listQueryFn = api.controller.getAlbumArtistList; + + const { currentPage, onChange } = useItemListPagination(); + + const { data, pageCount, totalItemCount } = useItemListPaginatedLoader({ + currentPage, + eventKey: ItemListKey.ALBUM_ARTIST, + itemsPerPage, + itemType: LibraryItem.ALBUM_ARTIST, + listCountQuery, + listQueryFn, + query, + serverId, + }); + + const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ + enabled: saveScrollOffset, + }); + + const rows = useGridRows(LibraryItem.ALBUM_ARTIST, ItemListKey.ALBUM_ARTIST); + + return ( + + + + ); +}; diff --git a/src/renderer/features/artists/components/album-artist-list-paginated-table.tsx b/src/renderer/features/artists/components/album-artist-list-paginated-table.tsx index 74a101171..a26ec766f 100644 --- a/src/renderer/features/artists/components/album-artist-list-paginated-table.tsx +++ b/src/renderer/features/artists/components/album-artist-list-paginated-table.tsx @@ -1,5 +1,4 @@ import { UseSuspenseQueryOptions } from '@tanstack/react-query'; -import { forwardRef } from 'react'; import { api } from '/@/renderer/api'; import { useItemListPaginatedLoader } from '/@/renderer/components/item-list/helpers/item-list-paginated-loader'; @@ -23,93 +22,87 @@ import { ItemListKey } from '/@/shared/types/types'; interface AlbumArtistListPaginatedTableProps extends ItemListTableComponentProps {} -export const AlbumArtistListPaginatedTable = forwardRef( - ( - { - autoFitColumns = false, - columns, - enableAlternateRowColors = false, - enableHorizontalBorders = false, - enableRowHoverHighlight = true, - enableSelection = true, - enableVerticalBorders = false, - itemsPerPage = 100, - query = { - sortBy: AlbumArtistListSort.NAME, - sortOrder: SortOrder.ASC, - }, - saveScrollOffset = true, - serverId, - size = 'default', - }, - ref, - ) => { - const listCountQuery = artistsQueries.albumArtistListCount({ - query: { ...query }, - serverId: serverId, - }) as UseSuspenseQueryOptions; - - const listQueryFn = api.controller.getAlbumArtistList; - - const { currentPage, onChange } = useItemListPagination(); - - const { data, pageCount, totalItemCount } = useItemListPaginatedLoader({ - currentPage, - eventKey: ItemListKey.ALBUM_ARTIST, - itemsPerPage, - itemType: LibraryItem.ALBUM_ARTIST, - listCountQuery, - listQueryFn, - query, - serverId, - }); - - const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ - enabled: saveScrollOffset, - }); - - const { handleColumnReordered } = useItemListColumnReorder({ - itemListKey: ItemListKey.ALBUM_ARTIST, - }); - - const { handleColumnResized } = useItemListColumnResize({ - itemListKey: ItemListKey.ALBUM_ARTIST, - }); - - const startRowIndex = currentPage * itemsPerPage; - - return ( - - - - ); +export const AlbumArtistListPaginatedTable = ({ + autoFitColumns = false, + columns, + enableAlternateRowColors = false, + enableHorizontalBorders = false, + enableRowHoverHighlight = true, + enableSelection = true, + enableVerticalBorders = false, + itemsPerPage = 100, + query = { + sortBy: AlbumArtistListSort.NAME, + sortOrder: SortOrder.ASC, }, -); + saveScrollOffset = true, + serverId, + size = 'default', +}: AlbumArtistListPaginatedTableProps) => { + const listCountQuery = artistsQueries.albumArtistListCount({ + query: { ...query }, + serverId: serverId, + }) as UseSuspenseQueryOptions; + + const listQueryFn = api.controller.getAlbumArtistList; + + const { currentPage, onChange } = useItemListPagination(); + + const { data, pageCount, totalItemCount } = useItemListPaginatedLoader({ + currentPage, + eventKey: ItemListKey.ALBUM_ARTIST, + itemsPerPage, + itemType: LibraryItem.ALBUM_ARTIST, + listCountQuery, + listQueryFn, + query, + serverId, + }); + + const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ + enabled: saveScrollOffset, + }); + + const { handleColumnReordered } = useItemListColumnReorder({ + itemListKey: ItemListKey.ALBUM_ARTIST, + }); + + const { handleColumnResized } = useItemListColumnResize({ + itemListKey: ItemListKey.ALBUM_ARTIST, + }); + + const startRowIndex = currentPage * itemsPerPage; + + return ( + + + + ); +}; diff --git a/src/renderer/features/artists/components/artist-list-infinite-grid.tsx b/src/renderer/features/artists/components/artist-list-infinite-grid.tsx index add10cb30..991deb3e3 100644 --- a/src/renderer/features/artists/components/artist-list-infinite-grid.tsx +++ b/src/renderer/features/artists/components/artist-list-infinite-grid.tsx @@ -1,5 +1,4 @@ import { UseSuspenseQueryOptions } from '@tanstack/react-query'; -import { forwardRef } from 'react'; import { api } from '/@/renderer/api'; import { useItemListInfiniteLoader } from '/@/renderer/components/item-list/helpers/item-list-infinite-loader'; @@ -18,55 +17,53 @@ import { ItemListKey } from '/@/shared/types/types'; interface ArtistListInfiniteGridProps extends ItemListGridComponentProps {} -export const ArtistListInfiniteGrid = forwardRef( - ({ - gap = 'md', - itemsPerPage = 100, - itemsPerRow, - query = { - sortBy: ArtistListSort.NAME, - sortOrder: SortOrder.ASC, - }, - saveScrollOffset = true, - serverId, - }) => { - const listCountQuery = artistsQueries.artistListCount({ - query: { ...query }, - serverId: serverId, - }) as UseSuspenseQueryOptions; - - const listQueryFn = api.controller.getArtistList; - - const { data, onRangeChanged } = useItemListInfiniteLoader({ - eventKey: ItemListKey.ARTIST, - itemsPerPage, - itemType: LibraryItem.ARTIST, - listCountQuery, - listQueryFn, - query, - serverId, - }); - - const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ - enabled: saveScrollOffset, - }); - - const rows = useGridRows(LibraryItem.ARTIST, ItemListKey.ARTIST); - - return ( - - ); +export const ArtistListInfiniteGrid = ({ + gap = 'md', + itemsPerPage = 100, + itemsPerRow, + query = { + sortBy: ArtistListSort.NAME, + sortOrder: SortOrder.ASC, }, -); + saveScrollOffset = true, + serverId, +}: ArtistListInfiniteGridProps) => { + const listCountQuery = artistsQueries.artistListCount({ + query: { ...query }, + serverId: serverId, + }) as UseSuspenseQueryOptions; + + const listQueryFn = api.controller.getArtistList; + + const { data, onRangeChanged } = useItemListInfiniteLoader({ + eventKey: ItemListKey.ARTIST, + itemsPerPage, + itemType: LibraryItem.ARTIST, + listCountQuery, + listQueryFn, + query, + serverId, + }); + + const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ + enabled: saveScrollOffset, + }); + + const rows = useGridRows(LibraryItem.ARTIST, ItemListKey.ARTIST); + + return ( + + ); +}; diff --git a/src/renderer/features/artists/components/artist-list-infinite-table.tsx b/src/renderer/features/artists/components/artist-list-infinite-table.tsx index b1214f628..594138acb 100644 --- a/src/renderer/features/artists/components/artist-list-infinite-table.tsx +++ b/src/renderer/features/artists/components/artist-list-infinite-table.tsx @@ -1,5 +1,4 @@ import { UseSuspenseQueryOptions } from '@tanstack/react-query'; -import { forwardRef } from 'react'; import { api } from '/@/renderer/api'; import { useItemListInfiniteLoader } from '/@/renderer/components/item-list/helpers/item-list-infinite-loader'; @@ -20,80 +19,74 @@ import { ItemListKey } from '/@/shared/types/types'; interface ArtistListInfiniteTableProps extends ItemListTableComponentProps {} -export const ArtistListInfiniteTable = forwardRef( - ( - { - autoFitColumns = false, - columns, - enableAlternateRowColors = false, - enableHorizontalBorders = false, - enableRowHoverHighlight = true, - enableSelection = true, - enableVerticalBorders = false, - itemsPerPage = 100, - query = { - sortBy: ArtistListSort.NAME, - sortOrder: SortOrder.ASC, - }, - saveScrollOffset = true, - serverId, - size = 'default', - }, - ref, - ) => { - const listCountQuery = artistsQueries.artistListCount({ - query: { ...query }, - serverId: serverId, - }) as UseSuspenseQueryOptions; - - const listQueryFn = api.controller.getArtistList; - - const { data, 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 ( - - ); +export const ArtistListInfiniteTable = ({ + autoFitColumns = false, + columns, + enableAlternateRowColors = false, + 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 }, + serverId: serverId, + }) as UseSuspenseQueryOptions; + + const listQueryFn = api.controller.getArtistList; + + const { data, 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 ( + + ); +}; diff --git a/src/renderer/features/artists/components/artist-list-paginated-grid.tsx b/src/renderer/features/artists/components/artist-list-paginated-grid.tsx index 155ec6985..481569257 100644 --- a/src/renderer/features/artists/components/artist-list-paginated-grid.tsx +++ b/src/renderer/features/artists/components/artist-list-paginated-grid.tsx @@ -1,5 +1,4 @@ import { UseSuspenseQueryOptions } from '@tanstack/react-query'; -import { forwardRef } from 'react'; import { api } from '/@/renderer/api'; import { useItemListPaginatedLoader } from '/@/renderer/components/item-list/helpers/item-list-paginated-loader'; @@ -20,70 +19,64 @@ import { ItemListKey } from '/@/shared/types/types'; interface ArtistListPaginatedGridProps extends ItemListGridComponentProps {} -export const ArtistListPaginatedGrid = forwardRef( - ( - { - gap = 'md', - itemsPerPage = 100, - itemsPerRow, - query = { - sortBy: ArtistListSort.NAME, - sortOrder: SortOrder.ASC, - }, - saveScrollOffset = true, - serverId, - }, - ref, - ) => { - const listCountQuery = artistsQueries.artistListCount({ - query: { ...query }, - serverId: serverId, - }) as UseSuspenseQueryOptions; - - const listQueryFn = api.controller.getArtistList; - - const { currentPage, onChange } = useItemListPagination(); - - const { data, pageCount, totalItemCount } = useItemListPaginatedLoader({ - currentPage, - eventKey: ItemListKey.ARTIST, - itemsPerPage, - itemType: LibraryItem.ARTIST, - listCountQuery, - listQueryFn, - query, - serverId, - }); - - const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ - enabled: saveScrollOffset, - }); - - const rows = useGridRows(LibraryItem.ARTIST, ItemListKey.ARTIST); - - return ( - - - - ); +export const ArtistListPaginatedGrid = ({ + gap = 'md', + itemsPerPage = 100, + itemsPerRow, + query = { + sortBy: ArtistListSort.NAME, + sortOrder: SortOrder.ASC, }, -); + saveScrollOffset = true, + serverId, +}: ArtistListPaginatedGridProps) => { + const listCountQuery = artistsQueries.artistListCount({ + query: { ...query }, + serverId: serverId, + }) as UseSuspenseQueryOptions; + + const listQueryFn = api.controller.getArtistList; + + const { currentPage, onChange } = useItemListPagination(); + + const { data, pageCount, totalItemCount } = useItemListPaginatedLoader({ + currentPage, + eventKey: ItemListKey.ARTIST, + itemsPerPage, + itemType: LibraryItem.ARTIST, + listCountQuery, + listQueryFn, + query, + serverId, + }); + + const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ + enabled: saveScrollOffset, + }); + + const rows = useGridRows(LibraryItem.ARTIST, ItemListKey.ARTIST); + + return ( + + + + ); +}; diff --git a/src/renderer/features/artists/components/artist-list-paginated-table.tsx b/src/renderer/features/artists/components/artist-list-paginated-table.tsx index 7a4004def..048f95529 100644 --- a/src/renderer/features/artists/components/artist-list-paginated-table.tsx +++ b/src/renderer/features/artists/components/artist-list-paginated-table.tsx @@ -1,5 +1,4 @@ import { UseSuspenseQueryOptions } from '@tanstack/react-query'; -import { forwardRef } from 'react'; import { api } from '/@/renderer/api'; import { useItemListPaginatedLoader } from '/@/renderer/components/item-list/helpers/item-list-paginated-loader'; @@ -22,93 +21,87 @@ import { ItemListKey } from '/@/shared/types/types'; interface ArtistListPaginatedTableProps extends ItemListTableComponentProps {} -export const ArtistListPaginatedTable = forwardRef( - ( - { - autoFitColumns = false, - columns, - enableAlternateRowColors = false, - enableHorizontalBorders = false, - enableRowHoverHighlight = true, - enableSelection = true, - enableVerticalBorders = false, - itemsPerPage = 100, - query = { - sortBy: ArtistListSort.NAME, - sortOrder: SortOrder.ASC, - }, - saveScrollOffset = true, - serverId, - size = 'default', - }, - ref, - ) => { - const listCountQuery = artistsQueries.artistListCount({ - query: { ...query }, - serverId: serverId, - }) as UseSuspenseQueryOptions; - - const listQueryFn = api.controller.getArtistList; - - const { currentPage, onChange } = useItemListPagination(); - - const { data, pageCount, totalItemCount } = useItemListPaginatedLoader({ - currentPage, - 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, - }); - - const startRowIndex = currentPage * itemsPerPage; - - return ( - - - - ); +export const ArtistListPaginatedTable = ({ + autoFitColumns = false, + columns, + enableAlternateRowColors = false, + enableHorizontalBorders = false, + enableRowHoverHighlight = true, + enableSelection = true, + enableVerticalBorders = false, + itemsPerPage = 100, + query = { + sortBy: ArtistListSort.NAME, + sortOrder: SortOrder.ASC, }, -); + saveScrollOffset = true, + serverId, + size = 'default', +}: ArtistListPaginatedTableProps) => { + const listCountQuery = artistsQueries.artistListCount({ + query: { ...query }, + serverId: serverId, + }) as UseSuspenseQueryOptions; + + const listQueryFn = api.controller.getArtistList; + + const { currentPage, onChange } = useItemListPagination(); + + const { data, pageCount, totalItemCount } = useItemListPaginatedLoader({ + currentPage, + 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, + }); + + const startRowIndex = currentPage * itemsPerPage; + + return ( + + + + ); +}; diff --git a/src/renderer/features/genres/components/genre-list-infinite-grid.tsx b/src/renderer/features/genres/components/genre-list-infinite-grid.tsx index 83dd58576..2ca1a619c 100644 --- a/src/renderer/features/genres/components/genre-list-infinite-grid.tsx +++ b/src/renderer/features/genres/components/genre-list-infinite-grid.tsx @@ -1,5 +1,4 @@ import { UseSuspenseQueryOptions } from '@tanstack/react-query'; -import { forwardRef } from 'react'; import { api } from '/@/renderer/api'; import { useItemListInfiniteLoader } from '/@/renderer/components/item-list/helpers/item-list-infinite-loader'; @@ -18,55 +17,53 @@ import { ItemListKey } from '/@/shared/types/types'; interface GenreListInfiniteGridProps extends ItemListGridComponentProps {} -export const GenreListInfiniteGrid = forwardRef( - ({ - gap = 'md', - itemsPerPage = 100, - itemsPerRow, - query = { - sortBy: GenreListSort.NAME, - sortOrder: SortOrder.ASC, - }, - saveScrollOffset = true, - serverId, - }) => { - const listCountQuery = genresQueries.listCount({ - query: { ...query }, - serverId: serverId, - }) as UseSuspenseQueryOptions; - - const listQueryFn = api.controller.getGenreList; - - const { data, onRangeChanged } = useItemListInfiniteLoader({ - eventKey: ItemListKey.GENRE, - itemsPerPage, - itemType: LibraryItem.GENRE, - listCountQuery, - listQueryFn, - query, - serverId, - }); - - const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ - enabled: saveScrollOffset, - }); - - const rows = useGridRows(LibraryItem.GENRE, ItemListKey.GENRE); - - return ( - - ); +export const GenreListInfiniteGrid = ({ + gap = 'md', + itemsPerPage = 100, + itemsPerRow, + query = { + sortBy: GenreListSort.NAME, + sortOrder: SortOrder.ASC, }, -); + saveScrollOffset = true, + serverId, +}: GenreListInfiniteGridProps) => { + const listCountQuery = genresQueries.listCount({ + query: { ...query }, + serverId: serverId, + }) as UseSuspenseQueryOptions; + + const listQueryFn = api.controller.getGenreList; + + const { data, onRangeChanged } = useItemListInfiniteLoader({ + eventKey: ItemListKey.GENRE, + itemsPerPage, + itemType: LibraryItem.GENRE, + listCountQuery, + listQueryFn, + query, + serverId, + }); + + const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ + enabled: saveScrollOffset, + }); + + const rows = useGridRows(LibraryItem.GENRE, ItemListKey.GENRE); + + return ( + + ); +}; diff --git a/src/renderer/features/genres/components/genre-list-infinite-table.tsx b/src/renderer/features/genres/components/genre-list-infinite-table.tsx index 86112bd9d..d9871ba38 100644 --- a/src/renderer/features/genres/components/genre-list-infinite-table.tsx +++ b/src/renderer/features/genres/components/genre-list-infinite-table.tsx @@ -1,5 +1,4 @@ import { UseSuspenseQueryOptions } from '@tanstack/react-query'; -import { forwardRef } from 'react'; import { api } from '/@/renderer/api'; import { useItemListInfiniteLoader } from '/@/renderer/components/item-list/helpers/item-list-infinite-loader'; @@ -20,80 +19,74 @@ import { ItemListKey } from '/@/shared/types/types'; interface GenreListInfiniteTableProps extends ItemListTableComponentProps {} -export const GenreListInfiniteTable = forwardRef( - ( - { - autoFitColumns = false, - columns, - enableAlternateRowColors = false, - enableHorizontalBorders = false, - enableRowHoverHighlight = true, - enableSelection = true, - enableVerticalBorders = false, - itemsPerPage = 100, - query = { - sortBy: GenreListSort.NAME, - sortOrder: SortOrder.ASC, - }, - saveScrollOffset = true, - serverId, - size = 'default', - }, - ref, - ) => { - const listCountQuery = genresQueries.listCount({ - query: { ...query }, - serverId: serverId, - }) as UseSuspenseQueryOptions; - - const listQueryFn = api.controller.getGenreList; - - const { data, onRangeChanged } = useItemListInfiniteLoader({ - eventKey: ItemListKey.GENRE, - itemsPerPage, - itemType: LibraryItem.GENRE, - listCountQuery, - listQueryFn, - query, - serverId, - }); - - const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ - enabled: saveScrollOffset, - }); - - const { handleColumnReordered } = useItemListColumnReorder({ - itemListKey: ItemListKey.GENRE, - }); - - const { handleColumnResized } = useItemListColumnResize({ - itemListKey: ItemListKey.GENRE, - }); - - return ( - - ); +export const GenreListInfiniteTable = ({ + autoFitColumns = false, + columns, + enableAlternateRowColors = false, + enableHorizontalBorders = false, + enableRowHoverHighlight = true, + enableSelection = true, + enableVerticalBorders = false, + itemsPerPage = 100, + query = { + sortBy: GenreListSort.NAME, + sortOrder: SortOrder.ASC, }, -); + saveScrollOffset = true, + serverId, + size = 'default', +}: GenreListInfiniteTableProps) => { + const listCountQuery = genresQueries.listCount({ + query: { ...query }, + serverId: serverId, + }) as UseSuspenseQueryOptions; + + const listQueryFn = api.controller.getGenreList; + + const { data, onRangeChanged } = useItemListInfiniteLoader({ + eventKey: ItemListKey.GENRE, + itemsPerPage, + itemType: LibraryItem.GENRE, + listCountQuery, + listQueryFn, + query, + serverId, + }); + + const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ + enabled: saveScrollOffset, + }); + + const { handleColumnReordered } = useItemListColumnReorder({ + itemListKey: ItemListKey.GENRE, + }); + + const { handleColumnResized } = useItemListColumnResize({ + itemListKey: ItemListKey.GENRE, + }); + + return ( + + ); +}; diff --git a/src/renderer/features/genres/components/genre-list-paginated-grid.tsx b/src/renderer/features/genres/components/genre-list-paginated-grid.tsx index 21b546460..d819297ce 100644 --- a/src/renderer/features/genres/components/genre-list-paginated-grid.tsx +++ b/src/renderer/features/genres/components/genre-list-paginated-grid.tsx @@ -1,5 +1,4 @@ import { UseSuspenseQueryOptions } from '@tanstack/react-query'; -import { forwardRef } from 'react'; import { api } from '/@/renderer/api'; import { useItemListPaginatedLoader } from '/@/renderer/components/item-list/helpers/item-list-paginated-loader'; @@ -20,70 +19,64 @@ import { ItemListKey } from '/@/shared/types/types'; interface GenreListPaginatedGridProps extends ItemListGridComponentProps {} -export const GenreListPaginatedGrid = forwardRef( - ( - { - gap = 'md', - itemsPerPage = 100, - itemsPerRow, - query = { - sortBy: GenreListSort.NAME, - sortOrder: SortOrder.ASC, - }, - saveScrollOffset = true, - serverId, - }, - ref, - ) => { - const listCountQuery = genresQueries.listCount({ - query: { ...query }, - serverId: serverId, - }) as UseSuspenseQueryOptions; - - const listQueryFn = api.controller.getGenreList; - - const { currentPage, onChange } = useItemListPagination(); - - const { data, pageCount, totalItemCount } = useItemListPaginatedLoader({ - currentPage, - eventKey: ItemListKey.GENRE, - itemsPerPage, - itemType: LibraryItem.GENRE, - listCountQuery, - listQueryFn, - query, - serverId, - }); - - const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ - enabled: saveScrollOffset, - }); - - const rows = useGridRows(LibraryItem.GENRE, ItemListKey.GENRE); - - return ( - - - - ); +export const GenreListPaginatedGrid = ({ + gap = 'md', + itemsPerPage = 100, + itemsPerRow, + query = { + sortBy: GenreListSort.NAME, + sortOrder: SortOrder.ASC, }, -); + saveScrollOffset = true, + serverId, +}: GenreListPaginatedGridProps) => { + const listCountQuery = genresQueries.listCount({ + query: { ...query }, + serverId: serverId, + }) as UseSuspenseQueryOptions; + + const listQueryFn = api.controller.getGenreList; + + const { currentPage, onChange } = useItemListPagination(); + + const { data, pageCount, totalItemCount } = useItemListPaginatedLoader({ + currentPage, + eventKey: ItemListKey.GENRE, + itemsPerPage, + itemType: LibraryItem.GENRE, + listCountQuery, + listQueryFn, + query, + serverId, + }); + + const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ + enabled: saveScrollOffset, + }); + + const rows = useGridRows(LibraryItem.GENRE, ItemListKey.GENRE); + + return ( + + + + ); +}; diff --git a/src/renderer/features/genres/components/genre-list-paginated-table.tsx b/src/renderer/features/genres/components/genre-list-paginated-table.tsx index 2a4f89751..b97cab054 100644 --- a/src/renderer/features/genres/components/genre-list-paginated-table.tsx +++ b/src/renderer/features/genres/components/genre-list-paginated-table.tsx @@ -1,5 +1,4 @@ import { UseSuspenseQueryOptions } from '@tanstack/react-query'; -import { forwardRef } from 'react'; import { api } from '/@/renderer/api'; import { useItemListPaginatedLoader } from '/@/renderer/components/item-list/helpers/item-list-paginated-loader'; @@ -22,93 +21,87 @@ import { ItemListKey } from '/@/shared/types/types'; interface GenreListPaginatedTableProps extends ItemListTableComponentProps {} -export const GenreListPaginatedTable = forwardRef( - ( - { - autoFitColumns = false, - columns, - enableAlternateRowColors = false, - enableHorizontalBorders = false, - enableRowHoverHighlight = true, - enableSelection = true, - enableVerticalBorders = false, - itemsPerPage = 100, - query = { - sortBy: GenreListSort.NAME, - sortOrder: SortOrder.ASC, - }, - saveScrollOffset = true, - serverId, - size = 'default', - }, - ref, - ) => { - const listCountQuery = genresQueries.listCount({ - query: { ...query }, - serverId: serverId, - }) as UseSuspenseQueryOptions; - - const listQueryFn = api.controller.getGenreList; - - const { currentPage, onChange } = useItemListPagination(); - - const { data, pageCount, totalItemCount } = useItemListPaginatedLoader({ - currentPage, - eventKey: ItemListKey.GENRE, - itemsPerPage, - itemType: LibraryItem.GENRE, - listCountQuery, - listQueryFn, - query, - serverId, - }); - - const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ - enabled: saveScrollOffset, - }); - - const { handleColumnReordered } = useItemListColumnReorder({ - itemListKey: ItemListKey.GENRE, - }); - - const { handleColumnResized } = useItemListColumnResize({ - itemListKey: ItemListKey.GENRE, - }); - - const startRowIndex = currentPage * itemsPerPage; - - return ( - - - - ); +export const GenreListPaginatedTable = ({ + autoFitColumns = false, + columns, + enableAlternateRowColors = false, + enableHorizontalBorders = false, + enableRowHoverHighlight = true, + enableSelection = true, + enableVerticalBorders = false, + itemsPerPage = 100, + query = { + sortBy: GenreListSort.NAME, + sortOrder: SortOrder.ASC, }, -); + saveScrollOffset = true, + serverId, + size = 'default', +}: GenreListPaginatedTableProps) => { + const listCountQuery = genresQueries.listCount({ + query: { ...query }, + serverId: serverId, + }) as UseSuspenseQueryOptions; + + const listQueryFn = api.controller.getGenreList; + + const { currentPage, onChange } = useItemListPagination(); + + const { data, pageCount, totalItemCount } = useItemListPaginatedLoader({ + currentPage, + eventKey: ItemListKey.GENRE, + itemsPerPage, + itemType: LibraryItem.GENRE, + listCountQuery, + listQueryFn, + query, + serverId, + }); + + const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ + enabled: saveScrollOffset, + }); + + const { handleColumnReordered } = useItemListColumnReorder({ + itemListKey: ItemListKey.GENRE, + }); + + const { handleColumnResized } = useItemListColumnResize({ + itemListKey: ItemListKey.GENRE, + }); + + const startRowIndex = currentPage * itemsPerPage; + + return ( + + + + ); +}; diff --git a/src/renderer/features/playlists/components/playlist-list-infinite-grid.tsx b/src/renderer/features/playlists/components/playlist-list-infinite-grid.tsx index 422452086..9c15efa28 100644 --- a/src/renderer/features/playlists/components/playlist-list-infinite-grid.tsx +++ b/src/renderer/features/playlists/components/playlist-list-infinite-grid.tsx @@ -1,5 +1,4 @@ import { UseSuspenseQueryOptions } from '@tanstack/react-query'; -import { forwardRef } from 'react'; import { api } from '/@/renderer/api'; import { useItemListInfiniteLoader } from '/@/renderer/components/item-list/helpers/item-list-infinite-loader'; @@ -18,55 +17,53 @@ import { ItemListKey } from '/@/shared/types/types'; interface PlaylistListInfiniteGridProps extends ItemListGridComponentProps {} -export const PlaylistListInfiniteGrid = forwardRef( - ({ - gap = 'md', - itemsPerPage = 100, - itemsPerRow, - query = { - sortBy: PlaylistListSort.NAME, - sortOrder: SortOrder.ASC, - }, - saveScrollOffset = true, - serverId, - }) => { - const listCountQuery = playlistsQueries.listCount({ - query: { ...query }, - serverId: serverId, - }) as UseSuspenseQueryOptions; - - const listQueryFn = api.controller.getPlaylistList; - - const { data, onRangeChanged } = useItemListInfiniteLoader({ - eventKey: ItemListKey.PLAYLIST, - itemsPerPage, - itemType: LibraryItem.PLAYLIST, - listCountQuery, - listQueryFn, - query, - serverId, - }); - - const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ - enabled: saveScrollOffset, - }); - - const rows = useGridRows(LibraryItem.PLAYLIST, ItemListKey.PLAYLIST); - - return ( - - ); +export const PlaylistListInfiniteGrid = ({ + gap = 'md', + itemsPerPage = 100, + itemsPerRow, + query = { + sortBy: PlaylistListSort.NAME, + sortOrder: SortOrder.ASC, }, -); + saveScrollOffset = true, + serverId, +}: PlaylistListInfiniteGridProps) => { + const listCountQuery = playlistsQueries.listCount({ + query: { ...query }, + serverId: serverId, + }) as UseSuspenseQueryOptions; + + const listQueryFn = api.controller.getPlaylistList; + + const { data, onRangeChanged } = useItemListInfiniteLoader({ + eventKey: ItemListKey.PLAYLIST, + itemsPerPage, + itemType: LibraryItem.PLAYLIST, + listCountQuery, + listQueryFn, + query, + serverId, + }); + + const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ + enabled: saveScrollOffset, + }); + + const rows = useGridRows(LibraryItem.PLAYLIST, ItemListKey.PLAYLIST); + + return ( + + ); +}; diff --git a/src/renderer/features/playlists/components/playlist-list-infinite-table.tsx b/src/renderer/features/playlists/components/playlist-list-infinite-table.tsx index e1b72d686..cc9f3856b 100644 --- a/src/renderer/features/playlists/components/playlist-list-infinite-table.tsx +++ b/src/renderer/features/playlists/components/playlist-list-infinite-table.tsx @@ -1,5 +1,4 @@ import { UseSuspenseQueryOptions } from '@tanstack/react-query'; -import { forwardRef } from 'react'; import { api } from '/@/renderer/api'; import { useItemListInfiniteLoader } from '/@/renderer/components/item-list/helpers/item-list-infinite-loader'; @@ -20,79 +19,73 @@ import { ItemListKey } from '/@/shared/types/types'; interface PlaylistListInfiniteTableProps extends ItemListTableComponentProps {} -export const PlaylistListInfiniteTable = forwardRef( - ( - { - autoFitColumns = false, - columns, - enableAlternateRowColors = false, - enableHorizontalBorders = false, - enableRowHoverHighlight = true, - enableSelection = true, - enableVerticalBorders = false, - itemsPerPage = 100, - query = { - sortBy: PlaylistListSort.NAME, - sortOrder: SortOrder.ASC, - }, - saveScrollOffset = true, - serverId, - size = 'default', - }, - ref, - ) => { - const listCountQuery = playlistsQueries.listCount({ - query: { ...query }, - serverId: serverId, - }) as UseSuspenseQueryOptions; - - const listQueryFn = api.controller.getPlaylistList; - - const { data, onRangeChanged } = useItemListInfiniteLoader({ - eventKey: ItemListKey.PLAYLIST, - itemsPerPage, - itemType: LibraryItem.PLAYLIST, - listCountQuery, - listQueryFn, - query, - serverId, - }); - - const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ - enabled: saveScrollOffset, - }); - - const { handleColumnReordered } = useItemListColumnReorder({ - itemListKey: ItemListKey.PLAYLIST, - }); - - const { handleColumnResized } = useItemListColumnResize({ - itemListKey: ItemListKey.PLAYLIST, - }); - - return ( - - ); +export const PlaylistListInfiniteTable = ({ + autoFitColumns = false, + columns, + enableAlternateRowColors = false, + enableHorizontalBorders = false, + enableRowHoverHighlight = true, + enableSelection = true, + enableVerticalBorders = false, + itemsPerPage = 100, + query = { + sortBy: PlaylistListSort.NAME, + sortOrder: SortOrder.ASC, }, -); + saveScrollOffset = true, + serverId, + size = 'default', +}: PlaylistListInfiniteTableProps) => { + const listCountQuery = playlistsQueries.listCount({ + query: { ...query }, + serverId: serverId, + }) as UseSuspenseQueryOptions; + + const listQueryFn = api.controller.getPlaylistList; + + const { data, onRangeChanged } = useItemListInfiniteLoader({ + eventKey: ItemListKey.PLAYLIST, + itemsPerPage, + itemType: LibraryItem.PLAYLIST, + listCountQuery, + listQueryFn, + query, + serverId, + }); + + const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ + enabled: saveScrollOffset, + }); + + const { handleColumnReordered } = useItemListColumnReorder({ + itemListKey: ItemListKey.PLAYLIST, + }); + + const { handleColumnResized } = useItemListColumnResize({ + itemListKey: ItemListKey.PLAYLIST, + }); + + return ( + + ); +}; diff --git a/src/renderer/features/playlists/components/playlist-list-paginated-grid.tsx b/src/renderer/features/playlists/components/playlist-list-paginated-grid.tsx index 5fa723053..a41199dc9 100644 --- a/src/renderer/features/playlists/components/playlist-list-paginated-grid.tsx +++ b/src/renderer/features/playlists/components/playlist-list-paginated-grid.tsx @@ -1,5 +1,4 @@ import { UseSuspenseQueryOptions } from '@tanstack/react-query'; -import { forwardRef } from 'react'; import { api } from '/@/renderer/api'; import { useItemListPaginatedLoader } from '/@/renderer/components/item-list/helpers/item-list-paginated-loader'; @@ -20,70 +19,64 @@ import { ItemListKey } from '/@/shared/types/types'; interface PlaylistListPaginatedGridProps extends ItemListGridComponentProps {} -export const PlaylistListPaginatedGrid = forwardRef( - ( - { - gap = 'md', - itemsPerPage = 100, - itemsPerRow, - query = { - sortBy: PlaylistListSort.NAME, - sortOrder: SortOrder.ASC, - }, - saveScrollOffset = true, - serverId, - }, - ref, - ) => { - const listCountQuery = playlistsQueries.listCount({ - query: { ...query }, - serverId: serverId, - }) as UseSuspenseQueryOptions; - - const listQueryFn = api.controller.getPlaylistList; - - const { currentPage, onChange } = useItemListPagination(); - - const { data, pageCount, totalItemCount } = useItemListPaginatedLoader({ - currentPage, - eventKey: ItemListKey.PLAYLIST, - itemsPerPage, - itemType: LibraryItem.PLAYLIST, - listCountQuery, - listQueryFn, - query, - serverId, - }); - - const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ - enabled: saveScrollOffset, - }); - - const rows = useGridRows(LibraryItem.PLAYLIST, ItemListKey.PLAYLIST); - - return ( - - - - ); +export const PlaylistListPaginatedGrid = ({ + gap = 'md', + itemsPerPage = 100, + itemsPerRow, + query = { + sortBy: PlaylistListSort.NAME, + sortOrder: SortOrder.ASC, }, -); + saveScrollOffset = true, + serverId, +}: PlaylistListPaginatedGridProps) => { + const listCountQuery = playlistsQueries.listCount({ + query: { ...query }, + serverId: serverId, + }) as UseSuspenseQueryOptions; + + const listQueryFn = api.controller.getPlaylistList; + + const { currentPage, onChange } = useItemListPagination(); + + const { data, pageCount, totalItemCount } = useItemListPaginatedLoader({ + currentPage, + eventKey: ItemListKey.PLAYLIST, + itemsPerPage, + itemType: LibraryItem.PLAYLIST, + listCountQuery, + listQueryFn, + query, + serverId, + }); + + const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ + enabled: saveScrollOffset, + }); + + const rows = useGridRows(LibraryItem.PLAYLIST, ItemListKey.PLAYLIST); + + return ( + + + + ); +}; diff --git a/src/renderer/features/playlists/components/playlist-list-paginated-table.tsx b/src/renderer/features/playlists/components/playlist-list-paginated-table.tsx index a44912777..73968af14 100644 --- a/src/renderer/features/playlists/components/playlist-list-paginated-table.tsx +++ b/src/renderer/features/playlists/components/playlist-list-paginated-table.tsx @@ -1,5 +1,4 @@ import { UseSuspenseQueryOptions } from '@tanstack/react-query'; -import { forwardRef } from 'react'; import { api } from '/@/renderer/api'; import { useItemListPaginatedLoader } from '/@/renderer/components/item-list/helpers/item-list-paginated-loader'; @@ -22,92 +21,86 @@ import { ItemListKey } from '/@/shared/types/types'; interface PlaylistListPaginatedTableProps extends ItemListTableComponentProps {} -export const PlaylistListPaginatedTable = forwardRef( - ( - { - autoFitColumns = false, - columns, - enableAlternateRowColors = false, - enableHorizontalBorders = false, - enableRowHoverHighlight = true, - enableSelection = true, - enableVerticalBorders = false, - itemsPerPage = 100, - query = { - sortBy: PlaylistListSort.NAME, - sortOrder: SortOrder.ASC, - }, - saveScrollOffset = true, - serverId, - size = 'default', - }, - ref, - ) => { - const listCountQuery = playlistsQueries.listCount({ - query: { ...query }, - serverId: serverId, - }) as UseSuspenseQueryOptions; - - const listQueryFn = api.controller.getPlaylistList; - - const { currentPage, onChange } = useItemListPagination(); - - const { data, pageCount, totalItemCount } = useItemListPaginatedLoader({ - currentPage, - eventKey: ItemListKey.PLAYLIST, - itemsPerPage, - itemType: LibraryItem.PLAYLIST, - listCountQuery, - listQueryFn, - query, - serverId, - }); - - const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ - enabled: saveScrollOffset, - }); - - const { handleColumnReordered } = useItemListColumnReorder({ - itemListKey: ItemListKey.PLAYLIST, - }); - - const { handleColumnResized } = useItemListColumnResize({ - itemListKey: ItemListKey.PLAYLIST, - }); - - const startRowIndex = currentPage * itemsPerPage; - - return ( - - - - ); +export const PlaylistListPaginatedTable = ({ + autoFitColumns = false, + columns, + enableAlternateRowColors = false, + enableHorizontalBorders = false, + enableRowHoverHighlight = true, + enableSelection = true, + enableVerticalBorders = false, + itemsPerPage = 100, + query = { + sortBy: PlaylistListSort.NAME, + sortOrder: SortOrder.ASC, }, -); + saveScrollOffset = true, + serverId, + size = 'default', +}: PlaylistListPaginatedTableProps) => { + const listCountQuery = playlistsQueries.listCount({ + query: { ...query }, + serverId: serverId, + }) as UseSuspenseQueryOptions; + + const listQueryFn = api.controller.getPlaylistList; + + const { currentPage, onChange } = useItemListPagination(); + + const { data, pageCount, totalItemCount } = useItemListPaginatedLoader({ + currentPage, + eventKey: ItemListKey.PLAYLIST, + itemsPerPage, + itemType: LibraryItem.PLAYLIST, + listCountQuery, + listQueryFn, + query, + serverId, + }); + + const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ + enabled: saveScrollOffset, + }); + + const { handleColumnReordered } = useItemListColumnReorder({ + itemListKey: ItemListKey.PLAYLIST, + }); + + const { handleColumnResized } = useItemListColumnResize({ + itemListKey: ItemListKey.PLAYLIST, + }); + + const startRowIndex = currentPage * itemsPerPage; + + return ( + + + + ); +}; diff --git a/src/renderer/features/songs/components/song-list-infinite-grid.tsx b/src/renderer/features/songs/components/song-list-infinite-grid.tsx index bf27ee0f3..f6a05dd2c 100644 --- a/src/renderer/features/songs/components/song-list-infinite-grid.tsx +++ b/src/renderer/features/songs/components/song-list-infinite-grid.tsx @@ -1,5 +1,4 @@ import { UseSuspenseQueryOptions } from '@tanstack/react-query'; -import { forwardRef } from 'react'; import { api } from '/@/renderer/api'; import { useItemListInfiniteLoader } from '/@/renderer/components/item-list/helpers/item-list-infinite-loader'; @@ -13,55 +12,53 @@ import { ItemListKey } from '/@/shared/types/types'; interface SongListInfiniteGridProps extends ItemListGridComponentProps {} -export const SongListInfiniteGrid = forwardRef( - ({ - gap = 'md', - itemsPerPage = 100, - itemsPerRow, - query = { - sortBy: SongListSort.NAME, - sortOrder: SortOrder.ASC, - }, - saveScrollOffset = true, - serverId, - }) => { - const listCountQuery = songsQueries.listCount({ - query: { ...query }, - serverId: serverId, - }) as UseSuspenseQueryOptions; - - const listQueryFn = api.controller.getSongList; - - const { data, onRangeChanged } = useItemListInfiniteLoader({ - eventKey: ItemListKey.SONG, - itemsPerPage, - itemType: LibraryItem.SONG, - listCountQuery, - listQueryFn, - query, - serverId, - }); - - const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ - enabled: saveScrollOffset, - }); - - const rows = useGridRows(LibraryItem.SONG, ItemListKey.SONG); - - return ( - - ); +export const SongListInfiniteGrid = ({ + gap = 'md', + itemsPerPage = 100, + itemsPerRow, + query = { + sortBy: SongListSort.NAME, + sortOrder: SortOrder.ASC, }, -); + saveScrollOffset = true, + serverId, +}: SongListInfiniteGridProps) => { + const listCountQuery = songsQueries.listCount({ + query: { ...query }, + serverId: serverId, + }) as UseSuspenseQueryOptions; + + const listQueryFn = api.controller.getSongList; + + const { data, onRangeChanged } = useItemListInfiniteLoader({ + eventKey: ItemListKey.SONG, + itemsPerPage, + itemType: LibraryItem.SONG, + listCountQuery, + listQueryFn, + query, + serverId, + }); + + const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ + enabled: saveScrollOffset, + }); + + const rows = useGridRows(LibraryItem.SONG, ItemListKey.SONG); + + return ( + + ); +}; diff --git a/src/renderer/features/songs/components/song-list-infinite-table.tsx b/src/renderer/features/songs/components/song-list-infinite-table.tsx index e9ba3c0ec..992b47fa1 100644 --- a/src/renderer/features/songs/components/song-list-infinite-table.tsx +++ b/src/renderer/features/songs/components/song-list-infinite-table.tsx @@ -1,5 +1,4 @@ import { UseSuspenseQueryOptions } from '@tanstack/react-query'; -import { forwardRef } from 'react'; import { api } from '/@/renderer/api'; import { useItemListInfiniteLoader } from '/@/renderer/components/item-list/helpers/item-list-infinite-loader'; @@ -15,80 +14,74 @@ import { ItemListKey } from '/@/shared/types/types'; interface SongListInfiniteTableProps extends ItemListTableComponentProps {} -export const SongListInfiniteTable = forwardRef( - ( - { - autoFitColumns = false, - columns, - enableAlternateRowColors = false, - enableHorizontalBorders = false, - enableRowHoverHighlight = true, - enableSelection = true, - enableVerticalBorders = false, - itemsPerPage = 100, - query = { - sortBy: SongListSort.NAME, - sortOrder: SortOrder.ASC, - }, - saveScrollOffset = true, - serverId, - size = 'default', - }, - ref, - ) => { - const listCountQuery = songsQueries.listCount({ - query: { ...query }, - serverId: serverId, - }) as UseSuspenseQueryOptions; - - const listQueryFn = api.controller.getSongList; - - const { data, onRangeChanged } = useItemListInfiniteLoader({ - eventKey: ItemListKey.SONG, - itemsPerPage, - itemType: LibraryItem.SONG, - listCountQuery, - listQueryFn, - query, - serverId, - }); - - const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ - enabled: saveScrollOffset, - }); - - const { handleColumnReordered } = useItemListColumnReorder({ - itemListKey: ItemListKey.SONG, - }); - - const { handleColumnResized } = useItemListColumnResize({ - itemListKey: ItemListKey.SONG, - }); - - return ( - - ); +export const SongListInfiniteTable = ({ + autoFitColumns = false, + columns, + enableAlternateRowColors = false, + enableHorizontalBorders = false, + enableRowHoverHighlight = true, + enableSelection = true, + enableVerticalBorders = false, + itemsPerPage = 100, + query = { + sortBy: SongListSort.NAME, + sortOrder: SortOrder.ASC, }, -); + saveScrollOffset = true, + serverId, + size = 'default', +}: SongListInfiniteTableProps) => { + const listCountQuery = songsQueries.listCount({ + query: { ...query }, + serverId: serverId, + }) as UseSuspenseQueryOptions; + + const listQueryFn = api.controller.getSongList; + + const { data, onRangeChanged } = useItemListInfiniteLoader({ + eventKey: ItemListKey.SONG, + itemsPerPage, + itemType: LibraryItem.SONG, + listCountQuery, + listQueryFn, + query, + serverId, + }); + + const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ + enabled: saveScrollOffset, + }); + + const { handleColumnReordered } = useItemListColumnReorder({ + itemListKey: ItemListKey.SONG, + }); + + const { handleColumnResized } = useItemListColumnResize({ + itemListKey: ItemListKey.SONG, + }); + + return ( + + ); +}; diff --git a/src/renderer/features/songs/components/song-list-paginated-grid.tsx b/src/renderer/features/songs/components/song-list-paginated-grid.tsx index 73529a669..9051fd0fe 100644 --- a/src/renderer/features/songs/components/song-list-paginated-grid.tsx +++ b/src/renderer/features/songs/components/song-list-paginated-grid.tsx @@ -1,5 +1,4 @@ import { UseSuspenseQueryOptions } from '@tanstack/react-query'; -import { forwardRef } from 'react'; import { api } from '/@/renderer/api'; import { useItemListPaginatedLoader } from '/@/renderer/components/item-list/helpers/item-list-paginated-loader'; @@ -14,60 +13,54 @@ import { ItemListKey } from '/@/shared/types/types'; interface SongListPaginatedGridProps extends ItemListGridComponentProps {} -export const SongListPaginatedGrid = forwardRef( - ( - { - gap = 'md', - itemsPerPage = 100, - itemsPerRow, - query = { - sortBy: SongListSort.NAME, - sortOrder: SortOrder.ASC, - }, - serverId, - }, - ref, - ) => { - const listCountQuery = songsQueries.listCount({ - query: { ...query }, - serverId: serverId, - }) as UseSuspenseQueryOptions; - - const listQueryFn = api.controller.getSongList; - - const { currentPage, onChange } = useItemListPagination(); - - const { data, pageCount, totalItemCount } = useItemListPaginatedLoader({ - currentPage, - eventKey: ItemListKey.SONG, - itemsPerPage, - itemType: LibraryItem.SONG, - listCountQuery, - listQueryFn, - query, - serverId, - }); - - const rows = useGridRows(LibraryItem.SONG, ItemListKey.SONG); - - return ( - - - - ); +export const SongListPaginatedGrid = ({ + gap = 'md', + itemsPerPage = 100, + itemsPerRow, + query = { + sortBy: SongListSort.NAME, + sortOrder: SortOrder.ASC, }, -); + serverId, +}: SongListPaginatedGridProps) => { + const listCountQuery = songsQueries.listCount({ + query: { ...query }, + serverId: serverId, + }) as UseSuspenseQueryOptions; + + const listQueryFn = api.controller.getSongList; + + const { currentPage, onChange } = useItemListPagination(); + + const { data, pageCount, totalItemCount } = useItemListPaginatedLoader({ + currentPage, + eventKey: ItemListKey.SONG, + itemsPerPage, + itemType: LibraryItem.SONG, + listCountQuery, + listQueryFn, + query, + serverId, + }); + + const rows = useGridRows(LibraryItem.SONG, ItemListKey.SONG); + + return ( + + + + ); +}; diff --git a/src/renderer/features/songs/components/song-list-paginated-table.tsx b/src/renderer/features/songs/components/song-list-paginated-table.tsx index a7186ddba..58db85b18 100644 --- a/src/renderer/features/songs/components/song-list-paginated-table.tsx +++ b/src/renderer/features/songs/components/song-list-paginated-table.tsx @@ -1,5 +1,4 @@ import { UseSuspenseQueryOptions } from '@tanstack/react-query'; -import { forwardRef } from 'react'; import { api } from '/@/renderer/api'; import { useItemListPaginatedLoader } from '/@/renderer/components/item-list/helpers/item-list-paginated-loader'; @@ -17,93 +16,87 @@ import { ItemListKey } from '/@/shared/types/types'; interface SongListPaginatedTableProps extends ItemListTableComponentProps {} -export const SongListPaginatedTable = forwardRef( - ( - { - autoFitColumns = false, - columns, - enableAlternateRowColors = false, - enableHorizontalBorders = false, - enableRowHoverHighlight = true, - enableSelection = true, - enableVerticalBorders = false, - itemsPerPage = 100, - query = { - sortBy: SongListSort.NAME, - sortOrder: SortOrder.ASC, - }, - saveScrollOffset = true, - serverId, - size = 'default', - }, - ref, - ) => { - const listCountQuery = songsQueries.listCount({ - query: { ...query }, - serverId: serverId, - }) as UseSuspenseQueryOptions; - - const listQueryFn = api.controller.getSongList; - - const { currentPage, onChange } = useItemListPagination(); - - const { data, pageCount, totalItemCount } = useItemListPaginatedLoader({ - currentPage, - eventKey: ItemListKey.SONG, - itemsPerPage, - itemType: LibraryItem.SONG, - listCountQuery, - listQueryFn, - query, - serverId, - }); - - const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ - enabled: saveScrollOffset, - }); - - const { handleColumnReordered } = useItemListColumnReorder({ - itemListKey: ItemListKey.SONG, - }); - - const { handleColumnResized } = useItemListColumnResize({ - itemListKey: ItemListKey.SONG, - }); - - const startRowIndex = currentPage * itemsPerPage; - - return ( - - - - ); +export const SongListPaginatedTable = ({ + autoFitColumns = false, + columns, + enableAlternateRowColors = false, + enableHorizontalBorders = false, + enableRowHoverHighlight = true, + enableSelection = true, + enableVerticalBorders = false, + itemsPerPage = 100, + query = { + sortBy: SongListSort.NAME, + sortOrder: SortOrder.ASC, }, -); + saveScrollOffset = true, + serverId, + size = 'default', +}: SongListPaginatedTableProps) => { + const listCountQuery = songsQueries.listCount({ + query: { ...query }, + serverId: serverId, + }) as UseSuspenseQueryOptions; + + const listQueryFn = api.controller.getSongList; + + const { currentPage, onChange } = useItemListPagination(); + + const { data, pageCount, totalItemCount } = useItemListPaginatedLoader({ + currentPage, + eventKey: ItemListKey.SONG, + itemsPerPage, + itemType: LibraryItem.SONG, + listCountQuery, + listQueryFn, + query, + serverId, + }); + + const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({ + enabled: saveScrollOffset, + }); + + const { handleColumnReordered } = useItemListColumnReorder({ + itemListKey: ItemListKey.SONG, + }); + + const { handleColumnResized } = useItemListColumnResize({ + itemListKey: ItemListKey.SONG, + }); + + const startRowIndex = currentPage * itemsPerPage; + + return ( + + + + ); +};