1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-04 23:14:56 +01:00
metamask-extension/ui/components/app/edit-gas-fee-popover/edit-gas-fee-popover.js

114 lines
4.2 KiB
JavaScript

import React from 'react';
import {
EDIT_GAS_MODES,
PRIORITY_LEVELS,
} from '../../../../shared/constants/gas';
import { useI18nContext } from '../../../hooks/useI18nContext';
import { useTransactionModalContext } from '../../../contexts/transaction-modal';
import Box from '../../ui/box';
import ErrorMessage from '../../ui/error-message';
import Popover from '../../ui/popover';
import Typography from '../../ui/typography/typography';
import { COLORS, TYPOGRAPHY } from '../../../helpers/constants/design-system';
import { INSUFFICIENT_FUNDS_ERROR_KEY } from '../../../helpers/constants/error-keys';
import { useGasFeeContext } from '../../../contexts/gasFee';
import AppLoadingSpinner from '../app-loading-spinner';
import ZENDESK_URLS from '../../../helpers/constants/zendesk-url';
import EditGasItem from './edit-gas-item';
import NetworkStatistics from './network-statistics';
const EditGasFeePopover = () => {
const { balanceError, editGasMode } = useGasFeeContext();
const t = useI18nContext();
const { closeAllModals, closeModal, currentModal, openModalCount } =
useTransactionModalContext();
if (currentModal !== 'editGasFee') {
return null;
}
let popupTitle = 'editGasFeeModalTitle';
if (editGasMode === EDIT_GAS_MODES.CANCEL) {
popupTitle = 'editCancellationGasFeeModalTitle';
} else if (editGasMode === EDIT_GAS_MODES.SPEED_UP) {
popupTitle = 'editSpeedUpEditGasFeeModalTitle';
}
return (
<Popover
title={t(popupTitle)}
// below logic ensures that back button is visible only if there are other modals open before this.
onBack={
openModalCount === 1 ? undefined : () => closeModal(['editGasFee'])
}
onClose={closeAllModals}
className="edit-gas-fee-popover"
>
<>
<AppLoadingSpinner />
<div className="edit-gas-fee-popover__wrapper">
<div className="edit-gas-fee-popover__content">
<Box>
{balanceError && (
<ErrorMessage errorKey={INSUFFICIENT_FUNDS_ERROR_KEY} />
)}
<div className="edit-gas-fee-popover__content__header">
<span className="edit-gas-fee-popover__content__header-option">
{t('gasOption')}
</span>
<span className="edit-gas-fee-popover__content__header-time">
{editGasMode !== EDIT_GAS_MODES.SWAPS && t('time')}
</span>
<span className="edit-gas-fee-popover__content__header-max-fee">
{t('maxFee')}
</span>
</div>
{(editGasMode === EDIT_GAS_MODES.CANCEL ||
editGasMode === EDIT_GAS_MODES.SPEED_UP) && (
<EditGasItem
priorityLevel={PRIORITY_LEVELS.TEN_PERCENT_INCREASED}
/>
)}
{editGasMode === EDIT_GAS_MODES.MODIFY_IN_PLACE && (
<EditGasItem priorityLevel={PRIORITY_LEVELS.LOW} />
)}
<EditGasItem priorityLevel={PRIORITY_LEVELS.MEDIUM} />
<EditGasItem priorityLevel={PRIORITY_LEVELS.HIGH} />
<div className="edit-gas-fee-popover__content__separator" />
{editGasMode === EDIT_GAS_MODES.MODIFY_IN_PLACE && (
<EditGasItem priorityLevel={PRIORITY_LEVELS.DAPP_SUGGESTED} />
)}
<EditGasItem priorityLevel={PRIORITY_LEVELS.CUSTOM} />
</Box>
<Box>
<NetworkStatistics />
<Typography
className="edit-gas-fee-popover__know-more"
align="center"
color={COLORS.TEXT_ALTERNATIVE}
tag={TYPOGRAPHY.Paragraph}
variant={TYPOGRAPHY.H7}
>
{t('learmMoreAboutGas', [
<a
key="learnMoreLink"
target="_blank"
rel="noopener noreferrer"
href={ZENDESK_URLS.USER_GUIDE_GAS}
>
{t('learnMore')}
</a>,
])}
</Typography>
</Box>
</div>
</div>
</>
</Popover>
);
};
export default EditGasFeePopover;