import { configurationMenuUrl } from "@saleor/configuration"; import useBulkActions from "@saleor/hooks/useBulkActions"; import useListSettings from "@saleor/hooks/useListSettings"; import useNavigator from "@saleor/hooks/useNavigator"; import usePaginator, { createPaginationState } from "@saleor/hooks/usePaginator"; import { maybe } from "@saleor/misc"; import { ListViews } from "@saleor/types"; import React from "react"; import PluginsListPage from "../components/PluginsListPage/PluginsListPage"; import { TypedPluginsListQuery } from "../queries"; import { PluginsListUrlQueryParams, pluginsUrl } from "../urls"; interface PluginsListProps { params: PluginsListUrlQueryParams; } export const PluginsList: React.StatelessComponent = ({ params }) => { const navigate = useNavigator(); const paginate = usePaginator(); const { isSelected, listElements, toggle, toggleAll } = useBulkActions( params.ids ); const { updateListSettings, settings } = useListSettings( ListViews.PLUGINS_LIST ); const paginationState = createPaginationState(settings.rowNumber, params); return ( {({ data, loading }) => { const { loadNextPage, loadPreviousPage, pageInfo } = paginate( maybe(() => data.pluginConfigurations.pageInfo), paginationState, params ); return ( <> data.pluginConfigurations.edges.map(edge => edge.node) )} pageInfo={pageInfo} onAdd={() => navigate(configurationMenuUrl)} onBack={() => navigate(configurationMenuUrl)} onNextPage={loadNextPage} onPreviousPage={loadPreviousPage} onUpdateListSettings={updateListSettings} onRowClick={id => () => navigate(pluginsUrl(id))} isChecked={isSelected} selected={listElements.length} toggle={toggle} toggleAll={toggleAll} /> ); }} ); }; export default PluginsList;