diff --git a/src/warehouses/components/WarehouseDetailsPage/WarehouseDetailsPage.tsx b/src/warehouses/components/WarehouseDetailsPage/WarehouseDetailsPage.tsx index 1d6b02689..97e09ee5c 100644 --- a/src/warehouses/components/WarehouseDetailsPage/WarehouseDetailsPage.tsx +++ b/src/warehouses/components/WarehouseDetailsPage/WarehouseDetailsPage.tsx @@ -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 = ({ shop, warehouse, onBack, + onDelete, onShippingZoneClick, onSubmit }) => { @@ -127,6 +129,7 @@ const WarehouseDetailsPage: React.FC = ({ diff --git a/src/warehouses/views/WarehouseDetails/WarehouseDetails.tsx b/src/warehouses/views/WarehouseDetails/WarehouseDetails.tsx index 792ee6715..a59481e35 100644 --- a/src/warehouses/views/WarehouseDetails/WarehouseDetails.tsx +++ b/src/warehouses/views/WarehouseDetails/WarehouseDetails.tsx @@ -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 = ({ 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 ( <> data.warehouse.name)} /> @@ -54,6 +78,7 @@ const WarehouseDetails: React.FC = ({ 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 = ({ id, params }) => { }) } /> + data.warehouse.name)} + onClose={closeModal} + onConfirm={() => + deleteWarehouse({ + variables: { id } + }) + } + open={params.action === "delete"} + /> ); };