Use generic handlers

This commit is contained in:
dominik-zeglen 2020-01-09 14:45:22 +01:00
parent a7304dabb0
commit be649e32ea
10 changed files with 120 additions and 301 deletions

View file

@ -23,9 +23,8 @@ import { ListViews } from "@saleor/types";
import { getSortParams } from "@saleor/utils/sort";
import createSortHandler from "@saleor/utils/handlers/sortHandler";
import createDialogActionHandlers from "@saleor/utils/handlers/dialogActionHandlers";
import { IFilter } from "@saleor/components/Filter";
import { getFilterQueryParams } from "@saleor/utils/filters";
import useShop from "@saleor/hooks/useShop";
import createFilterHandlers from "@saleor/utils/handlers/filterHandlers";
import CollectionListPage from "../../components/CollectionListPage/CollectionListPage";
import {
TypedCollectionBulkDelete,
@ -48,7 +47,6 @@ import {
getFilterTabs,
getFilterVariables,
saveFilterTab,
CollectionFilterKeys,
getFilterQueryParam,
getFilterOpts
} from "./filter";
@ -94,37 +92,17 @@ export const CollectionList: React.FC<CollectionListProps> = ({ params }) => {
: 0
: parseInt(params.activeTab, 0);
const changeFilters = (filter: IFilter<CollectionFilterKeys>) => {
reset();
navigate(
collectionListUrl({
...params,
...getFilterQueryParams(filter, getFilterQueryParam),
activeTab: undefined
})
);
};
const resetFilters = () => {
reset();
navigate(
collectionListUrl({
asc: params.asc,
sort: params.sort
})
);
};
const handleSearchChange = (query: string) => {
reset();
navigate(
collectionListUrl({
...params,
activeTab: undefined,
query
})
);
};
const [
changeFilters,
resetFilters,
handleSearchChange
] = createFilterHandlers({
cleanupFn: reset,
createUrl: collectionListUrl,
getFilterQueryParam,
navigate,
params
});
const [openModal, closeModal] = createDialogActionHandlers<
CollectionListUrlDialog,

View file

@ -22,9 +22,8 @@ import { ListViews } from "@saleor/types";
import { getSortParams } from "@saleor/utils/sort";
import createSortHandler from "@saleor/utils/handlers/sortHandler";
import createDialogActionHandlers from "@saleor/utils/handlers/dialogActionHandlers";
import { IFilter } from "@saleor/components/Filter";
import { getFilterQueryParams } from "@saleor/utils/filters";
import useShop from "@saleor/hooks/useShop";
import createFilterHandlers from "@saleor/utils/handlers/filterHandlers";
import CustomerListPage from "../../components/CustomerListPage";
import { TypedBulkRemoveCustomers } from "../../mutations";
import { useCustomerListQuery } from "../../queries";
@ -43,7 +42,6 @@ import {
getFilterTabs,
getFilterVariables,
saveFilterTab,
CustomerFilterKeys,
getFilterQueryParam,
getFilterOpts
} from "./filter";
@ -89,37 +87,17 @@ export const CustomerList: React.FC<CustomerListProps> = ({ params }) => {
: 0
: parseInt(params.activeTab, 0);
const changeFilters = (filter: IFilter<CustomerFilterKeys>) => {
reset();
navigate(
customerListUrl({
...params,
...getFilterQueryParams(filter, getFilterQueryParam),
activeTab: undefined
})
);
};
const resetFilters = () => {
reset();
navigate(
customerListUrl({
asc: params.asc,
sort: params.sort
})
);
};
const handleSearchChange = (query: string) => {
reset();
navigate(
customerListUrl({
...params,
activeTab: undefined,
query
})
);
};
const [
changeFilters,
resetFilters,
handleSearchChange
] = createFilterHandlers({
cleanupFn: reset,
createUrl: customerListUrl,
getFilterQueryParam,
navigate,
params
});
const [openModal, closeModal] = createDialogActionHandlers<
CustomerListUrlDialog,

View file

@ -24,8 +24,7 @@ import { ListViews } from "@saleor/types";
import { getSortParams } from "@saleor/utils/sort";
import createSortHandler from "@saleor/utils/handlers/sortHandler";
import createDialogActionHandlers from "@saleor/utils/handlers/dialogActionHandlers";
import { IFilter } from "@saleor/components/Filter";
import { getFilterQueryParams } from "@saleor/utils/filters";
import createFilterHandlers from "@saleor/utils/handlers/filterHandlers";
import SaleListPage from "../../components/SaleListPage";
import { TypedSaleBulkDelete } from "../../mutations";
import { useSaleListQuery } from "../../queries";
@ -44,7 +43,6 @@ import {
getFilterTabs,
getFilterVariables,
saveFilterTab,
SaleFilterKeys,
getFilterQueryParam,
getFilterOpts
} from "./filter";
@ -90,37 +88,17 @@ export const SaleList: React.FC<SaleListProps> = ({ params }) => {
: 0
: parseInt(params.activeTab, 0);
const changeFilters = (filter: IFilter<SaleFilterKeys>) => {
reset();
navigate(
saleListUrl({
...params,
...getFilterQueryParams(filter, getFilterQueryParam),
activeTab: undefined
})
);
};
const resetFilters = () => {
reset();
navigate(
saleListUrl({
asc: params.asc,
sort: params.sort
})
);
};
const handleSearchChange = (query: string) => {
reset();
navigate(
saleListUrl({
...params,
activeTab: undefined,
query
})
);
};
const [
changeFilters,
resetFilters,
handleSearchChange
] = createFilterHandlers({
cleanupFn: reset,
createUrl: saleListUrl,
getFilterQueryParam,
navigate,
params
});
const [openModal, closeModal] = createDialogActionHandlers<
SaleListUrlDialog,

View file

@ -26,6 +26,7 @@ import createSortHandler from "@saleor/utils/handlers/sortHandler";
import createDialogActionHandlers from "@saleor/utils/handlers/dialogActionHandlers";
import { getFilterQueryParams } from "@saleor/utils/filters";
import { IFilter } from "@saleor/components/Filter";
import createFilterHandlers from "@saleor/utils/handlers/filterHandlers";
import VoucherListPage from "../../components/VoucherListPage";
import { TypedVoucherBulkDelete } from "../../mutations";
import { useVoucherListQuery } from "../../queries";
@ -90,37 +91,17 @@ export const VoucherList: React.FC<VoucherListProps> = ({ params }) => {
: 0
: parseInt(params.activeTab, 0);
const changeFilters = (filter: IFilter<VoucherFilterKeys>) => {
reset();
navigate(
voucherListUrl({
...params,
...getFilterQueryParams(filter, getFilterQueryParam),
activeTab: undefined
})
);
};
const resetFilters = () => {
reset();
navigate(
voucherListUrl({
asc: params.asc,
sort: params.sort
})
);
};
const handleSearchChange = (query: string) => {
reset();
navigate(
voucherListUrl({
...params,
activeTab: undefined,
query
})
);
};
const [
changeFilters,
resetFilters,
handleSearchChange
] = createFilterHandlers({
cleanupFn: reset,
createUrl: voucherListUrl,
getFilterQueryParam,
navigate,
params
});
const [openModal, closeModal] = createDialogActionHandlers<
VoucherListUrlDialog,

View file

@ -21,9 +21,8 @@ import { ListViews } from "@saleor/types";
import createSortHandler from "@saleor/utils/handlers/sortHandler";
import { getSortParams } from "@saleor/utils/sort";
import createDialogActionHandlers from "@saleor/utils/handlers/dialogActionHandlers";
import { getFilterQueryParams } from "@saleor/utils/filters";
import { IFilter } from "@saleor/components/Filter";
import useShop from "@saleor/hooks/useShop";
import createFilterHandlers from "@saleor/utils/handlers/filterHandlers";
import OrderDraftListPage from "../../components/OrderDraftListPage";
import {
TypedOrderDraftBulkCancelMutation,
@ -46,7 +45,6 @@ import {
getFilterVariables,
saveFilterTab,
getFilterQueryParam,
OrderDraftFilterKeys,
getFilterOpts
} from "./filter";
import { getSortQueryVariables } from "./sort";
@ -90,37 +88,17 @@ export const OrderDraftList: React.FC<OrderDraftListProps> = ({ params }) => {
: 0
: parseInt(params.activeTab, 0);
const changeFilters = (filter: IFilter<OrderDraftFilterKeys>) => {
reset();
navigate(
orderDraftListUrl({
...params,
...getFilterQueryParams(filter, getFilterQueryParam),
activeTab: undefined
})
);
};
const resetFilters = () => {
reset();
navigate(
orderDraftListUrl({
asc: params.asc,
sort: params.sort
})
);
};
const handleSearchChange = (query: string) => {
reset();
navigate(
orderDraftListUrl({
...params,
activeTab: undefined,
query
})
);
};
const [
changeFilters,
resetFilters,
handleSearchChange
] = createFilterHandlers({
cleanupFn: reset,
createUrl: orderDraftListUrl,
getFilterQueryParam,
navigate,
params
});
const [openModal, closeModal] = createDialogActionHandlers<
OrderDraftListUrlDialog,

View file

@ -19,8 +19,7 @@ import { ListViews } from "@saleor/types";
import createSortHandler from "@saleor/utils/handlers/sortHandler";
import { getSortParams } from "@saleor/utils/sort";
import createDialogActionHandlers from "@saleor/utils/handlers/dialogActionHandlers";
import { IFilter } from "@saleor/components/Filter";
import { getFilterQueryParams } from "@saleor/utils/filters";
import createFilterHandlers from "@saleor/utils/handlers/filterHandlers";
import OrderBulkCancelDialog from "../../components/OrderBulkCancelDialog";
import OrderListPage from "../../components/OrderListPage/OrderListPage";
import {
@ -44,7 +43,6 @@ import {
getFilterOpts,
getFilterVariables,
saveFilterTab,
OrderFilterKeys,
getFilterQueryParam
} from "./filters";
import { getSortQueryVariables } from "./sort";
@ -88,37 +86,17 @@ export const OrderList: React.FC<OrderListProps> = ({ params }) => {
: 0
: parseInt(params.activeTab, 0);
const changeFilters = (filter: IFilter<OrderFilterKeys>) => {
reset();
navigate(
orderListUrl({
...params,
...getFilterQueryParams(filter, getFilterQueryParam),
activeTab: undefined
})
);
};
const resetFilters = () => {
reset();
navigate(
orderListUrl({
asc: params.asc,
sort: params.sort
})
);
};
const handleSearchChange = (query: string) => {
reset();
navigate(
orderListUrl({
...params,
activeTab: undefined,
query
})
);
};
const [
changeFilters,
resetFilters,
handleSearchChange
] = createFilterHandlers({
cleanupFn: reset,
createUrl: orderListUrl,
getFilterQueryParam,
navigate,
params
});
const [openModal, closeModal] = createDialogActionHandlers<
OrderListUrlDialog,

View file

@ -21,9 +21,8 @@ import { ListViews } from "@saleor/types";
import { getSortParams } from "@saleor/utils/sort";
import createSortHandler from "@saleor/utils/handlers/sortHandler";
import createDialogActionHandlers from "@saleor/utils/handlers/dialogActionHandlers";
import { IFilter } from "@saleor/components/Filter";
import { getFilterQueryParams } from "@saleor/utils/filters";
import useShop from "@saleor/hooks/useShop";
import createFilterHandlers from "@saleor/utils/handlers/filterHandlers";
import { configurationMenuUrl } from "../../../configuration";
import { maybe } from "../../../misc";
import ProductTypeListPage from "../../components/ProductTypeListPage";
@ -44,7 +43,6 @@ import {
getFilterTabs,
getFilterVariables,
saveFilterTab,
ProductTypeFilterKeys,
getFilterQueryParam,
getFilterOpts
} from "./filter";
@ -88,37 +86,17 @@ export const ProductTypeList: React.FC<ProductTypeListProps> = ({ params }) => {
: 0
: parseInt(params.activeTab, 0);
const changeFilters = (filter: IFilter<ProductTypeFilterKeys>) => {
reset();
navigate(
productTypeListUrl({
...params,
...getFilterQueryParams(filter, getFilterQueryParam),
activeTab: undefined
})
);
};
const resetFilters = () => {
reset();
navigate(
productTypeListUrl({
asc: params.asc,
sort: params.sort
})
);
};
const handleSearchChange = (query: string) => {
reset();
navigate(
productTypeListUrl({
...params,
activeTab: undefined,
query
})
);
};
const [
changeFilters,
resetFilters,
handleSearchChange
] = createFilterHandlers({
cleanupFn: reset,
createUrl: productTypeListUrl,
getFilterQueryParam,
navigate,
params
});
const [openModal, closeModal] = createDialogActionHandlers<
ProductTypeListUrlDialog,

View file

@ -25,8 +25,7 @@ import { ProductListVariables } from "@saleor/products/types/ProductList";
import { ListViews } from "@saleor/types";
import { getSortUrlVariables } from "@saleor/utils/sort";
import createDialogActionHandlers from "@saleor/utils/handlers/dialogActionHandlers";
import { IFilter } from "@saleor/components/Filter";
import { getFilterQueryParams } from "@saleor/utils/filters";
import createFilterHandlers from "@saleor/utils/handlers/filterHandlers";
import ProductListPage from "../../components/ProductListPage";
import {
TypedProductBulkDeleteMutation,
@ -53,7 +52,6 @@ import {
getFilterTabs,
getFilterVariables,
saveFilterTab,
ProductFilterKeys,
getFilterOpts,
getFilterQueryParam
} from "./filters";
@ -103,37 +101,17 @@ export const ProductList: React.FC<ProductListProps> = ({ params }) => {
ProductListUrlQueryParams
>(navigate, productListUrl, params);
const changeFilters = (filter: IFilter<ProductFilterKeys>) => {
reset();
navigate(
productListUrl({
...params,
...getFilterQueryParams(filter, getFilterQueryParam),
activeTab: undefined
})
);
};
const resetFilters = () => {
reset();
navigate(
productListUrl({
asc: params.asc,
sort: params.sort
})
);
};
const handleSearchChange = (query: string) => {
reset();
navigate(
productListUrl({
...params,
activeTab: undefined,
query
})
);
};
const [
changeFilters,
resetFilters,
handleSearchChange
] = createFilterHandlers({
cleanupFn: reset,
createUrl: productListUrl,
getFilterQueryParam,
navigate,
params
});
const handleTabChange = (tab: number) => {
reset();

View file

@ -23,8 +23,7 @@ import { ListViews } from "@saleor/types";
import { getSortParams } from "@saleor/utils/sort";
import createSortHandler from "@saleor/utils/handlers/sortHandler";
import createDialogActionHandlers from "@saleor/utils/handlers/dialogActionHandlers";
import { IFilter } from "@saleor/components/Filter";
import { getFilterQueryParams } from "@saleor/utils/filters";
import createFilterHandlers from "@saleor/utils/handlers/filterHandlers";
import StaffAddMemberDialog, {
FormData as AddStaffMemberForm
} from "../../components/StaffAddMemberDialog";
@ -45,7 +44,6 @@ import {
getFilterTabs,
getFilterVariables,
saveFilterTab,
StaffFilterKeys,
getFilterQueryParam,
getFilterOpts
} from "./filter";
@ -89,31 +87,16 @@ export const StaffList: React.FC<StaffListProps> = ({ params }) => {
: 0
: parseInt(params.activeTab, 0);
const changeFilters = (filter: IFilter<StaffFilterKeys>) =>
navigate(
staffListUrl({
...params,
...getFilterQueryParams(filter, getFilterQueryParam),
activeTab: undefined
})
);
const resetFilters = () =>
navigate(
staffListUrl({
asc: params.asc,
sort: params.sort
})
);
const handleSearchChange = (query: string) =>
navigate(
staffListUrl({
...params,
activeTab: undefined,
query
})
);
const [
changeFilters,
resetFilters,
handleSearchChange
] = createFilterHandlers({
createUrl: staffListUrl,
getFilterQueryParam,
navigate,
params
});
const [openModal, closeModal] = createDialogActionHandlers<
StaffListUrlDialog,

View file

@ -23,12 +23,15 @@ function createFilterHandlers<
navigate: UseNavigatorResult;
createUrl: CreateUrl;
params: RequiredParams;
cleanupFn: () => void;
cleanupFn?: () => void;
}): CreateFilterHandlers<TFilterKeys> {
const { getFilterQueryParam, navigate, createUrl, params, cleanupFn } = opts;
const changeFilters = (filter: IFilter<TFilterKeys>) => {
if (!!cleanupFn) {
cleanupFn();
}
navigate(
createUrl({
...params,
@ -39,7 +42,10 @@ function createFilterHandlers<
};
const resetFilters = () => {
if (!!cleanupFn) {
cleanupFn();
}
navigate(
createUrl({
asc: params.asc,
@ -49,7 +55,10 @@ function createFilterHandlers<
};
const handleSearchChange = (query: string) => {
if (!!cleanupFn) {
cleanupFn();
}
navigate(
createUrl({
...params,