import { Avatar, Copy, Text } from "@medusajs/ui" import { useTranslation } from "react-i18next" import { Link } from "react-router-dom" import { HttpTypes } from "@medusajs/types" import { getFormattedAddress, isSameAddress } from "../../../lib/addresses" const ID = ({ data }: { data: HttpTypes.AdminOrder }) => { const { t } = useTranslation() const id = data.customer_id const name = getOrderCustomer(data) const email = data.email const fallback = (name || email || "").charAt(0).toUpperCase() return (
{t("fields.id")}
{name || email}
) } const Company = ({ data }: { data: HttpTypes.AdminOrder }) => { const { t } = useTranslation() const company = data.shipping_address?.company || data.billing_address?.company if (!company) { return null } return (
{t("fields.company")} {company}
) } const Contact = ({ data }: { data: HttpTypes.AdminOrder }) => { const { t } = useTranslation() const phone = data.shipping_address?.phone || data.billing_address?.phone const email = data.email || "" return (
{t("orders.customer.contactLabel")}
{email}
{phone && (
{phone}
)}
) } const AddressPrint = ({ address, type, }: { address: | HttpTypes.AdminOrder["shipping_address"] | HttpTypes.AdminOrder["billing_address"] type: "shipping" | "billing" }) => { const { t } = useTranslation() return (
{type === "shipping" ? t("addresses.shippingAddress.label") : t("addresses.billingAddress.label")} {address ? (
{getFormattedAddress({ address }).map((line, i) => { return ( {line}
) })}
) : ( - )}
) } const Addresses = ({ data }: { data: HttpTypes.AdminOrder }) => { const { t } = useTranslation() return (
{!isSameAddress(data.shipping_address, data.billing_address) ? ( ) : (
{t("addresses.billingAddress.label")} {t("addresses.billingAddress.sameAsShipping")}
)}
) } export const CustomerInfo = Object.assign( {}, { ID, Company, Contact, Addresses, } ) const getOrderCustomer = (obj: HttpTypes.AdminOrder) => { const { first_name: sFirstName, last_name: sLastName } = obj.shipping_address || {} const { first_name: bFirstName, last_name: bLastName } = obj.billing_address || {} const { first_name: cFirstName, last_name: cLastName } = obj.customer || {} const customerName = [cFirstName, cLastName].filter(Boolean).join(" ") const shippingName = [sFirstName, sLastName].filter(Boolean).join(" ") const billingName = [bFirstName, bLastName].filter(Boolean).join(" ") const name = customerName || shippingName || billingName return name }