import { XCircle } from "@medusajs/icons" import { HttpTypes } from "@medusajs/types" import { Container, Copy, Heading, StatusBadge, Text, toast, usePrompt, } from "@medusajs/ui" import { useTranslation } from "react-i18next" import { ActionMenu } from "../../../../../components/common/action-menu" import { useCancelOrder } from "../../../../../hooks/api/orders" import { useDate } from "../../../../../hooks/use-date" import { getCanceledOrderStatus, getOrderFulfillmentStatus, getOrderPaymentStatus, } from "../../../../../lib/order-helpers" import { ExtendedOrder } from "../../constants" type OrderGeneralSectionProps = { order: ExtendedOrder } export const OrderGeneralSection = ({ order }: OrderGeneralSectionProps) => { const { t } = useTranslation() const prompt = usePrompt() const { getFullDate } = useDate() const { mutateAsync: cancelOrder } = useCancelOrder(order.id) const handleCancel = async () => { const res = await prompt({ title: t("general.areYouSure"), description: t("orders.cancelWarning", { id: `#${order.display_id}` as string, }), confirmText: t("actions.continue"), cancelText: t("actions.cancel"), }) if (!res) { return } await cancelOrder(undefined, { onSuccess: () => { toast.success(t("orders.orderCanceled")) }, onError: (e) => { toast.error(e.message) }, }) } return (
#{order.display_id}
{t("orders.onDateFromSalesChannel", { date: getFullDate({ date: order.created_at, includeTime: true }), salesChannel: order.sales_channel?.name, })}
, }, ], }, ]} />
) } const FulfillmentBadge = ({ order }: { order: HttpTypes.AdminOrder }) => { const { t } = useTranslation() const { label, color } = getOrderFulfillmentStatus( t, order.fulfillment_status ) return ( {label} ) } const PaymentBadge = ({ order }: { order: HttpTypes.AdminOrder }) => { const { t } = useTranslation() const { label, color } = getOrderPaymentStatus(t, order.payment_status) return ( {label} ) } const OrderBadge = ({ order }: { order: HttpTypes.AdminOrder }) => { const { t } = useTranslation() const orderStatus = getCanceledOrderStatus(t, order.status) if (!orderStatus) { return null } return ( {orderStatus.label} ) }