import { useAdminGiftCard, useAdminUpdateGiftCard } from "medusa-react" import moment from "moment" import { useParams } from "react-router-dom" import BackButton from "../../../components/atoms/back-button" import Spinner from "../../../components/atoms/spinner" import WidgetContainer from "../../../components/extensions/widget-container" import DollarSignIcon from "../../../components/fundamentals/icons/dollar-sign-icon" import EditIcon from "../../../components/fundamentals/icons/edit-icon" import StatusSelector from "../../../components/molecules/status-selector" import BodyCard from "../../../components/organisms/body-card" import RawJSON from "../../../components/organisms/raw-json" import useNotification from "../../../hooks/use-notification" import useToggleState from "../../../hooks/use-toggle-state" import { useWidgets } from "../../../providers/widget-provider" import { getErrorMessage } from "../../../utils/error-messages" import { formatAmountWithSymbol } from "../../../utils/prices" import EditGiftCardModal from "./edit-gift-card-modal" import UpdateBalanceModal from "./update-balance-modal" import { useTranslation } from "react-i18next" const GiftCardDetails = () => { const { id } = useParams() const { t } = useTranslation() const { gift_card: giftCard, isLoading } = useAdminGiftCard(id!, { enabled: !!id, }) const updateGiftCard = useAdminUpdateGiftCard(giftCard?.id!) const { getWidgets } = useWidgets() const notification = useNotification() const { state: editState, open: openEdit, close: closeEdit, } = useToggleState() const { state: balanceState, open: openBalance, close: closeBalance, } = useToggleState() const actions = [ { label: t("details-edit-details", "Edit details"), onClick: openEdit, icon: , }, { label: t("details-update-balance-label", "Update balance"), onClick: openBalance, icon: , }, ] const updateStatus = (data: { is_disabled?: boolean }) => { updateGiftCard.mutate( { is_disabled: data.is_disabled }, { onSuccess: () => { notification( t("details-updated-status", "Updated status"), t( "details-successfully-updated-the-status-of-the-gift-card", "Successfully updated the status of the Gift Card" ), "success" ) }, onError: (err) => notification( t("details-error", "Error"), getErrorMessage(err), "error" ), } ) } return (
{isLoading || !giftCard ? (
) : ( <>
{getWidgets("custom_gift_card.before").map((w, i) => { return ( ) })} updateStatus({ is_disabled: !giftCard.is_disabled }) } /> } actionables={actions} >
{t("details-original-amount", "Original amount")}
{formatAmountWithSymbol({ amount: giftCard.value, currency: giftCard.region.currency_code, })}
{t("details-balance", "Balance")}
{formatAmountWithSymbol({ amount: giftCard.balance, currency: giftCard.region.currency_code, })}
{t("details-region", "Region")}
{giftCard.region.name}
{giftCard.ends_at && (
{t("details-expires-on", "Expires on")}
{moment(giftCard.ends_at).format("DD MMM YYYY")}
)}
{t("details-created", "Created")}
{moment(giftCard.created_at).format("DD MMM YYYY")}
{getWidgets("custom_gift_card.after").map((w, i) => { return ( ) })}
)}
) } export default GiftCardDetails