import { zodResolver } from "@hookform/resolvers/zod" import { Button, Input, Select, toast } from "@medusajs/ui" import { useForm } from "react-hook-form" import { useTranslation } from "react-i18next" import * as zod from "zod" import { HttpTypes } from "@medusajs/types" import { Form } from "../../../../../components/common/form" import { RouteDrawer, useRouteModal } from "../../../../../components/modals" import { KeyboundForm } from "../../../../../components/utilities/keybound-form" import { useUpdateUser } from "../../../../../hooks/api/users" import { languages } from "../../../../../i18n/languages" import { useDocumentDirection } from "../../../../../hooks/use-document-direction" type EditProfileProps = { user: HttpTypes.AdminUser // usageInsights: boolean } const EditProfileSchema = zod.object({ first_name: zod.string().optional(), last_name: zod.string().optional(), language: zod.string(), // usage_insights: zod.boolean(), }) export const EditProfileForm = ({ user }: EditProfileProps) => { const { t, i18n } = useTranslation() const { handleSuccess } = useRouteModal() const direction = useDocumentDirection() const form = useForm>({ defaultValues: { first_name: user.first_name ?? "", last_name: user.last_name ?? "", language: i18n.language, // usage_insights: usageInsights, }, resolver: zodResolver(EditProfileSchema), }) const changeLanguage = async (code: string) => { await i18n.changeLanguage(code) } const sortedLanguages = languages.sort((a, b) => a.display_name.localeCompare(b.display_name) ) const { mutateAsync, isPending } = useUpdateUser(user.id!) const handleSubmit = form.handleSubmit(async (values) => { await mutateAsync( { first_name: values.first_name, last_name: values.last_name, }, { onError: (error) => { toast.error(error.message) return }, } ) await changeLanguage(values.language) toast.success(t("profile.toast.edit")) handleSuccess() }) return (
( {t("fields.firstName")} )} /> ( {t("fields.lastName")} )} />
(
{t("profile.fields.languageLabel")} {t("profile.edit.languageHint")}
)} /> {/* TODO: Do we want to implement usage insights in V2? */} {/* (
{t("profile.fields.usageInsightsLabel")}
, ]} />
)} /> */}
) }