import { Region } from "@medusajs/medusa" import { useAdminDeleteRegion } from "medusa-react" import React from "react" import { useNavigate } from "react-router-dom" import Tooltip from "../../../../../components/atoms/tooltip" import EditIcon from "../../../../../components/fundamentals/icons/edit-icon" import TrashIcon from "../../../../../components/fundamentals/icons/trash-icon" import Section from "../../../../../components/organisms/section" import useImperativeDialog from "../../../../../hooks/use-imperative-dialog" import useNotification from "../../../../../hooks/use-notification" import useToggleState from "../../../../../hooks/use-toggle-state" import { currencies } from "../../../../../utils/currencies" import { getErrorMessage } from "../../../../../utils/error-messages" import fulfillmentProvidersMapper from "../../../../../utils/fulfillment-providers.mapper" import paymentProvidersMapper from "../../../../../utils/payment-providers-mapper" import EditRegionModal from "./edit-region.modal" type Props = { region: Region } const GeneralSection = ({ region }: Props) => { const { state, toggle, close } = useToggleState() const { mutate } = useAdminDeleteRegion(region.id) const navigate = useNavigate() const notification = useNotification() const dialog = useImperativeDialog() const handleDelete = async () => { const shouldDelete = await dialog({ heading: "Delete Region", text: "Are you sure you want to delete this region?", extraConfirmation: true, entityName: region.name, }) if (shouldDelete) { mutate(undefined, { onSuccess: () => { navigate("/a/settings/regions", { replace: true, }) notification("Success", "Region has been deleted", "success") navigate(`/a/settings/regions`, { replace: true }) }, onError: (error) => { notification("Error", getErrorMessage(error), "error") }, }) } } return ( <>
, }, { label: "Delete Region", onClick: handleDelete, icon: , variant: "danger", }, ]} >

Details

{region.currency_code.toUpperCase()} {currencies[region.currency_code.toUpperCase()].name}
{region.countries && region.countries.length ? (

{region.countries .slice(0, 4) .map((c) => c.display_name) .join(", ")}

{region.countries.length > 4 && ( {region.countries.slice(4).map((c) => { return
  • {c.display_name}
  • })} } > + {region.countries.length - 4} more
    )}
    ) : (

    No countries configured

    )}
    {region.payment_providers && region.payment_providers.length ? (

    {region.payment_providers .slice(0, 4) .map((p) => paymentProvidersMapper(p.id).label) .join(", ")}

    {region.payment_providers.length > 4 && ( {region.payment_providers.slice(4).map((p) => { return (
  • {paymentProvidersMapper(p.id)}
  • ) })} } > + {region.payment_providers.length - 4} more
    )}
    ) : (

    No payment providers configured

    )}
    {region.payment_providers && region.payment_providers.length ? (

    {region.fulfillment_providers .slice(0, 4) .map((p) => fulfillmentProvidersMapper(p.id).label) .join(", ")}

    {region.fulfillment_providers.length > 4 && ( {region.fulfillment_providers.slice(4).map((p) => { return (
  • {fulfillmentProvidersMapper(p.id)}
  • ) })} } > + {region.fulfillment_providers.length - 4} more
    )}
    ) : (

    No fulfillment providers configured

    )}
    ) } type DetailProps = { title: string children: React.ReactNode } const RegionDetail = ({ title, children }: DetailProps) => { return (

    {title}

    {children}
    ) } export default GeneralSection