|
|
|
import { Tooltip } from '@material-ui/core';
|
|
|
|
import React from 'react';
|
|
|
|
import PropTypes from 'prop-types';
|
|
|
|
import { useSelector } from 'react-redux';
|
|
|
|
import classnames from 'classnames';
|
|
|
|
import Button from '../../ui/button';
|
|
|
|
import { getMaximumGasTotalInHexWei } from '../../../../shared/modules/gas.utils';
|
|
|
|
import { getConversionRate } from '../../../ducks/metamask/metamask';
|
|
|
|
import { useI18nContext } from '../../../hooks/useI18nContext';
|
|
|
|
import { useIncrementedGasFees } from '../../../hooks/useIncrementedGasFees';
|
|
|
|
import { isBalanceSufficient } from '../../../pages/send/send.utils';
|
|
|
|
import { getSelectedAccount } from '../../../selectors';
|
|
|
|
|
|
|
|
export default function CancelButton({
|
|
|
|
cancelTransaction,
|
|
|
|
transaction,
|
|
|
|
detailsModal,
|
|
|
|
}) {
|
|
|
|
const t = useI18nContext();
|
|
|
|
|
|
|
|
const customCancelGasSettings = useIncrementedGasFees(transaction);
|
|
|
|
|
|
|
|
const selectedAccount = useSelector(getSelectedAccount);
|
|
|
|
const conversionRate = useSelector(getConversionRate);
|
|
|
|
|
|
|
|
const hasEnoughCancelGas = isBalanceSufficient({
|
|
|
|
amount: '0x0',
|
|
|
|
gasTotal: getMaximumGasTotalInHexWei(customCancelGasSettings),
|
|
|
|
balance: selectedAccount.balance,
|
|
|
|
conversionRate,
|
|
|
|
});
|
|
|
|
|
|
|
|
const btn = (
|
|
|
|
<Button
|
|
|
|
onClick={cancelTransaction}
|
|
|
|
type="secondary"
|
|
|
|
className={classnames({
|
|
|
|
'transaction-list-item__header-button': !detailsModal,
|
|
|
|
'transaction-list-item-details__header-button-rounded-button':
|
|
|
|
detailsModal,
|
|
|
|
})}
|
|
|
|
disabled={!hasEnoughCancelGas}
|
|
|
|
>
|
|
|
|
{t('cancel')}
|
|
|
|
</Button>
|
|
|
|
);
|
|
|
|
return hasEnoughCancelGas ? (
|
|
|
|
btn
|
|
|
|
) : (
|
|
|
|
<Tooltip
|
|
|
|
title={t('notEnoughGas')}
|
|
|
|
data-testid="not-enough-gas__tooltip"
|
|
|
|
position="bottom"
|
|
|
|
>
|
|
|
|
<div>{btn}</div>
|
|
|
|
</Tooltip>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
CancelButton.propTypes = {
|
|
|
|
transaction: PropTypes.object,
|
|
|
|
cancelTransaction: PropTypes.func,
|
|
|
|
detailsModal: PropTypes.bool,
|
|
|
|
};
|