saleor-dashboard/src/orders/views/OrderSettings.tsx
Krzysztof Wolski 07f8f4b0b8
Order confirmation (#840)
* Order confirmed webhook

* Add status chip component and update order details page header

* refactor

* refactor and update types

* Remove rebase leftovers

* Create order settings page

* Add order setting query

* Connct order settings view with api

* Show order settings update error message

* Popup menu routing to order settings

* Fix circular import error with order settings form types

* Update order settings story

* Update order settings messages

* wip

* Add order confirm mutation and types

* Add confirm order feature to order details

* Update global types

* refactor after review

* refactor after review

* update types

* Revert settings menu removal

* Add changelog entry

Co-authored-by: Tomasz Szymanski <lime129@gmail.com>
Co-authored-by: Magdalena Markusik <magdalena.markusik@mirumee.com>
Co-authored-by: Dawid Tarasiuk <tarasiukdawid@gmail.com>
2020-11-30 14:19:57 +01:00

64 lines
1.9 KiB
TypeScript

import useNavigator from "@saleor/hooks/useNavigator";
import useNotifier from "@saleor/hooks/useNotifier";
import { commonMessages } from "@saleor/intl";
import { getMutationState } from "@saleor/misc";
import OrderSettingsPage from "@saleor/orders/components/OrderSettingsPage";
import { OrderSettingsFormData } from "@saleor/orders/components/OrderSettingsPage/form";
import { useOrderSettingsUpdateMutation } from "@saleor/orders/mutations";
import { useOrderSettingsQuery } from "@saleor/orders/queries";
import { orderListUrl } from "@saleor/orders/urls";
import React from "react";
import { useIntl } from "react-intl";
export const OrderSettings: React.FC = () => {
const intl = useIntl();
const navigate = useNavigator();
const notify = useNotifier();
const { data, loading } = useOrderSettingsQuery({});
const [
orderSettingsUpdate,
orderSettingsUpdateOpts
] = useOrderSettingsUpdateMutation({});
const handleSubmit = async (data: OrderSettingsFormData) => {
const result = await orderSettingsUpdate({
variables: {
input: data
}
});
const errors = result.data?.orderSettingsUpdate.errors;
if (errors.length) {
notify({
status: "error",
text: intl.formatMessage(commonMessages.somethingWentWrong)
});
return errors;
}
notify({
status: "success",
text: intl.formatMessage(commonMessages.savedChanges)
});
return [];
};
const handleBack = () => navigate(orderListUrl());
return (
<OrderSettingsPage
data={data?.orderSettings}
disabled={loading || orderSettingsUpdateOpts.loading}
onSubmit={handleSubmit}
onBack={handleBack}
saveButtonBarState={getMutationState(
orderSettingsUpdateOpts.called,
orderSettingsUpdateOpts.loading,
[...(orderSettingsUpdateOpts.data?.orderSettingsUpdate.errors || [])]
)}
/>
);
};
export default OrderSettings;