Add warehouse deleting

This commit is contained in:
dominik-zeglen 2020-01-30 16:43:55 +01:00
parent 8445d2d815
commit e5274afa64
2 changed files with 41 additions and 2 deletions

View file

@ -34,6 +34,7 @@ export interface WarehouseDetailsPageProps {
shop: ShopInfo_shop;
warehouse: WarehouseDetails_warehouse;
onBack: () => void;
onDelete: () => void;
onShippingZoneClick: (id: string) => void;
onSubmit: (data: WarehouseDetailsPageFormData) => void;
}
@ -45,6 +46,7 @@ const WarehouseDetailsPage: React.FC<WarehouseDetailsPageProps> = ({
shop,
warehouse,
onBack,
onDelete,
onShippingZoneClick,
onSubmit
}) => {
@ -127,6 +129,7 @@ const WarehouseDetailsPage: React.FC<WarehouseDetailsPageProps> = ({
<SaveButtonBar
disabled={disabled}
onCancel={onBack}
onDelete={onDelete}
onSave={submit}
state={saveButtonBarState}
/>

View file

@ -5,7 +5,8 @@ import WarehouseDetailsPage from "@saleor/warehouses/components/WarehouseDetails
import useNavigator from "@saleor/hooks/useNavigator";
import {
warehouseListUrl,
WarehouseUrlQueryParams
WarehouseUrlQueryParams,
warehouseUrl
} from "@saleor/warehouses/urls";
import { useWarehouseDetails } from "@saleor/warehouses/queries";
import { commonMessages } from "@saleor/intl";
@ -14,8 +15,13 @@ import { maybe, findValueInEnum, getMutationStatus } from "@saleor/misc";
import { CountryCode } from "@saleor/types/globalTypes";
import useShop from "@saleor/hooks/useShop";
import { WindowTitle } from "@saleor/components/WindowTitle";
import { useWarehouseUpdate } from "@saleor/warehouses/mutations";
import {
useWarehouseUpdate,
useWarehouseDelete
} from "@saleor/warehouses/mutations";
import { shippingZoneUrl } from "@saleor/shipping/urls";
import WarehouseDeleteDialog from "@saleor/warehouses/components/WarehouseDeleteDialog";
import createDialogActionHandlers from "@saleor/utils/handlers/dialogActionHandlers";
export interface WarehouseDetailsProps {
id: string;
@ -41,6 +47,24 @@ const WarehouseDetails: React.FC<WarehouseDetailsProps> = ({ id, params }) => {
});
const updateWarehouseTransitionState = getMutationStatus(updateWarehouseOpts);
const [deleteWarehouse, deleteWarehouseOpts] = useWarehouseDelete({
onCompleted: data => {
if (data.deleteWarehouse.errors.length === 0) {
notify({
text: intl.formatMessage(commonMessages.savedChanges)
});
navigate(warehouseListUrl());
}
}
});
const deleteWarehouseTransitionState = getMutationStatus(deleteWarehouseOpts);
const [openModal, closeModal] = createDialogActionHandlers(
navigate,
params => warehouseUrl(id, params),
params
);
return (
<>
<WindowTitle title={maybe(() => data.warehouse.name)} />
@ -54,6 +78,7 @@ const WarehouseDetails: React.FC<WarehouseDetailsProps> = ({ id, params }) => {
saveButtonBarState={updateWarehouseTransitionState}
shop={shop}
warehouse={maybe(() => data.warehouse)}
onDelete={() => openModal("delete")}
onShippingZoneClick={id => navigate(shippingZoneUrl(id))}
onSubmit={data =>
updateWarehouse({
@ -76,6 +101,17 @@ const WarehouseDetails: React.FC<WarehouseDetailsProps> = ({ id, params }) => {
})
}
/>
<WarehouseDeleteDialog
confirmButtonState={deleteWarehouseTransitionState}
name={maybe(() => data.warehouse.name)}
onClose={closeModal}
onConfirm={() =>
deleteWarehouse({
variables: { id }
})
}
open={params.action === "delete"}
/>
</>
);
};