2019-08-09 10:26:22 +00:00
|
|
|
import React from "react";
|
2019-08-26 21:26:36 +00:00
|
|
|
import { useIntl } from "react-intl";
|
2019-06-19 14:40:52 +00:00
|
|
|
|
|
|
|
import useNavigator from "@saleor/hooks/useNavigator";
|
|
|
|
import useNotifier from "@saleor/hooks/useNotifier";
|
|
|
|
import useShop from "@saleor/hooks/useShop";
|
2019-08-26 21:26:36 +00:00
|
|
|
import { commonMessages } from "@saleor/intl";
|
2019-06-19 14:40:52 +00:00
|
|
|
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();
|
2019-08-26 21:26:36 +00:00
|
|
|
const intl = useIntl();
|
2019-06-19 14:40:52 +00:00
|
|
|
|
|
|
|
const onShippingZoneCreate = (data: CreateShippingZone) => {
|
|
|
|
if (data.shippingZoneCreate.errors.length === 0) {
|
|
|
|
pushMessage({
|
2019-08-26 21:26:36 +00:00
|
|
|
text: intl.formatMessage(commonMessages.savedChanges)
|
2019-06-19 14:40:52 +00:00
|
|
|
});
|
|
|
|
navigate(shippingZoneUrl(data.shippingZoneCreate.shippingZone.id));
|
|
|
|
}
|
|
|
|
};
|
|
|
|
return (
|
|
|
|
<TypedCreateShippingZone onCompleted={onShippingZoneCreate}>
|
|
|
|
{(createShippingZone, createShippingZoneOpts) => {
|
|
|
|
const formTransitionState = getMutationState(
|
|
|
|
createShippingZoneOpts.called,
|
|
|
|
createShippingZoneOpts.loading,
|
|
|
|
maybe(() => createShippingZoneOpts.data.shippingZoneCreate.errors, [])
|
|
|
|
);
|
|
|
|
|
|
|
|
return (
|
|
|
|
<ShippingZoneCreatePage
|
|
|
|
countries={maybe(() => shop.countries, [])}
|
|
|
|
disabled={createShippingZoneOpts.loading}
|
|
|
|
errors={maybe(
|
|
|
|
() => createShippingZoneOpts.data.shippingZoneCreate.errors
|
|
|
|
)}
|
|
|
|
onBack={() => navigate(shippingZonesListUrl())}
|
|
|
|
onSubmit={formData =>
|
|
|
|
createShippingZone({
|
|
|
|
variables: {
|
|
|
|
input: formData
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
saveButtonBarState={formTransitionState}
|
|
|
|
/>
|
|
|
|
);
|
|
|
|
}}
|
|
|
|
</TypedCreateShippingZone>
|
|
|
|
);
|
|
|
|
};
|
|
|
|
export default ShippingZoneCreate;
|