import React from "react"; import useNavigator from "@saleor/hooks/useNavigator"; import useNotifier from "@saleor/hooks/useNotifier"; import useShop from "@saleor/hooks/useShop"; import i18n from "../../i18n"; import { getMutationState, maybe } from "../../misc"; import ShippingZoneCreatePage from "../components/ShippingZoneCreatePage"; import { TypedCreateShippingZone } from "../mutations"; import { CreateShippingZone } from "../types/CreateShippingZone"; import { shippingZonesListUrl, shippingZoneUrl } from "../urls"; const ShippingZoneCreate: React.StatelessComponent<{}> = () => { const navigate = useNavigator(); const pushMessage = useNotifier(); const shop = useShop(); const onShippingZoneCreate = (data: CreateShippingZone) => { if (data.shippingZoneCreate.errors.length === 0) { pushMessage({ text: i18n.t("Successfully created new shipping zone", { context: "notification" }) }); navigate(shippingZoneUrl(data.shippingZoneCreate.shippingZone.id)); } }; return ( {(createShippingZone, createShippingZoneOpts) => { const formTransitionState = getMutationState( createShippingZoneOpts.called, createShippingZoneOpts.loading, maybe(() => createShippingZoneOpts.data.shippingZoneCreate.errors, []) ); return ( shop.countries, [])} disabled={createShippingZoneOpts.loading} errors={maybe( () => createShippingZoneOpts.data.shippingZoneCreate.errors )} onBack={() => navigate(shippingZonesListUrl())} onSubmit={formData => createShippingZone({ variables: { input: formData } }) } saveButtonBarState={formTransitionState} /> ); }} ); }; export default ShippingZoneCreate;