mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-09 20:29:36 +02:00
optimize list content pages with sidebar to prevent extra rerender on config change
This commit is contained in:
@@ -34,29 +34,41 @@ const AlbumListPaginatedTable = lazy(() =>
|
|||||||
})),
|
})),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const AlbumListFilters = () => {
|
||||||
|
return (
|
||||||
|
<ListWithSidebarContainer.SidebarPortal>
|
||||||
|
<ScrollArea>
|
||||||
|
<ListFilters itemType={LibraryItem.ALBUM} />
|
||||||
|
</ScrollArea>
|
||||||
|
</ListWithSidebarContainer.SidebarPortal>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
export const AlbumListContent = () => {
|
export const AlbumListContent = () => {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<AlbumListFilters />
|
||||||
|
<AlbumListSuspenseContainer />
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const AlbumListSuspenseContainer = () => {
|
||||||
const { display, grid, itemsPerPage, pagination, table } = useListSettings(ItemListKey.ALBUM);
|
const { display, grid, itemsPerPage, pagination, table } = useListSettings(ItemListKey.ALBUM);
|
||||||
|
|
||||||
const { customFilters } = useListContext();
|
const { customFilters } = useListContext();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<Suspense fallback={<Spinner container />}>
|
||||||
<ListWithSidebarContainer.SidebarPortal>
|
<AlbumListView
|
||||||
<ScrollArea>
|
display={display}
|
||||||
<ListFilters itemType={LibraryItem.ALBUM} />
|
grid={grid}
|
||||||
</ScrollArea>
|
itemsPerPage={itemsPerPage}
|
||||||
</ListWithSidebarContainer.SidebarPortal>
|
overrideQuery={customFilters}
|
||||||
<Suspense fallback={<Spinner container />}>
|
pagination={pagination}
|
||||||
<AlbumListView
|
table={table}
|
||||||
display={display}
|
/>
|
||||||
grid={grid}
|
</Suspense>
|
||||||
itemsPerPage={itemsPerPage}
|
|
||||||
overrideQuery={customFilters}
|
|
||||||
pagination={pagination}
|
|
||||||
table={table}
|
|
||||||
/>
|
|
||||||
</Suspense>
|
|
||||||
</>
|
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -32,28 +32,40 @@ const SongListPaginatedTable = lazy(() =>
|
|||||||
);
|
);
|
||||||
|
|
||||||
export const SongListContent = () => {
|
export const SongListContent = () => {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<SongListFilters />
|
||||||
|
<SongListSuspenseContainer />
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const SongListFilters = () => {
|
||||||
|
return (
|
||||||
|
<ListWithSidebarContainer.SidebarPortal>
|
||||||
|
<ScrollArea>
|
||||||
|
<ListFilters itemType={LibraryItem.SONG} />
|
||||||
|
</ScrollArea>
|
||||||
|
</ListWithSidebarContainer.SidebarPortal>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const SongListSuspenseContainer = () => {
|
||||||
const { display, grid, itemsPerPage, pagination, table } = useListSettings(ItemListKey.SONG);
|
const { display, grid, itemsPerPage, pagination, table } = useListSettings(ItemListKey.SONG);
|
||||||
|
|
||||||
const { customFilters } = useListContext();
|
const { customFilters } = useListContext();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<Suspense fallback={<Spinner container />}>
|
||||||
<ListWithSidebarContainer.SidebarPortal>
|
<SongListView
|
||||||
<ScrollArea>
|
display={display}
|
||||||
<ListFilters itemType={LibraryItem.SONG} />
|
grid={grid}
|
||||||
</ScrollArea>
|
itemsPerPage={itemsPerPage}
|
||||||
</ListWithSidebarContainer.SidebarPortal>
|
overrideQuery={customFilters}
|
||||||
<Suspense fallback={<Spinner container />}>
|
pagination={pagination}
|
||||||
<SongListView
|
table={table}
|
||||||
display={display}
|
/>
|
||||||
grid={grid}
|
</Suspense>
|
||||||
itemsPerPage={itemsPerPage}
|
|
||||||
overrideQuery={customFilters}
|
|
||||||
pagination={pagination}
|
|
||||||
table={table}
|
|
||||||
/>
|
|
||||||
</Suspense>
|
|
||||||
</>
|
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user