import { putUpdateProfile } from '@api/user' import { errorTip, labelWithIcon } from '@components/Common' import { useAuth } from '@hooks/useAuth' import { Box, Button, Divider, Group, Paper, PasswordInput, Text, TextInput, } from '@mantine/core' import { useForm, yupResolver } from '@mantine/form' import { notifications } from '@mantine/notifications' import { IconCircleCheckFilled, IconKeyFilled, IconUserCircle, IconUserFilled, } from '@tabler/icons-react' import { Helpers } from '@utils/helper' import { useEffect } from 'react' import { useTranslation } from 'react-i18next' import * as yup from 'yup' const vschema = (t) => yup.object({ name: yup .string() .required(t('message_is_required', { field: t('ui_display_name') })), password: yup.string().nullable().optional(), confirmPassword: yup.string().when('password', { is: (val) => !!(val && val.length > 0), then: (schema) => schema.oneOf( [yup.ref('password'), null], t('message_password_mustmatch'), ), }), }) export default function Profile() { const { t } = useTranslation() const { auth, setUserInfo } = useAuth() const form = useForm({ initialValues: { name: '', password: '', confirmPassword: '', }, validate: yupResolver(vschema(t)), transformValues: (values) => ({ name: values.name, password: values.password, }), enhanceGetInputProps: (payload) => ({ error: errorTip(payload.inputProps.error), }), }) const onSubmit = async (values) => { const resp = await putUpdateProfile(Helpers.clearObject(values)) if (resp.status === 200) { setUserInfo(resp.data) form.reset() } notifications.show({ color: 'green.5', icon: , title: t('ui_success'), message: t('message_update_success'), }) } useEffect(() => { if (auth.userInfo) { form.setFieldValue('name', auth?.userInfo?.name) } }, [auth.userInfo]) return ( {t('ui_profile')} } mb="md" /> {t('ui_change_info')}
) }