saleor-dashboard/src/orders/views/OrderDetails/OrderDetailsMessages.tsx

320 lines
9.7 KiB
TypeScript
Raw Normal View History

2020-06-26 17:06:48 +00:00
import { messages } from "@saleor/containers/BackgroundTasks/tasks";
2019-06-19 14:40:52 +00:00
import useNavigator from "@saleor/hooks/useNavigator";
import useNotifier from "@saleor/hooks/useNotifier";
2020-03-16 12:28:52 +00:00
import createDialogActionHandlers from "@saleor/utils/handlers/dialogActionHandlers";
import React from "react";
import { useIntl } from "react-intl";
2020-06-24 12:50:14 +00:00
import { InvoiceEmailSend } from "../../types/InvoiceEmailSend";
import { InvoiceRequest } from "../../types/InvoiceRequest";
2019-06-19 14:40:52 +00:00
import { OrderAddNote } from "../../types/OrderAddNote";
import { OrderCancel } from "../../types/OrderCancel";
import { OrderCapture } from "../../types/OrderCapture";
import { OrderDraftCancel } from "../../types/OrderDraftCancel";
import { OrderDraftFinalize } from "../../types/OrderDraftFinalize";
import { OrderDraftUpdate } from "../../types/OrderDraftUpdate";
import { OrderFulfillmentCancel } from "../../types/OrderFulfillmentCancel";
import { OrderFulfillmentUpdateTracking } from "../../types/OrderFulfillmentUpdateTracking";
import { OrderLineDelete } from "../../types/OrderLineDelete";
import { OrderLinesAdd } from "../../types/OrderLinesAdd";
import { OrderLineUpdate } from "../../types/OrderLineUpdate";
import { OrderMarkAsPaid } from "../../types/OrderMarkAsPaid";
import { OrderRefund } from "../../types/OrderRefund";
import { OrderShippingMethodUpdate } from "../../types/OrderShippingMethodUpdate";
import { OrderUpdate } from "../../types/OrderUpdate";
import { OrderVoid } from "../../types/OrderVoid";
2020-03-16 12:28:52 +00:00
import { orderUrl, OrderUrlQueryParams } from "../../urls";
2019-06-19 14:40:52 +00:00
interface OrderDetailsMessages {
children: (props: {
handleDraftCancel: (data: OrderDraftCancel) => void;
handleDraftFinalize: (data: OrderDraftFinalize) => void;
handleDraftUpdate: (data: OrderDraftUpdate) => void;
handleNoteAdd: (data: OrderAddNote) => void;
handleOrderCancel: (data: OrderCancel) => void;
handleOrderFulfillmentCancel: (data: OrderFulfillmentCancel) => void;
handleOrderFulfillmentUpdate: (
data: OrderFulfillmentUpdateTracking
) => void;
handleOrderLinesAdd: (data: OrderLinesAdd) => void;
handleOrderLineDelete: (data: OrderLineDelete) => void;
handleOrderLineUpdate: (data: OrderLineUpdate) => void;
handleOrderMarkAsPaid: (data: OrderMarkAsPaid) => void;
handleOrderVoid: (data: OrderVoid) => void;
handlePaymentCapture: (data: OrderCapture) => void;
handlePaymentRefund: (data: OrderRefund) => void;
handleShippingMethodUpdate: (data: OrderShippingMethodUpdate) => void;
handleUpdate: (data: OrderUpdate) => void;
2020-06-24 12:50:14 +00:00
handleInvoiceGeneratePending: (data: InvoiceRequest) => void;
2020-06-26 17:06:48 +00:00
handleInvoiceGenerateFinished: (data: InvoiceRequest) => void;
2020-06-24 12:50:14 +00:00
handleInvoiceSend: (data: InvoiceEmailSend) => void;
2019-06-19 14:40:52 +00:00
}) => React.ReactElement;
2020-03-16 12:28:52 +00:00
id: string;
params: OrderUrlQueryParams;
2019-06-19 14:40:52 +00:00
}
export const OrderDetailsMessages: React.FC<OrderDetailsMessages> = ({
2020-03-16 12:28:52 +00:00
children,
id,
params
}) => {
2019-06-19 14:40:52 +00:00
const navigate = useNavigator();
const pushMessage = useNotifier();
const intl = useIntl();
2019-06-19 14:40:52 +00:00
2020-03-16 12:28:52 +00:00
const [, closeModal] = createDialogActionHandlers(
navigate,
params => orderUrl(id, params),
params
);
2019-06-19 14:40:52 +00:00
const handlePaymentCapture = (data: OrderCapture) => {
2020-03-16 12:28:52 +00:00
const errs = data.orderCapture?.errors;
if (errs.length === 0) {
2019-06-19 14:40:52 +00:00
pushMessage({
2020-07-01 09:39:36 +00:00
status: "success",
text: intl.formatMessage({
defaultMessage: "Payment successfully captured"
2019-06-19 14:40:52 +00:00
})
});
2020-03-16 12:28:52 +00:00
closeModal();
2019-06-19 14:40:52 +00:00
}
};
const handlePaymentRefund = (data: OrderRefund) => {
2020-03-16 12:28:52 +00:00
const errs = data.orderRefund?.errors;
if (errs.length === 0) {
2019-06-19 14:40:52 +00:00
pushMessage({
2020-07-01 09:39:36 +00:00
status: "success",
text: intl.formatMessage({
defaultMessage: "Payment successfully refunded"
2019-06-19 14:40:52 +00:00
})
});
2020-03-16 12:28:52 +00:00
closeModal();
2019-06-19 14:40:52 +00:00
}
};
2020-03-16 12:28:52 +00:00
const handleOrderMarkAsPaid = (data: OrderMarkAsPaid) => {
const errs = data.orderMarkAsPaid?.errors;
if (errs.length === 0) {
2019-06-19 14:40:52 +00:00
pushMessage({
2020-07-01 09:39:36 +00:00
status: "success",
text: intl.formatMessage({
2020-03-16 12:28:52 +00:00
defaultMessage: "Order marked as paid"
2019-06-19 14:40:52 +00:00
})
});
2020-03-16 12:28:52 +00:00
closeModal();
2019-06-19 14:40:52 +00:00
}
};
2020-03-16 12:28:52 +00:00
const handleOrderCancel = (data: OrderCancel) => {
const errs = data.orderCancel?.errors;
if (errs.length === 0) {
2019-06-19 14:40:52 +00:00
pushMessage({
2020-07-01 09:39:36 +00:00
status: "success",
text: intl.formatMessage({
2020-03-16 12:28:52 +00:00
defaultMessage: "Order successfully cancelled"
2019-06-19 14:40:52 +00:00
})
});
2020-03-16 12:28:52 +00:00
closeModal();
}
};
const handleDraftCancel = (data: OrderDraftCancel) => {
const errs = data.draftOrderDelete?.errors;
if (errs.length === 0) {
2019-06-19 14:40:52 +00:00
pushMessage({
2020-07-01 09:39:36 +00:00
status: "success",
text: intl.formatMessage({
2020-03-16 12:28:52 +00:00
defaultMessage: "Order successfully cancelled"
2019-06-19 14:40:52 +00:00
})
});
2020-03-16 12:28:52 +00:00
closeModal();
2019-06-19 14:40:52 +00:00
}
};
2020-03-16 12:28:52 +00:00
const handleOrderVoid = (data: OrderVoid) => {
const errs = data.orderVoid?.errors;
if (errs.length === 0) {
2019-06-19 14:40:52 +00:00
pushMessage({
2020-07-01 09:39:36 +00:00
status: "success",
text: intl.formatMessage({
2020-03-16 12:28:52 +00:00
defaultMessage: "Order payment successfully voided"
2019-06-19 14:40:52 +00:00
})
});
2020-03-16 12:28:52 +00:00
closeModal();
}
};
const handleNoteAdd = (data: OrderAddNote) => {
const errs = data.orderAddNote?.errors;
if (errs.length === 0) {
2019-06-19 14:40:52 +00:00
pushMessage({
2020-07-01 09:39:36 +00:00
status: "success",
text: intl.formatMessage({
2020-03-16 12:28:52 +00:00
defaultMessage: "Note successfully added"
2019-06-19 14:40:52 +00:00
})
});
}
};
const handleUpdate = (data: OrderUpdate) => {
2020-03-16 12:28:52 +00:00
const errs = data.orderUpdate?.errors;
if (errs.length === 0) {
2019-06-19 14:40:52 +00:00
pushMessage({
2020-07-01 09:39:36 +00:00
status: "success",
text: intl.formatMessage({
defaultMessage: "Order successfully updated"
2019-06-19 14:40:52 +00:00
})
});
}
};
const handleDraftUpdate = (data: OrderDraftUpdate) => {
2020-03-16 12:28:52 +00:00
const errs = data.draftOrderUpdate?.errors;
if (errs.length === 0) {
2019-06-19 14:40:52 +00:00
pushMessage({
2020-07-01 09:39:36 +00:00
status: "success",
text: intl.formatMessage({
defaultMessage: "Order successfully updated"
2019-06-19 14:40:52 +00:00
})
});
}
};
const handleShippingMethodUpdate = (data: OrderShippingMethodUpdate) => {
2020-03-16 12:28:52 +00:00
const errs = data.orderUpdateShipping?.errors;
if (errs.length === 0) {
2019-06-19 14:40:52 +00:00
pushMessage({
2020-07-01 09:39:36 +00:00
status: "success",
text: intl.formatMessage({
defaultMessage: "Shipping method successfully updated"
2019-06-19 14:40:52 +00:00
})
});
2020-03-16 12:28:52 +00:00
closeModal();
2019-06-19 14:40:52 +00:00
}
};
const handleOrderLineDelete = (data: OrderLineDelete) => {
2020-03-16 12:28:52 +00:00
const errs = data.draftOrderLineDelete?.errors;
if (errs.length === 0) {
2019-06-19 14:40:52 +00:00
pushMessage({
2020-07-01 09:39:36 +00:00
status: "success",
text: intl.formatMessage({
defaultMessage: "Order line deleted"
2019-06-19 14:40:52 +00:00
})
});
}
};
const handleOrderLinesAdd = (data: OrderLinesAdd) => {
2020-03-16 12:28:52 +00:00
const errs = data.draftOrderLinesCreate?.errors;
if (errs.length === 0) {
2019-06-19 14:40:52 +00:00
pushMessage({
2020-07-01 09:39:36 +00:00
status: "success",
text: intl.formatMessage({
defaultMessage: "Order line added"
2019-06-19 14:40:52 +00:00
})
});
2020-03-16 12:28:52 +00:00
closeModal();
2019-06-19 14:40:52 +00:00
}
};
const handleOrderLineUpdate = (data: OrderLineUpdate) => {
2020-03-16 12:28:52 +00:00
const errs = data.draftOrderLineUpdate?.errors;
if (errs.length === 0) {
2019-06-19 14:40:52 +00:00
pushMessage({
2020-07-01 09:39:36 +00:00
status: "success",
text: intl.formatMessage({
defaultMessage: "Order line updated"
2019-06-19 14:40:52 +00:00
})
});
}
};
const handleOrderFulfillmentCancel = (data: OrderFulfillmentCancel) => {
2020-03-16 12:28:52 +00:00
const errs = data.orderFulfillmentCancel?.errors;
if (errs.length === 0) {
2019-06-19 14:40:52 +00:00
pushMessage({
2020-07-01 09:39:36 +00:00
status: "success",
text: intl.formatMessage({
defaultMessage: "Fulfillment successfully cancelled"
2019-06-19 14:40:52 +00:00
})
});
2020-03-16 12:28:52 +00:00
closeModal();
2019-06-19 14:40:52 +00:00
}
};
const handleOrderFulfillmentUpdate = (
data: OrderFulfillmentUpdateTracking
) => {
2020-03-16 12:28:52 +00:00
const errs = data.orderFulfillmentUpdateTracking?.errors;
if (errs.length === 0) {
2019-06-19 14:40:52 +00:00
pushMessage({
2020-07-01 09:39:36 +00:00
status: "success",
text: intl.formatMessage({
defaultMessage: "Fulfillment successfully updated"
2019-06-19 14:40:52 +00:00
})
});
2020-03-16 12:28:52 +00:00
closeModal();
2019-06-19 14:40:52 +00:00
}
};
const handleDraftFinalize = (data: OrderDraftFinalize) => {
2020-03-16 12:28:52 +00:00
const errs = data.draftOrderComplete?.errors;
if (errs.length === 0) {
2019-06-19 14:40:52 +00:00
pushMessage({
2020-07-01 09:39:36 +00:00
status: "success",
text: intl.formatMessage({
defaultMessage: "Draft order successfully finalized"
2019-06-19 14:40:52 +00:00
})
});
2020-03-16 12:28:52 +00:00
closeModal();
2019-06-19 14:40:52 +00:00
}
};
2020-06-24 12:50:14 +00:00
const handleInvoiceGeneratePending = (data: InvoiceRequest) => {
2020-06-25 11:36:43 +00:00
const errs = data.invoiceRequest?.errors;
2020-06-24 12:50:14 +00:00
if (errs.length === 0) {
pushMessage({
text: intl.formatMessage({
defaultMessage:
"Were generating the invoice you requested. Please wait a couple of moments"
}),
title: intl.formatMessage({
defaultMessage: "Invoice is Generating"
})
});
closeModal();
}
};
2020-06-26 17:06:48 +00:00
const handleInvoiceGenerateFinished = (data: InvoiceRequest) => {
const errs = data.invoiceRequest?.errors;
if (errs.length === 0) {
pushMessage({
2020-07-07 14:01:16 +00:00
status: "success",
2020-06-26 17:06:48 +00:00
text: intl.formatMessage(messages.invoiceGenerateFinishedText),
title: intl.formatMessage(messages.invoiceGenerateFinishedTitle)
});
closeModal();
}
};
2020-06-24 12:50:14 +00:00
const handleInvoiceSend = (data: InvoiceEmailSend) => {
2020-06-25 11:36:43 +00:00
const errs = data.invoiceSendEmail?.errors;
2020-06-24 12:50:14 +00:00
if (errs.length === 0) {
pushMessage({
text: intl.formatMessage({
defaultMessage: "Invoice email sent"
})
});
closeModal();
}
};
2019-06-19 14:40:52 +00:00
return children({
handleDraftCancel,
handleDraftFinalize,
handleDraftUpdate,
2020-06-26 17:06:48 +00:00
handleInvoiceGenerateFinished,
2020-06-24 12:50:14 +00:00
handleInvoiceGeneratePending,
handleInvoiceSend,
2019-06-19 14:40:52 +00:00
handleNoteAdd,
handleOrderCancel,
handleOrderFulfillmentCancel,
handleOrderFulfillmentUpdate,
handleOrderLineDelete,
handleOrderLineUpdate,
handleOrderLinesAdd,
handleOrderMarkAsPaid,
handleOrderVoid,
handlePaymentCapture,
handlePaymentRefund,
handleShippingMethodUpdate,
handleUpdate
});
};