import * as React from 'react'; import { useMutation } from '@apollo/client'; import Alert from '@mui/material/Alert'; import AlertTitle from '@mui/material/AlertTitle'; import Typography from '@mui/material/Typography'; import { styled } from '@mui/material/styles'; import Grid from '@mui/material/Grid'; import Button from '@mui/material/Button'; import { useSnackbar } from 'notistack'; import { yupResolver } from '@hookform/resolvers/yup'; import * as yup from 'yup'; import PageTitle from 'components/PageTitle'; import Container from 'components/Container'; import Form from 'components/Form'; import TextField from 'components/TextField'; import DeleteAccountDialog from 'components/DeleteAccountDialog/index.ee'; import { UPDATE_USER } from 'graphql/mutations/update-user'; import useFormatMessage from 'hooks/useFormatMessage'; import useCurrentUser from 'hooks/useCurrentUser'; type TMutationInput = { fullName: string; email: string; password?: string; } const validationSchema = yup .object({ fullName: yup.string().required(), email: yup.string().email().required(), password: yup.string(), confirmPassword: yup .string() .oneOf([yup.ref('password')], 'Passwords must match'), }) .required(); const StyledForm = styled(Form)` display: flex; align-items: end; flex-direction: column; `; function ProfileSettings() { const [showDeleteAccountConfirmation, setShowDeleteAccountConfirmation] = React.useState(false); const { enqueueSnackbar } = useSnackbar(); const currentUser = useCurrentUser(); const formatMessage = useFormatMessage(); const [updateUser] = useMutation(UPDATE_USER); const handleProfileSettingsUpdate = async (data: any) => { const { fullName, password, email } = data; const mutationInput: TMutationInput = { fullName, email, } if (password) { mutationInput.password = password; } await updateUser({ variables: { input: mutationInput, }, optimisticResponse: { updateUser: { __typename: 'User', id: currentUser.id, fullName, email, }, }, }); enqueueSnackbar(formatMessage('profileSettings.updatedProfile'), { variant: 'success', }); }; return ( {formatMessage('profileSettings.title')} ( <> )} /> {formatMessage('profileSettings.deleteMyAccount')} {formatMessage('profileSettings.deleteAccountSubtitle')}
  1. {formatMessage('profileSettings.deleteAccountResult1')}
  2. {formatMessage('profileSettings.deleteAccountResult2')}
  3. {formatMessage('profileSettings.deleteAccountResult3')}
  4. {formatMessage('profileSettings.deleteAccountResult4')}
{showDeleteAccountConfirmation && ( setShowDeleteAccountConfirmation(false)} /> )}
); } export default ProfileSettings;