From 90b503906fd2fe2f709691b4938410c4f84dde2b Mon Sep 17 00:00:00 2001 From: jeffvli Date: Mon, 3 Apr 2023 03:42:51 -0700 Subject: [PATCH] Set grid view to use local state --- .../virtual-grid/virtual-infinite-grid.tsx | 16 +++++++++++----- .../albums/components/album-list-content.tsx | 6 ------ .../components/album-artist-list-content.tsx | 10 +--------- 3 files changed, 12 insertions(+), 20 deletions(-) diff --git a/src/renderer/components/virtual-grid/virtual-infinite-grid.tsx b/src/renderer/components/virtual-grid/virtual-infinite-grid.tsx index fae1632e..c554ef05 100644 --- a/src/renderer/components/virtual-grid/virtual-infinite-grid.tsx +++ b/src/renderer/components/virtual-grid/virtual-infinite-grid.tsx @@ -1,4 +1,12 @@ -import { useRef, useMemo, useCallback, forwardRef, Ref, useImperativeHandle } from 'react'; +import { + useState, + useRef, + useMemo, + useCallback, + forwardRef, + Ref, + useImperativeHandle, +} from 'react'; import debounce from 'lodash/debounce'; import type { FixedSizeListProps } from 'react-window'; import InfiniteLoader from 'react-window-infinite-loader'; @@ -19,14 +27,12 @@ interface VirtualGridProps extends Omit Promise; handleFavorite?: (options: { id: string[]; isFavorite: boolean; itemType: LibraryItem }) => void; handlePlayQueueAdd?: (options: PlayQueueAddOptions) => void; - itemData: any[]; itemGap: number; itemSize: number; itemType: LibraryItem; loading?: boolean; minimumBatchSize?: number; route?: CardRoute; - setItemData: (data: any[]) => void; } export const VirtualInfiniteGrid = forwardRef( @@ -37,8 +43,6 @@ export const VirtualInfiniteGrid = forwardRef( itemSize, itemType, cardRows, - itemData, - setItemData, route, onScroll, display, @@ -56,6 +60,8 @@ export const VirtualInfiniteGrid = forwardRef( const listRef = useRef(null); const loader = useRef(null); + const [itemData, setItemData] = useState([]); + const { itemHeight, rowCount, columnCount } = useMemo(() => { const itemsPerRow = itemSize; const widthPerItem = Number(width) / itemsPerRow; diff --git a/src/renderer/features/albums/components/album-list-content.tsx b/src/renderer/features/albums/components/album-list-content.tsx index d89889fb..4e092d1b 100644 --- a/src/renderer/features/albums/components/album-list-content.tsx +++ b/src/renderer/features/albums/components/album-list-content.tsx @@ -20,7 +20,6 @@ import { useQueryClient } from '@tanstack/react-query'; import { useCurrentServer, useAlbumListStore, - useAlbumListItemData, useListStoreActions, useAlbumListFilter, } from '/@/renderer/store'; @@ -53,9 +52,6 @@ export const AlbumListContent = ({ itemCount, gridRef, tableRef }: AlbumListCont const navigate = useNavigate(); const server = useCurrentServer(); const handlePlayQueueAdd = usePlayQueueAdd(); - - const { itemData, setItemData } = useAlbumListItemData(); - const { id, pageKey } = useAlbumListContext(); const filter = useAlbumListFilter({ id, key: pageKey }); const { setTable, setTablePagination, setGrid } = useListStoreActions(); @@ -316,7 +312,6 @@ export const AlbumListContent = ({ itemCount, gridRef, tableRef }: AlbumListCont height={height} initialScrollOffset={grid?.scrollOffset || 0} itemCount={itemCount || 0} - itemData={itemData} itemGap={20} itemSize={grid?.itemsPerRow || 5} itemType={LibraryItem.ALBUM} @@ -326,7 +321,6 @@ export const AlbumListContent = ({ itemCount, gridRef, tableRef }: AlbumListCont route: AppRoute.LIBRARY_ALBUMS_DETAIL, slugs: [{ idProperty: 'id', slugProperty: 'albumId' }], }} - setItemData={setItemData} width={width} onScroll={handleGridScroll} /> diff --git a/src/renderer/features/artists/components/album-artist-list-content.tsx b/src/renderer/features/artists/components/album-artist-list-content.tsx index b600a2fc..2bfb4688 100644 --- a/src/renderer/features/artists/components/album-artist-list-content.tsx +++ b/src/renderer/features/artists/components/album-artist-list-content.tsx @@ -16,11 +16,7 @@ import { api } from '/@/renderer/api'; import { queryKeys } from '/@/renderer/api/query-keys'; import { AlbumArtist, AlbumArtistListSort, LibraryItem } from '/@/renderer/api/types'; import { useQueryClient } from '@tanstack/react-query'; -import { - useCurrentServer, - useAlbumArtistListStore, - useAlbumArtistListItemData, -} from '/@/renderer/store'; +import { useCurrentServer, useAlbumArtistListStore } from '/@/renderer/store'; import type { AgGridReact as AgGridReactType } from '@ag-grid-community/react/lib/agGridReact'; import { BodyScrollEvent, @@ -55,7 +51,6 @@ export const AlbumArtistListContent = ({ gridRef, tableRef }: AlbumArtistListCon const filter = useAlbumArtistListFilter({ id, key: pageKey }); const { table, grid, display } = useAlbumArtistListStore(); const { setTable, setTablePagination, setGrid } = useListStoreActions(); - const { itemData, setItemData } = useAlbumArtistListItemData(); const isPaginationEnabled = display === ListDisplayType.TABLE_PAGINATED; @@ -265,7 +260,6 @@ export const AlbumArtistListContent = ({ gridRef, tableRef }: AlbumArtistListCon {({ height, width }) => (