import { User } from "@medusajs/medusa" import { useAdminUpdateUser } from "medusa-react" import React, { useEffect } from "react" import { useForm } from "react-hook-form" import { useTranslation } from "react-i18next" import useNotification from "../../../hooks/use-notification" import { getErrorMessage } from "../../../utils/error-messages" import FormValidator from "../../../utils/form-validator" import Button from "../../fundamentals/button" import InputField from "../../molecules/input" import Modal from "../../molecules/modal" type EditUserModalProps = { handleClose: () => void user: User onSuccess: () => void } type EditUserModalFormData = { first_name: string last_name: string } const EditUserModal: React.FC = ({ handleClose, user, onSuccess, }) => { const { mutate, isLoading } = useAdminUpdateUser(user.id) const { register, handleSubmit, reset, formState: { errors }, } = useForm() const notification = useNotification() const { t } = useTranslation() useEffect(() => { reset(mapUser(user)) }, [user]) const onSubmit = (data: EditUserModalFormData) => { mutate(data, { onSuccess: () => { notification( t("edit-user-modal-success", "Success"), t("edit-user-modal-user-was-updated", "User was updated"), "success" ) onSuccess() }, onError: (error) => { notification( t("edit-user-modal-error", "Error"), getErrorMessage(error), "error" ) }, onSettled: () => { handleClose() }, }) } return (
{t("edit-user-modal-edit-user", "Edit User")}
) } const mapUser = (user: User): EditUserModalFormData => { return { first_name: user.first_name, last_name: user.last_name, } } export default EditUserModal