2019-08-21 14:30:56 +00:00
|
|
|
import { configurationMenuUrl } from "@saleor/configuration";
|
|
|
|
import useListSettings from "@saleor/hooks/useListSettings";
|
|
|
|
import useNavigator from "@saleor/hooks/useNavigator";
|
|
|
|
import usePaginator, {
|
|
|
|
createPaginationState
|
|
|
|
} from "@saleor/hooks/usePaginator";
|
2019-08-27 12:36:19 +00:00
|
|
|
import { maybe } from "@saleor/misc";
|
2019-08-21 14:30:56 +00:00
|
|
|
import { ListViews } from "@saleor/types";
|
2019-08-27 12:36:19 +00:00
|
|
|
import React from "react";
|
2019-08-30 13:10:07 +00:00
|
|
|
|
2019-08-21 14:30:56 +00:00
|
|
|
import PluginsListPage from "../components/PluginsListPage/PluginsListPage";
|
|
|
|
import { TypedPluginsListQuery } from "../queries";
|
2019-08-27 12:36:19 +00:00
|
|
|
import { PluginsListUrlQueryParams, pluginsUrl } from "../urls";
|
2019-08-21 14:30:56 +00:00
|
|
|
|
|
|
|
interface PluginsListProps {
|
|
|
|
params: PluginsListUrlQueryParams;
|
|
|
|
}
|
|
|
|
|
|
|
|
export const PluginsList: React.StatelessComponent<PluginsListProps> = ({
|
|
|
|
params
|
|
|
|
}) => {
|
|
|
|
const navigate = useNavigator();
|
|
|
|
const paginate = usePaginator();
|
|
|
|
const { updateListSettings, settings } = useListSettings(
|
2019-08-27 12:36:19 +00:00
|
|
|
ListViews.PLUGINS_LIST
|
2019-08-21 14:30:56 +00:00
|
|
|
);
|
|
|
|
const paginationState = createPaginationState(settings.rowNumber, params);
|
|
|
|
|
|
|
|
return (
|
|
|
|
<TypedPluginsListQuery displayLoader variables={paginationState}>
|
2019-08-27 12:36:19 +00:00
|
|
|
{({ data, loading }) => {
|
2019-08-21 14:30:56 +00:00
|
|
|
const { loadNextPage, loadPreviousPage, pageInfo } = paginate(
|
2019-08-28 14:53:57 +00:00
|
|
|
maybe(() => data.plugins.pageInfo),
|
2019-08-21 14:30:56 +00:00
|
|
|
paginationState,
|
|
|
|
params
|
|
|
|
);
|
|
|
|
return (
|
|
|
|
<>
|
|
|
|
<PluginsListPage
|
|
|
|
disabled={loading}
|
|
|
|
settings={settings}
|
2019-08-28 14:53:57 +00:00
|
|
|
plugins={maybe(() => data.plugins.edges.map(edge => edge.node))}
|
2019-08-21 14:30:56 +00:00
|
|
|
pageInfo={pageInfo}
|
2019-08-27 12:36:19 +00:00
|
|
|
onAdd={() => navigate(configurationMenuUrl)}
|
2019-08-21 14:30:56 +00:00
|
|
|
onBack={() => navigate(configurationMenuUrl)}
|
|
|
|
onNextPage={loadNextPage}
|
|
|
|
onPreviousPage={loadPreviousPage}
|
|
|
|
onUpdateListSettings={updateListSettings}
|
|
|
|
onRowClick={id => () => navigate(pluginsUrl(id))}
|
|
|
|
/>
|
|
|
|
</>
|
|
|
|
);
|
|
|
|
}}
|
|
|
|
</TypedPluginsListQuery>
|
|
|
|
);
|
|
|
|
};
|
|
|
|
|
|
|
|
export default PluginsList;
|