import { Button, FormControl, FormErrorMessage, FormLabel, Input, Modal, ModalOverlay, ModalContent, ModalHeader, ModalCloseButton, ModalBody, ModalFooter, Stack, useToast, } from "@chakra-ui/react"; import { PrettyButton } from "components"; import { Formik, Form, Field } from "formik"; import { useUser, useSetUser } from "hooks"; import { intl } from "locale"; import { validateEmail, validateString } from "modules/Validations"; interface ProfileModalProps { isOpen: boolean; onClose: () => void; } function ProfileModal({ isOpen, onClose }: ProfileModalProps) { const toast = useToast(); const user = useUser("me"); const { mutate: setUser } = useSetUser(); const onSubmit = (payload: any, { setSubmitting }: any) => { payload.id = "me"; const showErr = (msg: string) => { toast({ description: intl.formatMessage({ id: `error.${msg}`, }), status: "error", position: "top", duration: 3000, isClosable: true, }); }; setUser(payload, { onError: (err: any) => showErr(err.message), onSuccess: () => onClose(), onSettled: () => setSubmitting(false), }); }; return ( {({ isSubmitting, values }: any) => (
{intl.formatMessage({ id: "profile.title" })} {({ field, form }: any) => ( {intl.formatMessage({ id: "user.name" })} {form.errors.name} )} {({ field, form }: any) => ( {intl.formatMessage({ id: "user.nickname" })} {form.errors.nickname} )} {({ field, form }: any) => ( {intl.formatMessage({ id: "user.email" })} {form.errors.email} )} {intl.formatMessage({ id: "form.save" })} )}
); } export { ProfileModal };