104 lines
3.6 KiB
TypeScript
104 lines
3.6 KiB
TypeScript
import { OrderErrorFragment } from "@saleor/fragments/types/OrderErrorFragment";
|
|
import { commonMessages } from "@saleor/intl";
|
|
import { OrderErrorCode } from "@saleor/types/globalTypes";
|
|
import { defineMessages, IntlShape } from "react-intl";
|
|
|
|
import commonErrorMessages from "./common";
|
|
|
|
const messages = defineMessages({
|
|
billingNotSet: {
|
|
defaultMessage: "Billing address is not set",
|
|
description: "error message"
|
|
},
|
|
cannotCancelFulfillment: {
|
|
defaultMessage: "This fulfillment cannot be cancelled",
|
|
description: "error message"
|
|
},
|
|
cannotCancelOrder: {
|
|
defaultMessage: "This order cannot be cancelled",
|
|
description: "error message"
|
|
},
|
|
cannotFulfillLine: {
|
|
defaultMessage: "Not enough items to fulfill",
|
|
description: "error message"
|
|
},
|
|
cannotRefund: {
|
|
defaultMessage: "Manual payments can not be refunded",
|
|
description: "error message"
|
|
},
|
|
cannotVoid: {
|
|
defaultMessage: "Only pre-authorized payments can be voided",
|
|
description: "error message"
|
|
},
|
|
captureInactive: {
|
|
defaultMessage: "Only pre-authorized payments can be captured",
|
|
description: "error message"
|
|
},
|
|
noShippingAddress: {
|
|
defaultMessage:
|
|
"Cannot choose a shipping method for an order without the shipping address",
|
|
description: "error message"
|
|
},
|
|
notEditable: {
|
|
defaultMessage: "Only draft orders can be edited",
|
|
description: "error message"
|
|
},
|
|
paymentMissing: {
|
|
defaultMessage: "There's no payment associated with the order",
|
|
description: "error message"
|
|
},
|
|
shippingNotApplicable: {
|
|
defaultMessage: "Shipping method is not valid for chosen shipping address",
|
|
description: "error message"
|
|
},
|
|
shippingRequired: {
|
|
defaultMessage: "Shipping method is required for this order",
|
|
description: "error message"
|
|
}
|
|
});
|
|
|
|
function getOrderErrorMessage(
|
|
err: OrderErrorFragment,
|
|
intl: IntlShape
|
|
): string {
|
|
if (err) {
|
|
switch (err.code) {
|
|
case OrderErrorCode.BILLING_ADDRESS_NOT_SET:
|
|
return intl.formatMessage(messages.billingNotSet);
|
|
case OrderErrorCode.CANNOT_CANCEL_FULFILLMENT:
|
|
return intl.formatMessage(messages.cannotCancelFulfillment);
|
|
case OrderErrorCode.CANNOT_CANCEL_ORDER:
|
|
return intl.formatMessage(messages.cannotCancelOrder);
|
|
case OrderErrorCode.CANNOT_REFUND:
|
|
return intl.formatMessage(messages.cannotRefund);
|
|
case OrderErrorCode.CAPTURE_INACTIVE_PAYMENT:
|
|
return intl.formatMessage(messages.captureInactive);
|
|
case OrderErrorCode.FULFILL_ORDER_LINE:
|
|
return intl.formatMessage(messages.cannotFulfillLine);
|
|
case OrderErrorCode.GRAPHQL_ERROR:
|
|
return intl.formatMessage(commonErrorMessages.graphqlError);
|
|
case OrderErrorCode.INVALID:
|
|
return intl.formatMessage(commonErrorMessages.invalid);
|
|
case OrderErrorCode.NOT_EDITABLE:
|
|
return intl.formatMessage(messages.notEditable);
|
|
case OrderErrorCode.ORDER_NO_SHIPPING_ADDRESS:
|
|
return intl.formatMessage(messages.noShippingAddress);
|
|
case OrderErrorCode.PAYMENT_MISSING:
|
|
return intl.formatMessage(messages.paymentMissing);
|
|
case OrderErrorCode.REQUIRED:
|
|
return intl.formatMessage(commonMessages.requiredField);
|
|
case OrderErrorCode.SHIPPING_METHOD_NOT_APPLICABLE:
|
|
return intl.formatMessage(messages.shippingNotApplicable);
|
|
case OrderErrorCode.SHIPPING_METHOD_REQUIRED:
|
|
return intl.formatMessage(messages.shippingRequired);
|
|
case OrderErrorCode.VOID_INACTIVE_PAYMENT:
|
|
return intl.formatMessage(messages.cannotVoid);
|
|
default:
|
|
return intl.formatMessage(commonErrorMessages.unknownError);
|
|
}
|
|
}
|
|
|
|
return undefined;
|
|
}
|
|
|
|
export default getOrderErrorMessage;
|