import { ReturnReason } from "@medusajs/medusa" import { useAdminCreateReturnReason } from "medusa-react" import { useForm } from "react-hook-form" import { useTranslation } from "react-i18next" import Button from "../../../components/fundamentals/button" import Input from "../../../components/molecules/input" import Modal from "../../../components/molecules/modal" import TextArea from "../../../components/molecules/textarea" import useNotification from "../../../hooks/use-notification" import FormValidator from "../../../utils/form-validator" type CreateReturnReasonModalProps = { handleClose: () => void initialReason?: ReturnReason } type CreateReturnReasonFormData = { value: string label: string description: string | null } // the reason props is used for prefilling the form when duplicating const CreateReturnReasonModal = ({ handleClose, initialReason, }: CreateReturnReasonModalProps) => { const { register, handleSubmit, formState: { errors }, } = useForm({ defaultValues: { value: initialReason?.value, label: initialReason?.label, description: initialReason?.description, }, }) const notification = useNotification() const { mutateAsync, isLoading } = useAdminCreateReturnReason() const { t } = useTranslation() const onCreate = async (data: CreateReturnReasonFormData) => { try { await mutateAsync({ ...data, description: data.description || undefined, }) notification( t("return-reasons-notification-success", "Success"), t( "return-reasons-created-a-new-return-reason", "Created a new return reason" ), t("return-reasons-success", "success") ) } catch { notification( t("return-reasons-error", "Error"), t( "return-reasons-cannot-create-a-return-reason-with-an-existing-value", "Cannot create a return reason with an existing value" ), "error" ) } handleClose() } return ( {t("return-reasons-add-reason", "Add Reason")}