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'; const emailValidationSchema = yup .object({ email: yup.string().email().required(), }) .required(); const passwordValidationSchema = yup .object({ password: yup.string().required(), confirmPassword: yup .string() .required() .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 [passwordDefaultValues, setPasswordDefaultValues] = React.useState({}); const { enqueueSnackbar } = useSnackbar(); const currentUser = useCurrentUser(); const formatMessage = useFormatMessage(); const [updateUser] = useMutation(UPDATE_USER); const handleEmailUpdate = async (data: any) => { const email = data.email; await updateUser({ variables: { input: { email, }, }, optimisticResponse: { updateUser: { __typename: 'User', email, }, }, }); enqueueSnackbar(formatMessage('profileSettings.updatedEmail'), { variant: 'success', }); }; const handlePasswordUpdate = async (data: any) => { const password = data.password; setPasswordDefaultValues({ password, confirmPassword: data.confirmPassword, }); await updateUser({ variables: { input: { password, }, }, }); enqueueSnackbar(formatMessage('profileSettings.updatedPassword'), { 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;