Files
automatisch/packages/web/src/components/DeleteAccountDialog/index.ee.jsx
2024-09-19 12:25:58 +03:00

52 lines
1.5 KiB
JavaScript

import PropTypes from 'prop-types';
import * as React from 'react';
import { useNavigate } from 'react-router-dom';
import * as URLS from 'config/urls';
import ConfirmationDialog from 'components/ConfirmationDialog';
import apolloClient from 'graphql/client';
import useAuthentication from 'hooks/useAuthentication';
import useFormatMessage from 'hooks/useFormatMessage';
import useCurrentUser from 'hooks/useCurrentUser';
import useDeleteCurrentUser from 'hooks/useDeleteCurrentUser';
function DeleteAccountDialog(props) {
const formatMessage = useFormatMessage();
const { data } = useCurrentUser();
const currentUser = data?.data;
const { mutateAsync: deleteCurrentUser } = useDeleteCurrentUser(
currentUser.id,
);
const authentication = useAuthentication();
const navigate = useNavigate();
const handleConfirm = React.useCallback(async () => {
await deleteCurrentUser();
authentication.removeToken();
await apolloClient.clearStore();
navigate(URLS.LOGIN);
}, [deleteCurrentUser, authentication, navigate]);
return (
<ConfirmationDialog
title={formatMessage('deleteAccountDialog.title')}
description={formatMessage('deleteAccountDialog.description')}
onClose={props.onClose}
onConfirm={handleConfirm}
cancelButtonChildren={formatMessage('deleteAccountDialog.cancel')}
confirmButtonChildren={formatMessage('deleteAccountDialog.confirm')}
/>
);
}
DeleteAccountDialog.propTypes = {
onClose: PropTypes.func.isRequired,
};
export default DeleteAccountDialog;