import { useCallback, useEffect, useState } from 'react' import { Button, FormControl, FormErrorMessage, Input, Modal, ModalBody, ModalCloseButton, ModalContent, ModalFooter, ModalHeader, ModalOverlay, } from '@chakra-ui/react' import { useSWRConfig } from 'swr' import { Field, FieldAttributes, FieldProps, Form, Formik, FormikHelpers, } from 'formik' import * as Yup from 'yup' import cx from 'classnames' import UserAPI, { User } from '@/client/idp/user' export type AccountEditFullNameProps = { open: boolean user: User onClose?: () => void } type FormValues = { fullName: string } const AccountEditFullName = ({ open, user, onClose, }: AccountEditFullNameProps) => { const { mutate } = useSWRConfig() const [isModalOpen, setIsModalOpen] = useState(false) const formSchema = Yup.object().shape({ fullName: Yup.string().required('Full name is required').max(255), }) useEffect(() => { setIsModalOpen(open) }, [open]) const handleSubmit = useCallback( async ( { fullName }: FormValues, { setSubmitting }: FormikHelpers, ) => { setSubmitting(true) try { const result = await UserAPI.updateFullName({ fullName, }) mutate(`/user`, result) setSubmitting(false) onClose?.() } finally { setSubmitting(false) } }, [onClose, mutate], ) return ( onClose?.()} closeOnOverlayClick={false} > Edit Full Name {({ errors, touched, isSubmitting }) => (
{({ field }: FieldAttributes) => ( {errors.fullName} )}
)}
) } export default AccountEditFullName