1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-23 09:52:26 +01:00

Remove usages of Conversion util in components folder in favor of Numeric (#17333)

Co-authored-by: Danica Shen <zhaodanica@gmail.com>
This commit is contained in:
Brad Decker 2023-01-23 13:30:43 -06:00 committed by GitHub
parent d2c3abea51
commit b4c5837760
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 47 additions and 69 deletions

View File

@ -23,15 +23,12 @@ import {
import { getCustomTokenAmount } from '../../../selectors'; import { getCustomTokenAmount } from '../../../selectors';
import { setCustomTokenAmount } from '../../../ducks/app/app'; import { setCustomTokenAmount } from '../../../ducks/app/app';
import { calcTokenAmount } from '../../../../shared/lib/transactions-controller-utils'; import { calcTokenAmount } from '../../../../shared/lib/transactions-controller-utils';
import {
conversionGreaterThan,
conversionLTE,
} from '../../../../shared/modules/conversion.utils';
import { import {
MAX_TOKEN_ALLOWANCE_AMOUNT, MAX_TOKEN_ALLOWANCE_AMOUNT,
NUM_W_OPT_DECIMAL_COMMA_OR_DOT_REGEX, NUM_W_OPT_DECIMAL_COMMA_OR_DOT_REGEX,
DECIMAL_REGEX, DECIMAL_REGEX,
} from '../../../../shared/constants/tokens'; } from '../../../../shared/constants/tokens';
import { Numeric } from '../../../../shared/modules/Numeric';
import { CustomSpendingCapTooltip } from './custom-spending-cap-tooltip'; import { CustomSpendingCapTooltip } from './custom-spending-cap-tooltip';
export default function CustomSpendingCap({ export default function CustomSpendingCap({
@ -58,20 +55,16 @@ export default function CustomSpendingCap({
}; };
const decConversionGreaterThan = (tokenValue, tokenBalance) => { const decConversionGreaterThan = (tokenValue, tokenBalance) => {
return conversionGreaterThan( return new Numeric(Number(replaceCommaToDot(tokenValue)), 10).greaterThan(
{ value: Number(replaceCommaToDot(tokenValue)), fromNumericBase: 'dec' }, Number(tokenBalance),
{ value: Number(tokenBalance), fromNumericBase: 'dec' }, 10,
); );
}; };
const getInputTextLogic = (inputNumber) => { const getInputTextLogic = (inputNumber) => {
if ( if (
conversionLTE( new Numeric(Number(replaceCommaToDot(inputNumber)), 10).lessThanOrEqualTo(
{ new Numeric(Number(currentTokenBalance), 10),
value: Number(replaceCommaToDot(inputNumber)),
fromNumericBase: 'dec',
},
{ value: Number(currentTokenBalance), fromNumericBase: 'dec' },
) )
) { ) {
return { return {

View File

@ -6,11 +6,9 @@ import UserPreferencedCurrencyDisplay from '../user-preferenced-currency-display
import fetchEstimatedL1Fee from '../../../helpers/utils/optimism/fetchEstimatedL1Fee'; import fetchEstimatedL1Fee from '../../../helpers/utils/optimism/fetchEstimatedL1Fee';
import { SECONDARY } from '../../../helpers/constants/common'; import { SECONDARY } from '../../../helpers/constants/common';
import { I18nContext } from '../../../contexts/i18n'; import { I18nContext } from '../../../contexts/i18n';
import { import { sumHexes } from '../../../../shared/modules/conversion.utils';
sumHexes, import { EtherDenomination } from '../../../../shared/constants/common';
toBigNumber, import { Numeric } from '../../../../shared/modules/Numeric';
toNormalizedDenomination,
} from '../../../../shared/modules/conversion.utils';
export default function MultilayerFeeMessage({ export default function MultilayerFeeMessage({
transaction, transaction,
@ -26,9 +24,9 @@ export default function MultilayerFeeMessage({
let layer1TotalBN; let layer1TotalBN;
if (fetchedLayer1Total !== null) { if (fetchedLayer1Total !== null) {
layer1TotalBN = toBigNumber.hex(fetchedLayer1Total); layer1TotalBN = new Numeric(fetchedLayer1Total, 16, EtherDenomination.WEI);
layer1Total = `${toNormalizedDenomination layer1Total = `${layer1TotalBN
.WEI(layer1TotalBN) .toDenomination(EtherDenomination.ETH)
.toFixed(12)} ${nativeCurrency}`; .toFixed(12)} ${nativeCurrency}`;
} }
@ -39,11 +37,10 @@ export default function MultilayerFeeMessage({
transaction.txParams.value || '0x0', transaction.txParams.value || '0x0',
); );
const totalBN = toBigNumber.hex(totalInWeiHex); const totalBN = new Numeric(totalInWeiHex, 16, EtherDenomination.WEI);
const totalInEth = `${toNormalizedDenomination const totalInEth = `${totalBN
.WEI(totalBN) .toDenomination(EtherDenomination.ETH)
.toFixed(12)} ${nativeCurrency}`; .toFixed(12)} ${nativeCurrency}`;
useEffect(() => { useEffect(() => {
const getEstimatedL1Fee = async () => { const getEstimatedL1Fee = async () => {
try { try {

View File

@ -6,7 +6,6 @@ import LedgerInstructionField from '../ledger-instruction-field';
import { MESSAGE_TYPE } from '../../../../shared/constants/app'; import { MESSAGE_TYPE } from '../../../../shared/constants/app';
import { getURLHostName } from '../../../helpers/utils/util'; import { getURLHostName } from '../../../helpers/utils/util';
import { conversionUtil } from '../../../../shared/modules/conversion.utils';
import { stripHexPrefix } from '../../../../shared/modules/hexstring-utils'; import { stripHexPrefix } from '../../../../shared/modules/hexstring-utils';
import Button from '../../ui/button'; import Button from '../../ui/button';
import SiteOrigin from '../../ui/site-origin'; import SiteOrigin from '../../ui/site-origin';
@ -20,6 +19,8 @@ import {
TEXT_ALIGN, TEXT_ALIGN,
} from '../../../helpers/constants/design-system'; } from '../../../helpers/constants/design-system';
import { NETWORK_TYPES } from '../../../../shared/constants/network'; import { NETWORK_TYPES } from '../../../../shared/constants/network';
import { Numeric } from '../../../../shared/modules/Numeric';
import { EtherDenomination } from '../../../../shared/constants/common';
import SignatureRequestOriginalWarning from './signature-request-original-warning'; import SignatureRequestOriginalWarning from './signature-request-original-warning';
export default class SignatureRequestOriginal extends Component { export default class SignatureRequestOriginal extends Component {
@ -35,7 +36,6 @@ export default class SignatureRequestOriginal extends Component {
}).isRequired, }).isRequired,
cancel: PropTypes.func.isRequired, cancel: PropTypes.func.isRequired,
clearConfirmTransaction: PropTypes.func.isRequired, clearConfirmTransaction: PropTypes.func.isRequired,
conversionRate: PropTypes.number,
history: PropTypes.object.isRequired, history: PropTypes.object.isRequired,
mostRecentOverviewPage: PropTypes.string.isRequired, mostRecentOverviewPage: PropTypes.string.isRequired,
sign: PropTypes.func.isRequired, sign: PropTypes.func.isRequired,
@ -263,7 +263,6 @@ export default class SignatureRequestOriginal extends Component {
render = () => { render = () => {
const { const {
messagesCount, messagesCount,
conversionRate,
nativeCurrency, nativeCurrency,
fromAccount: { address, balance, name }, fromAccount: { address, balance, name },
} = this.props; } = this.props;
@ -273,13 +272,11 @@ export default class SignatureRequestOriginal extends Component {
const rejectNText = t('rejectRequestsN', [messagesCount]); const rejectNText = t('rejectRequestsN', [messagesCount]);
const currentNetwork = this.getNetworkName(); const currentNetwork = this.getNetworkName();
const balanceInBaseAsset = conversionUtil(balance, { const balanceInBaseAsset = new Numeric(balance, 16, EtherDenomination.WEI)
fromNumericBase: 'hex', .toDenomination(EtherDenomination.ETH)
toNumericBase: 'dec', .toBase(10)
fromDenomination: 'WEI', .round(6)
numberOfDecimals: 6, .toString();
conversionRate,
});
return ( return (
<div className="request-signature__container"> <div className="request-signature__container">

View File

@ -4,7 +4,6 @@ import PropTypes from 'prop-types';
import LedgerInstructionField from '../ledger-instruction-field'; import LedgerInstructionField from '../ledger-instruction-field';
import { sanitizeMessage, getURLHostName } from '../../../helpers/utils/util'; import { sanitizeMessage, getURLHostName } from '../../../helpers/utils/util';
import { EVENT } from '../../../../shared/constants/metametrics'; import { EVENT } from '../../../../shared/constants/metametrics';
import { conversionUtil } from '../../../../shared/modules/conversion.utils';
import SiteOrigin from '../../ui/site-origin'; import SiteOrigin from '../../ui/site-origin';
import Button from '../../ui/button'; import Button from '../../ui/button';
import Typography from '../../ui/typography/typography'; import Typography from '../../ui/typography/typography';
@ -17,6 +16,8 @@ import {
} from '../../../helpers/constants/design-system'; } from '../../../helpers/constants/design-system';
import NetworkAccountBalanceHeader from '../network-account-balance-header'; import NetworkAccountBalanceHeader from '../network-account-balance-header';
import { NETWORK_TYPES } from '../../../../shared/constants/network'; import { NETWORK_TYPES } from '../../../../shared/constants/network';
import { Numeric } from '../../../../shared/modules/Numeric';
import { EtherDenomination } from '../../../../shared/constants/common';
import Footer from './signature-request-footer'; import Footer from './signature-request-footer';
import Message from './signature-request-message'; import Message from './signature-request-message';
@ -141,14 +142,12 @@ export default class SignatureRequest extends PureComponent {
} = this.memoizedParseMessage(data); } = this.memoizedParseMessage(data);
const currentNetwork = this.getNetworkName(); const currentNetwork = this.getNetworkName();
const balanceInBaseAsset = conversionUtil(balance, { const balanceInBaseAsset = new Numeric(balance, 16, EtherDenomination.WEI)
fromNumericBase: 'hex', .toDenomination(EtherDenomination.ETH)
toNumericBase: 'dec', .applyConversionRate(conversionRate)
fromDenomination: 'WEI', .round(6)
numberOfDecimals: 6, .toBase(10)
conversionRate, .toString();
});
const onSign = (event) => { const onSign = (event) => {
sign(event); sign(event);
trackEvent({ trackEvent({

View File

@ -18,7 +18,7 @@ const render = () => {
address: '0x64a845a5b02460acf8a3d84503b0d68d028b4bb4', address: '0x64a845a5b02460acf8a3d84503b0d68d028b4bb4',
addressLabel: 'Account 1', addressLabel: 'Account 1',
lastConnectedDate: 'Feb-22-2022', lastConnectedDate: 'Feb-22-2022',
balance: '8.7a73149c048545a3fe58', balance: '87a73149c048545a3fe58',
has: () => { has: () => {
/** nothing to do */ /** nothing to do */
}, },
@ -28,7 +28,7 @@ const render = () => {
address: '0x64a845a5b02460acf8a3d84503b0d68d028b4bb4', address: '0x64a845a5b02460acf8a3d84503b0d68d028b4bb4',
addressLabel: 'Account 2', addressLabel: 'Account 2',
lastConnectedDate: 'Feb-22-2022', lastConnectedDate: 'Feb-22-2022',
balance: '8.7a73149c048545a3fe58', balance: '87a73149c048545a3fe58',
has: () => { has: () => {
/** nothing to do */ /** nothing to do */
}, },

View File

@ -15,7 +15,7 @@ import {
TEXT_ALIGN, TEXT_ALIGN,
SIZES, SIZES,
} from '../../../helpers/constants/design-system'; } from '../../../helpers/constants/design-system';
import { conversionGreaterThan } from '../../../../shared/modules/conversion.utils'; import { Numeric } from '../../../../shared/modules/Numeric';
export default function ReviewSpendingCap({ export default function ReviewSpendingCap({
tokenName, tokenName,
@ -24,10 +24,10 @@ export default function ReviewSpendingCap({
onEdit, onEdit,
}) { }) {
const t = useContext(I18nContext); const t = useContext(I18nContext);
const valueIsGreaterThanBalance = conversionGreaterThan( const valueIsGreaterThanBalance = new Numeric(
{ value: Number(tokenValue), fromNumericBase: 'dec' }, Number(tokenValue),
{ value: Number(currentTokenBalance), fromNumericBase: 'dec' }, 10,
); ).greaterThan(Number(currentTokenBalance), 10);
return ( return (
<Box <Box

View File

@ -3,15 +3,12 @@ import PropTypes from 'prop-types';
import BigNumber from 'bignumber.js'; import BigNumber from 'bignumber.js';
import UnitInput from '../unit-input'; import UnitInput from '../unit-input';
import CurrencyDisplay from '../currency-display'; import CurrencyDisplay from '../currency-display';
import { import { getWeiHexFromDecimalValue } from '../../../../shared/modules/conversion.utils';
conversionUtil,
getWeiHexFromDecimalValue,
multiplyCurrencies,
} from '../../../../shared/modules/conversion.utils';
import { ETH } from '../../../helpers/constants/common'; import { ETH } from '../../../helpers/constants/common';
import { addHexPrefix } from '../../../../app/scripts/lib/util'; import { addHexPrefix } from '../../../../app/scripts/lib/util';
import { isEqualCaseInsensitive } from '../../../../shared/modules/string-utils'; import { isEqualCaseInsensitive } from '../../../../shared/modules/string-utils';
import { Numeric } from '../../../../shared/modules/Numeric';
/** /**
* Component that allows user to enter token values as a number, and props receive a converted * Component that allows user to enter token values as a number, and props receive a converted
@ -69,13 +66,10 @@ export default class TokenInput extends PureComponent {
const { value: hexValue, token: { decimals, symbol } = {} } = props; const { value: hexValue, token: { decimals, symbol } = {} } = props;
const multiplier = Math.pow(10, Number(decimals || 0)); const multiplier = Math.pow(10, Number(decimals || 0));
const decimalValueString = conversionUtil(addHexPrefix(hexValue), { const decimalValueString = new Numeric(addHexPrefix(hexValue), 16)
fromNumericBase: 'hex', .toBase(10)
toNumericBase: 'dec', .applyConversionRate(symbol ? multiplier : 1, true)
toCurrency: symbol, .toString();
conversionRate: multiplier,
invertConversionRate: true,
});
return Number(decimalValueString) ? decimalValueString : ''; return Number(decimalValueString) ? decimalValueString : '';
} }
@ -89,12 +83,10 @@ export default class TokenInput extends PureComponent {
newDecimalValue = new BigNumber(decimalValue, 10).toFixed(decimals); newDecimalValue = new BigNumber(decimalValue, 10).toFixed(decimals);
} }
const multiplier = Math.pow(10, Number(decimals || 0)); const hexValue = new Numeric(newDecimalValue || 0, 10)
const hexValue = multiplyCurrencies(newDecimalValue || 0, multiplier, { .times(Math.pow(10, Number(decimals || 0)), 10)
multiplicandBase: 10, .toBase(16)
multiplierBase: 10, .toString();
toNumericBase: 'hex',
});
this.setState({ hexValue, decimalValue }); this.setState({ hexValue, decimalValue });
onChange(hexValue); onChange(hexValue);