import { useAtom } from "jotai"; import { focusAtom } from "jotai-optics"; import * as z from "zod"; import { useForm, zodResolver } from "@mantine/form"; import { currentUserAtom } from "@/features/user/atoms/current-user-atom.ts"; import { updateUser } from "@/features/user/services/user-service.ts"; import { IUser } from "@/features/user/types/user.types.ts"; import { useState } from "react"; import { TextInput, Button } from "@mantine/core"; import { notifications } from "@mantine/notifications"; import { useTranslation } from "react-i18next"; const formSchema = z.object({ name: z.string().min(2).max(40), }); type FormValues = z.infer; const userAtom = focusAtom(currentUserAtom, (optic) => optic.prop("user")); export default function AccountNameForm() { const { t } = useTranslation(); const [isLoading, setIsLoading] = useState(false); const [currentUser] = useAtom(currentUserAtom); const [, setUser] = useAtom(userAtom); const form = useForm({ validate: zodResolver(formSchema), initialValues: { name: currentUser?.user.name, }, }); async function handleSubmit(data: Partial) { setIsLoading(true); try { const updatedUser = await updateUser(data); setUser(updatedUser); notifications.show({ message: t("Updated successfully"), }); } catch (err) { console.log(err); notifications.show({ message: t("Failed to update data"), color: "red", }); } setIsLoading(false); } return (
); } /*
*/