import React from 'react'; import intl from 'react-intl-universal'; import { FormattedMessage as T, FormattedHTMLMessage } from 'components'; import { Intent, Alert } from '@blueprintjs/core'; import { AppToaster } from 'components'; import { handleDeleteErrors } from 'containers/Accounts/utils'; import withAlertStoreConnect from 'containers/Alert/withAlertStoreConnect'; import withAlertActions from 'containers/Alert/withAlertActions'; import withDrawerActions from 'containers/Drawer/withDrawerActions'; import { useDeleteAccount } from 'hooks/query'; import { compose } from 'utils'; /** * Account delete alerts. */ function AccountDeleteAlert({ name, // #withAlertStoreConnect isOpen, payload: { accountId }, // #withAlertActions closeAlert, // #withDrawerActions closeDrawer, }) { const { isLoading, mutateAsync: deleteAccount } = useDeleteAccount(); // handle cancel delete account alert. const handleCancelAccountDelete = () => { closeAlert(name); }; // Handle confirm account delete. const handleConfirmAccountDelete = () => { deleteAccount(accountId) .then(() => { AppToaster.show({ message: intl.get('the_account_has_been_successfully_deleted'), intent: Intent.SUCCESS, }); closeAlert(name); closeDrawer('account-drawer'); }) .catch( ({ response: { data: { errors }, }, }) => { handleDeleteErrors(errors); closeAlert(name); }, ); }; return ( } confirmButtonText={} icon="trash" intent={Intent.DANGER} isOpen={isOpen} onCancel={handleCancelAccountDelete} onConfirm={handleConfirmAccountDelete} loading={isLoading} >

); } export default compose( withAlertStoreConnect(), withAlertActions, withDrawerActions, )(AccountDeleteAlert);