import { useTranslation } from "react-i18next" import { useAdminDeleteDiscount, useAdminUpdateDiscount } from "medusa-react" import useImperativeDialog from "../../../hooks/use-imperative-dialog" import useNotification from "../../../hooks/use-notification" import { getErrorMessage } from "../../../utils/error-messages" import DuplicateIcon from "../../fundamentals/icons/duplicate-icon" import PublishIcon from "../../fundamentals/icons/publish-icon" import TrashIcon from "../../fundamentals/icons/trash-icon" import UnpublishIcon from "../../fundamentals/icons/unpublish-icon" import EditIcon from "../../fundamentals/icons/edit-icon" import useCopyPromotion from "./use-copy-promotion" import { useNavigate } from "react-router-dom" const usePromotionActions = (promotion) => { const { t } = useTranslation() const navigate = useNavigate() const notification = useNotification() const dialog = useImperativeDialog() const copyPromotion = useCopyPromotion() const updatePromotion = useAdminUpdateDiscount(promotion.id) const deletePromotion = useAdminDeleteDiscount(promotion?.id) const handleDelete = async () => { const shouldDelete = await dialog({ heading: t("discount-table-delete-discount", "Delete Discount"), text: t( "discount-table-confirm-delete", "Are you sure you want to delete this Discount?" ), }) if (shouldDelete) { deletePromotion.mutate() } } const getRowActions = () => { return [ { label: "Edit", icon: , onClick: () => navigate(`/a/discounts/${promotion.id}`), }, { label: promotion.is_disabled ? t("discount-table-publish", "Publish") : t("discount-table-unpublish", "Unpublish"), icon: promotion.is_disabled ? ( ) : ( ), onClick: () => { updatePromotion.mutate( { is_disabled: !promotion.is_disabled, }, { onSuccess: () => { notification( t("discount-table-success", "Success"), promotion.is_disabled ? t( "discount-table-successfully-published-discount", "Successfully published discount" ) : t( "discount-table-successfully-unpublished-discount", "Successfully unpublished discount" ), "success" ) }, onError: (err) => notification( t("discount-table-error", "Error"), getErrorMessage(err), "error" ), } ) }, }, { label: t("discount-table-duplicate", "Duplicate"), icon: , onClick: () => copyPromotion(promotion), }, { label: t("discount-table-delete", "Delete"), icon: , variant: "danger", onClick: handleDelete, }, ] } return { getRowActions } } export default usePromotionActions