optimize list content pages with sidebar to prevent extra rerender on config change

This commit is contained in:
jeffvli
2025-12-01 17:52:49 -08:00
parent 7db0b59895
commit 84b464090c
2 changed files with 58 additions and 34 deletions
@@ -34,18 +34,31 @@ const AlbumListPaginatedTable = lazy(() =>
})), })),
); );
export const AlbumListContent = () => { const AlbumListFilters = () => {
const { display, grid, itemsPerPage, pagination, table } = useListSettings(ItemListKey.ALBUM);
const { customFilters } = useListContext();
return ( return (
<>
<ListWithSidebarContainer.SidebarPortal> <ListWithSidebarContainer.SidebarPortal>
<ScrollArea> <ScrollArea>
<ListFilters itemType={LibraryItem.ALBUM} /> <ListFilters itemType={LibraryItem.ALBUM} />
</ScrollArea> </ScrollArea>
</ListWithSidebarContainer.SidebarPortal> </ListWithSidebarContainer.SidebarPortal>
);
};
export const AlbumListContent = () => {
return (
<>
<AlbumListFilters />
<AlbumListSuspenseContainer />
</>
);
};
const AlbumListSuspenseContainer = () => {
const { display, grid, itemsPerPage, pagination, table } = useListSettings(ItemListKey.ALBUM);
const { customFilters } = useListContext();
return (
<Suspense fallback={<Spinner container />}> <Suspense fallback={<Spinner container />}>
<AlbumListView <AlbumListView
display={display} display={display}
@@ -56,7 +69,6 @@ export const AlbumListContent = () => {
table={table} table={table}
/> />
</Suspense> </Suspense>
</>
); );
}; };
@@ -32,17 +32,30 @@ const SongListPaginatedTable = lazy(() =>
); );
export const SongListContent = () => { export const SongListContent = () => {
const { display, grid, itemsPerPage, pagination, table } = useListSettings(ItemListKey.SONG);
const { customFilters } = useListContext();
return ( return (
<> <>
<SongListFilters />
<SongListSuspenseContainer />
</>
);
};
const SongListFilters = () => {
return (
<ListWithSidebarContainer.SidebarPortal> <ListWithSidebarContainer.SidebarPortal>
<ScrollArea> <ScrollArea>
<ListFilters itemType={LibraryItem.SONG} /> <ListFilters itemType={LibraryItem.SONG} />
</ScrollArea> </ScrollArea>
</ListWithSidebarContainer.SidebarPortal> </ListWithSidebarContainer.SidebarPortal>
);
};
const SongListSuspenseContainer = () => {
const { display, grid, itemsPerPage, pagination, table } = useListSettings(ItemListKey.SONG);
const { customFilters } = useListContext();
return (
<Suspense fallback={<Spinner container />}> <Suspense fallback={<Spinner container />}>
<SongListView <SongListView
display={display} display={display}
@@ -53,7 +66,6 @@ export const SongListContent = () => {
table={table} table={table}
/> />
</Suspense> </Suspense>
</>
); );
}; };