From 3afe15ac2f978a7a0150940c417c860584149c20 Mon Sep 17 00:00:00 2001 From: digiwand <20778143+digiwand@users.noreply.github.com> Date: Wed, 10 Jul 2024 14:52:11 +0100 Subject: [PATCH 01/17] feat: support simulations in stories --- ui/pages/confirmations/confirm/stories/utils.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ui/pages/confirmations/confirm/stories/utils.tsx b/ui/pages/confirmations/confirm/stories/utils.tsx index 1bbff2f6e851..f50750065032 100644 --- a/ui/pages/confirmations/confirm/stories/utils.tsx +++ b/ui/pages/confirmations/confirm/stories/utils.tsx @@ -30,7 +30,11 @@ export function ConfirmStoryTemplate( confirm: { currentConfirmation, }, - metamask: { ...mockState.metamask, ...metamaskState }, + metamask: { + ...mockState.metamask, + ...metamaskState, + useTransactionSimulations: true, + }, }); return ( From eff04cc7e712b45decd62fc23b70a18aed3f7d90 Mon Sep 17 00:00:00 2001 From: digiwand <20778143+digiwand@users.noreply.github.com> Date: Wed, 10 Jul 2024 14:53:00 +0100 Subject: [PATCH 02/17] feat: update parseTypedDataMessage to preserve value precision --- shared/modules/transaction.utils.ts | 37 +++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/shared/modules/transaction.utils.ts b/shared/modules/transaction.utils.ts index edf24d20be18..5c21bf0f62f8 100644 --- a/shared/modules/transaction.utils.ts +++ b/shared/modules/transaction.utils.ts @@ -282,5 +282,38 @@ export async function determineTransactionAssetType( return { assetType: AssetType.native, tokenStandard: TokenStandard.none }; } -export const parseTypedDataMessage = (dataToParse: string) => - JSON.parse(dataToParse); +const REGEX_MESSAGE_VALUE_LARGE = /"message":\{[^}]*"value":(\d{15,})/u; + +function extractLargeMessageValue(dataToParse: string): string | undefined { + if (typeof dataToParse !== 'string') { + return undefined; + } + return dataToParse.match(REGEX_MESSAGE_VALUE_LARGE)?.[1]; +} + +/** + * JSON.parse has a limitation which coerces values to scientific notation if numbers are greator than + * Number.MAX_SAFE_INTEGER. This can cause a loss in precision. + * + * Aside from precision concerns, if the value returned was a large number greator than 15 digits, + * e.g. 3.000123123123121e+26, passing the value to BigNumber will throw the error: + * Error: new BigNumber() number type has more than 15 significant digits + * + * Note that using JSON.parse reviver cannot help since the value will be coerced by the time it + * reaches the reviver function. + * + * This function has a workaround to extract the large value from the message and return it as string. + * + * @param dataToParse + * @returns + */ +export const parseTypedDataMessage = (dataToParse: string) => { + const result = JSON.parse(dataToParse); + + const largeMessageValue = extractLargeMessageValue(dataToParse); + if (largeMessageValue) { + result.message.value = largeMessageValue; + } + + return result; +}; From 9d82e3ebd0745da19a1b1d3297350d403a46233b Mon Sep 17 00:00:00 2001 From: digiwand <20778143+digiwand@users.noreply.github.com> Date: Wed, 10 Jul 2024 14:57:58 +0100 Subject: [PATCH 03/17] fix: number type has more than 15 error - calculation passed to BigNumber may result in over 15 digits which errors - preserve the precision up to formatAmount - currently formatAmount takes away precision after it transforms the value using toNumber to pass to Intl.Number --- .../typed-sign/permit-simulation/permit-simulation.tsx | 9 ++++++--- .../confirmations/components/confirm/row/dataTree.tsx | 10 ++++++---- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/ui/pages/confirmations/components/confirm/info/typed-sign/permit-simulation/permit-simulation.tsx b/ui/pages/confirmations/components/confirm/info/typed-sign/permit-simulation/permit-simulation.tsx index 418b61a1eb24..520284acb1ee 100644 --- a/ui/pages/confirmations/components/confirm/info/typed-sign/permit-simulation/permit-simulation.tsx +++ b/ui/pages/confirmations/components/confirm/info/typed-sign/permit-simulation/permit-simulation.tsx @@ -52,10 +52,13 @@ const PermitSimulation: React.FC<{ }, [exchangeRate, value]); const { tokenValue, tokenValueMaxPrecision } = useMemo(() => { - const valueBN = new BigNumber(value / Math.pow(10, tokenDecimals)); + const valueBN = new BigNumber(value); + const diviserBN = new BigNumber(10).pow(tokenDecimals); + const resultBn = valueBN.div(diviserBN); + return { - tokenValue: formatAmount('en-US', valueBN), - tokenValueMaxPrecision: formatAmountMaxPrecision('en-US', valueBN), + tokenValue: formatAmount('en-US', resultBn), + tokenValueMaxPrecision: formatAmountMaxPrecision('en-US', resultBn), }; }, [tokenDecimals, value]); diff --git a/ui/pages/confirmations/components/confirm/row/dataTree.tsx b/ui/pages/confirmations/components/confirm/row/dataTree.tsx index f822651fad0f..983cfe8a595e 100644 --- a/ui/pages/confirmations/components/confirm/row/dataTree.tsx +++ b/ui/pages/confirmations/components/confirm/row/dataTree.tsx @@ -81,11 +81,13 @@ const DataField = memo( ); } if (isPermit && label === 'value') { - const valueBN = new BigNumber( - parseInt(value, 10) / Math.pow(10, tokenDecimals), - ); - const tokenValue = formatAmount('en-US', valueBN); + const valueBN = new BigNumber(value); + const diviserBN = new BigNumber(10).pow(tokenDecimals); + const resultBn = valueBN.div(diviserBN); + + const tokenValue = formatAmount('en-US', resultBn); const tokenValueMaxPrecision = formatAmountMaxPrecision('en-US', valueBN); + return ( Date: Wed, 10 Jul 2024 15:01:32 +0100 Subject: [PATCH 04/17] feat: apply ellipsis to simulation value --- .../typed-sign/permit-simulation/permit-simulation.tsx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/ui/pages/confirmations/components/confirm/info/typed-sign/permit-simulation/permit-simulation.tsx b/ui/pages/confirmations/components/confirm/info/typed-sign/permit-simulation/permit-simulation.tsx index 520284acb1ee..b80d40bcc8f7 100644 --- a/ui/pages/confirmations/components/confirm/info/typed-sign/permit-simulation/permit-simulation.tsx +++ b/ui/pages/confirmations/components/confirm/info/typed-sign/permit-simulation/permit-simulation.tsx @@ -16,6 +16,7 @@ import { Box, Text } from '../../../../../../../components/component-library'; import Tooltip from '../../../../../../../components/ui/tooltip'; import { BackgroundColor, + BlockSize, BorderRadius, Display, TextAlign, @@ -71,9 +72,13 @@ const PermitSimulation: React.FC<{ - + - + {tokenValue} From 89f75acfdeb4e42cdc618d21044c2bcca07695c4 Mon Sep 17 00:00:00 2001 From: digiwand <20778143+digiwand@users.noreply.github.com> Date: Wed, 10 Jul 2024 17:19:03 +0100 Subject: [PATCH 05/17] fix: loss of precision is misleading. do not use formatAmount --- .../permit-simulation/permit-simulation.tsx | 20 +++++++++++++------ .../components/confirm/row/dataTree.tsx | 19 ++++++++++++------ 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/ui/pages/confirmations/components/confirm/info/typed-sign/permit-simulation/permit-simulation.tsx b/ui/pages/confirmations/components/confirm/info/typed-sign/permit-simulation/permit-simulation.tsx index b80d40bcc8f7..11d0dcd19dcc 100644 --- a/ui/pages/confirmations/components/confirm/info/typed-sign/permit-simulation/permit-simulation.tsx +++ b/ui/pages/confirmations/components/confirm/info/typed-sign/permit-simulation/permit-simulation.tsx @@ -24,10 +24,10 @@ import { import { SignatureRequestType } from '../../../../../types/confirm'; import useTokenExchangeRate from '../../../../../../../components/app/currency-input/hooks/useTokenExchangeRate'; import { IndividualFiatDisplay } from '../../../../simulation-details/fiat-display'; -import { - formatAmount, - formatAmountMaxPrecision, -} from '../../../../simulation-details/formatAmount'; +// import { +// formatAmount, +// formatAmountMaxPrecision, +// } from '../../../../simulation-details/formatAmount'; import { ConfirmInfoSection } from '../../../../../../../components/app/confirm/info/row/section'; const PermitSimulation: React.FC<{ @@ -58,9 +58,17 @@ const PermitSimulation: React.FC<{ const resultBn = valueBN.div(diviserBN); return { - tokenValue: formatAmount('en-US', resultBn), - tokenValueMaxPrecision: formatAmountMaxPrecision('en-US', resultBn), + tokenValue: resultBn.toString(), + tokenValueMaxPrecision: resultBn.toString(), }; + + /** + * @fixme comment out for now since formatAmount reduces precision + * @see {@link https://github.com/MetaMask/metamask-extension/pull/25438} + */ // return { + // tokenValue: formatAmount('en-US', resultBn), + // tokenValueMaxPrecision: formatAmountMaxPrecision('en-US', resultBn), + // }; }, [tokenDecimals, value]); return ( diff --git a/ui/pages/confirmations/components/confirm/row/dataTree.tsx b/ui/pages/confirmations/components/confirm/row/dataTree.tsx index 983cfe8a595e..523ae6c2e987 100644 --- a/ui/pages/confirmations/components/confirm/row/dataTree.tsx +++ b/ui/pages/confirmations/components/confirm/row/dataTree.tsx @@ -12,10 +12,10 @@ import { ConfirmInfoRowDate, ConfirmInfoRowText, } from '../../../../../components/app/confirm/info/row'; -import { - formatAmount, - formatAmountMaxPrecision, -} from '../../simulation-details/formatAmount'; +// import { +// formatAmount, +// formatAmountMaxPrecision, +// } from '../../simulation-details/formatAmount'; type ValueType = string | Record | TreeData[]; @@ -85,8 +85,15 @@ const DataField = memo( const diviserBN = new BigNumber(10).pow(tokenDecimals); const resultBn = valueBN.div(diviserBN); - const tokenValue = formatAmount('en-US', resultBn); - const tokenValueMaxPrecision = formatAmountMaxPrecision('en-US', valueBN); + const tokenValue = resultBn.toString(); + const tokenValueMaxPrecision = resultBn.toString(); + + /** + * @fixme comment out for now since formatAmount reduces precision + * @see {@link https://github.com/MetaMask/metamask-extension/pull/25438} + */ + // const tokenValue = formatAmount('en-US', resultBn); + // const tokenValueMaxPrecision = formatAmountMaxPrecision('en-US', valueBN); return ( Date: Wed, 10 Jul 2024 17:19:55 +0100 Subject: [PATCH 06/17] fix: normalize parseTypedDataMessage value to string for consistency --- shared/modules/transaction.utils.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/shared/modules/transaction.utils.ts b/shared/modules/transaction.utils.ts index 5c21bf0f62f8..758682d771f9 100644 --- a/shared/modules/transaction.utils.ts +++ b/shared/modules/transaction.utils.ts @@ -302,7 +302,8 @@ function extractLargeMessageValue(dataToParse: string): string | undefined { * Note that using JSON.parse reviver cannot help since the value will be coerced by the time it * reaches the reviver function. * - * This function has a workaround to extract the large value from the message and return it as string. + * This function has a workaround to extract the large value from the message and replace + * the message value with the string value. * * @param dataToParse * @returns @@ -310,9 +311,9 @@ function extractLargeMessageValue(dataToParse: string): string | undefined { export const parseTypedDataMessage = (dataToParse: string) => { const result = JSON.parse(dataToParse); - const largeMessageValue = extractLargeMessageValue(dataToParse); - if (largeMessageValue) { - result.message.value = largeMessageValue; + const messageValue = extractLargeMessageValue(dataToParse); + if (result.message?.value) { + result.message.value = messageValue || String(result.message.value); } return result; From 626a5db77529e0e6056ca262cc95920832141605 Mon Sep 17 00:00:00 2001 From: digiwand <20778143+digiwand@users.noreply.github.com> Date: Wed, 10 Jul 2024 17:30:58 +0100 Subject: [PATCH 07/17] fix: update parseTypedDataMessage to handle spaces --- shared/modules/transaction.utils.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/shared/modules/transaction.utils.ts b/shared/modules/transaction.utils.ts index 758682d771f9..e09680c6c4bd 100644 --- a/shared/modules/transaction.utils.ts +++ b/shared/modules/transaction.utils.ts @@ -282,7 +282,8 @@ export async function determineTransactionAssetType( return { assetType: AssetType.native, tokenStandard: TokenStandard.none }; } -const REGEX_MESSAGE_VALUE_LARGE = /"message":\{[^}]*"value":(\d{15,})/u; +const REGEX_MESSAGE_VALUE_LARGE = + /"message"\s*:\s*\{[^}]*"value"\s*:\s*(\d{15,})/u; function extractLargeMessageValue(dataToParse: string): string | undefined { if (typeof dataToParse !== 'string') { From 050222ff3f7c5a4ccd203a08e6f99a411867d7fe Mon Sep 17 00:00:00 2001 From: digiwand <20778143+digiwand@users.noreply.github.com> Date: Wed, 10 Jul 2024 17:31:09 +0100 Subject: [PATCH 08/17] test: parseTypedDataMessage message.value --- shared/modules/transaction.utils.test.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/shared/modules/transaction.utils.test.js b/shared/modules/transaction.utils.test.js index ad43a8aa227b..133f2de9141e 100644 --- a/shared/modules/transaction.utils.test.js +++ b/shared/modules/transaction.utils.test.js @@ -395,6 +395,21 @@ describe('Transaction.utils', function () { const result = parseTypedDataMessage('{"test": "dummy"}'); expect(result.test).toBe('dummy'); }); + + it('parses message.value as a string', () => { + const result = parseTypedDataMessage( + '{"test": "dummy", "message": { "value": 3000123} }', + ); + expect(result.message.value).toBe('3000123'); + }); + + it('parses message.value such that it does not lose precision', () => { + const result = parseTypedDataMessage( + '{"test": "dummy", "message": { "value": 30001231231212312138768} }', + ); + expect(result.message.value).toBe('30001231231212312138768'); + }); + it('throw error for invalid typedDataMessage', () => { expect(() => { parseTypedDataMessage(''); From 847b6902f5fc33ef4e57493d16dde4f02bb40a12 Mon Sep 17 00:00:00 2001 From: digiwand <20778143+digiwand@users.noreply.github.com> Date: Wed, 10 Jul 2024 23:06:29 +0100 Subject: [PATCH 09/17] fix: invalid jsdoc @fixme -> FIXME --- .../info/typed-sign/permit-simulation/permit-simulation.tsx | 6 ++++-- ui/pages/confirmations/components/confirm/row/dataTree.tsx | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/ui/pages/confirmations/components/confirm/info/typed-sign/permit-simulation/permit-simulation.tsx b/ui/pages/confirmations/components/confirm/info/typed-sign/permit-simulation/permit-simulation.tsx index 11d0dcd19dcc..f0efe35fa852 100644 --- a/ui/pages/confirmations/components/confirm/info/typed-sign/permit-simulation/permit-simulation.tsx +++ b/ui/pages/confirmations/components/confirm/info/typed-sign/permit-simulation/permit-simulation.tsx @@ -63,9 +63,11 @@ const PermitSimulation: React.FC<{ }; /** - * @fixme comment out for now since formatAmount reduces precision + * FIXME comment out for now since formatAmount reduces precision + * * @see {@link https://github.com/MetaMask/metamask-extension/pull/25438} - */ // return { + */ + // return { // tokenValue: formatAmount('en-US', resultBn), // tokenValueMaxPrecision: formatAmountMaxPrecision('en-US', resultBn), // }; diff --git a/ui/pages/confirmations/components/confirm/row/dataTree.tsx b/ui/pages/confirmations/components/confirm/row/dataTree.tsx index 523ae6c2e987..d9ae88ad2abc 100644 --- a/ui/pages/confirmations/components/confirm/row/dataTree.tsx +++ b/ui/pages/confirmations/components/confirm/row/dataTree.tsx @@ -89,7 +89,8 @@ const DataField = memo( const tokenValueMaxPrecision = resultBn.toString(); /** - * @fixme comment out for now since formatAmount reduces precision + * FIXME comment out for now since formatAmount reduces precision + * * @see {@link https://github.com/MetaMask/metamask-extension/pull/25438} */ // const tokenValue = formatAmount('en-US', resultBn); From 516efbe6d536fe442759e2a1189f212d01875a76 Mon Sep 17 00:00:00 2001 From: digiwand <20778143+digiwand@users.noreply.github.com> Date: Thu, 11 Jul 2024 00:27:28 +0100 Subject: [PATCH 10/17] feat: add ellipsis to Permit value text --- ui/components/app/confirm/info/row/text.tsx | 22 +++++++++++++++---- .../components/confirm/row/dataTree.tsx | 1 + 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/ui/components/app/confirm/info/row/text.tsx b/ui/components/app/confirm/info/row/text.tsx index dacedf310457..a93b053dd80e 100644 --- a/ui/components/app/confirm/info/row/text.tsx +++ b/ui/components/app/confirm/info/row/text.tsx @@ -2,6 +2,7 @@ import React, { useContext } from 'react'; import { I18nContext } from '../../../../../contexts/i18n'; import { AlignItems, + BlockSize, Display, FlexWrap, IconColor, @@ -10,8 +11,18 @@ import { import { Box, ButtonIcon, IconName, Text } from '../../../../component-library'; import Tooltip from '../../../../ui/tooltip'; -const InfoText = ({ text }: { text: string }) => ( - +const InfoText = ({ + isEllipsis, + text, +}: { + isEllipsis: boolean; + text: string; +}) => ( + {text} ); @@ -20,12 +31,14 @@ export type ConfirmInfoRowTextProps = { text: string; onEditClick?: () => void; editIconClassName?: string; + isEllipsis?: boolean; tooltip?: string; }; export const ConfirmInfoRowText: React.FC = ({ text, onEditClick, + isEllipsis = false, editIconClassName, tooltip, }) => { @@ -39,6 +52,7 @@ export const ConfirmInfoRowText: React.FC = ({ alignItems={AlignItems.center} flexWrap={FlexWrap.Wrap} gap={2} + minWidth={BlockSize.Zero} > {tooltip ? ( = ({ wrapperStyle={{ minWidth: 0 }} interactive > - + ) : ( - + )} {isEditable ? ( From 2d8b1451c45e6acdf9d58d706f6ed228a5e62a50 Mon Sep 17 00:00:00 2001 From: digiwand <20778143+digiwand@users.noreply.github.com> Date: Thu, 11 Jul 2024 00:39:33 +0100 Subject: [PATCH 11/17] feat: revert scientific notation in favor of values that may lose precision --- .../permit-simulation/permit-simulation.tsx | 25 ++++++++----------- .../components/confirm/row/dataTree.tsx | 15 +++++------ .../simulation-details/formatAmount.test.ts | 9 +++++++ 3 files changed, 25 insertions(+), 24 deletions(-) diff --git a/ui/pages/confirmations/components/confirm/info/typed-sign/permit-simulation/permit-simulation.tsx b/ui/pages/confirmations/components/confirm/info/typed-sign/permit-simulation/permit-simulation.tsx index f0efe35fa852..431c42247bc5 100644 --- a/ui/pages/confirmations/components/confirm/info/typed-sign/permit-simulation/permit-simulation.tsx +++ b/ui/pages/confirmations/components/confirm/info/typed-sign/permit-simulation/permit-simulation.tsx @@ -24,10 +24,10 @@ import { import { SignatureRequestType } from '../../../../../types/confirm'; import useTokenExchangeRate from '../../../../../../../components/app/currency-input/hooks/useTokenExchangeRate'; import { IndividualFiatDisplay } from '../../../../simulation-details/fiat-display'; -// import { -// formatAmount, -// formatAmountMaxPrecision, -// } from '../../../../simulation-details/formatAmount'; +import { + formatAmount, + formatAmountMaxPrecision, +} from '../../../../simulation-details/formatAmount'; import { ConfirmInfoSection } from '../../../../../../../components/app/confirm/info/row/section'; const PermitSimulation: React.FC<{ @@ -57,20 +57,15 @@ const PermitSimulation: React.FC<{ const diviserBN = new BigNumber(10).pow(tokenDecimals); const resultBn = valueBN.div(diviserBN); - return { - tokenValue: resultBn.toString(), - tokenValueMaxPrecision: resultBn.toString(), - }; - /** - * FIXME comment out for now since formatAmount reduces precision + * FIXME - Precision may be lost for large values when using formatAmount * - * @see {@link https://github.com/MetaMask/metamask-extension/pull/25438} + * @see {@link https://github.com/MetaMask/metamask-extension/issues/25755} */ - // return { - // tokenValue: formatAmount('en-US', resultBn), - // tokenValueMaxPrecision: formatAmountMaxPrecision('en-US', resultBn), - // }; + return { + tokenValue: formatAmount('en-US', resultBn), + tokenValueMaxPrecision: formatAmountMaxPrecision('en-US', resultBn), + }; }, [tokenDecimals, value]); return ( diff --git a/ui/pages/confirmations/components/confirm/row/dataTree.tsx b/ui/pages/confirmations/components/confirm/row/dataTree.tsx index 7e3c6cd7ae9f..bc1e5705a4ba 100644 --- a/ui/pages/confirmations/components/confirm/row/dataTree.tsx +++ b/ui/pages/confirmations/components/confirm/row/dataTree.tsx @@ -12,10 +12,10 @@ import { ConfirmInfoRowDate, ConfirmInfoRowText, } from '../../../../../components/app/confirm/info/row'; -// import { -// formatAmount, -// formatAmountMaxPrecision, -// } from '../../simulation-details/formatAmount'; +import { + formatAmount, + formatAmountMaxPrecision, +} from '../../simulation-details/formatAmount'; type ValueType = string | Record | TreeData[]; @@ -85,16 +85,13 @@ const DataField = memo( const diviserBN = new BigNumber(10).pow(tokenDecimals); const resultBn = valueBN.div(diviserBN); - const tokenValue = resultBn.toString(); - const tokenValueMaxPrecision = resultBn.toString(); - /** * FIXME comment out for now since formatAmount reduces precision * * @see {@link https://github.com/MetaMask/metamask-extension/pull/25438} */ - // const tokenValue = formatAmount('en-US', resultBn); - // const tokenValueMaxPrecision = formatAmountMaxPrecision('en-US', valueBN); + const tokenValue = formatAmount('en-US', resultBn); + const tokenValueMaxPrecision = formatAmountMaxPrecision('en-US', valueBN); return ( { [47361034.006, '47,361,034'], ['12130982923409.5', '12,130,982,923,410'], ['1213098292340944.5', '1,213,098,292,340,945'], + // Precision is lost after the value is greator than Number.MAX_SAFE_INTEGER. The digits after + // the 15th digit become 0's. + // TODO fix the precision + /** @see {@link https://github.com/MetaMask/metamask-extension/issues/25755} */ + ['30001231231212312138768', '30,001,231,231,212,312,000,000'], + [ + '115792089237316195423570985008687907853269984665640564039457584007913129639935', + '115,792,089,237,316,200,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000', + ], ])( 'formats amount greater than or equal to 1 with appropriate decimal precision (%s => %s)', (amount: number, expected: string) => { From 1182bb509dbfd6e2c65f72724481f03b87f2b004 Mon Sep 17 00:00:00 2001 From: digiwand <20778143+digiwand@users.noreply.github.com> Date: Thu, 11 Jul 2024 01:01:07 +0100 Subject: [PATCH 12/17] fix: fixme jsdoc lint --- .../typed-sign/permit-simulation/permit-simulation.tsx | 7 ++----- ui/pages/confirmations/components/confirm/row/dataTree.tsx | 7 ++----- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/ui/pages/confirmations/components/confirm/info/typed-sign/permit-simulation/permit-simulation.tsx b/ui/pages/confirmations/components/confirm/info/typed-sign/permit-simulation/permit-simulation.tsx index 431c42247bc5..97b212d08256 100644 --- a/ui/pages/confirmations/components/confirm/info/typed-sign/permit-simulation/permit-simulation.tsx +++ b/ui/pages/confirmations/components/confirm/info/typed-sign/permit-simulation/permit-simulation.tsx @@ -57,11 +57,8 @@ const PermitSimulation: React.FC<{ const diviserBN = new BigNumber(10).pow(tokenDecimals); const resultBn = valueBN.div(diviserBN); - /** - * FIXME - Precision may be lost for large values when using formatAmount - * - * @see {@link https://github.com/MetaMask/metamask-extension/issues/25755} - */ + // FIXME - Precision may be lost for large values when using formatAmount + /** @see {@link https://github.com/MetaMask/metamask-extension/issues/25755} */ return { tokenValue: formatAmount('en-US', resultBn), tokenValueMaxPrecision: formatAmountMaxPrecision('en-US', resultBn), diff --git a/ui/pages/confirmations/components/confirm/row/dataTree.tsx b/ui/pages/confirmations/components/confirm/row/dataTree.tsx index bc1e5705a4ba..f7b35a35f352 100644 --- a/ui/pages/confirmations/components/confirm/row/dataTree.tsx +++ b/ui/pages/confirmations/components/confirm/row/dataTree.tsx @@ -85,11 +85,8 @@ const DataField = memo( const diviserBN = new BigNumber(10).pow(tokenDecimals); const resultBn = valueBN.div(diviserBN); - /** - * FIXME comment out for now since formatAmount reduces precision - * - * @see {@link https://github.com/MetaMask/metamask-extension/pull/25438} - */ + // FIXME - Precision may be lost for large values when using formatAmount + /** @see {@link https://github.com/MetaMask/metamask-extension/issues/25755} */ const tokenValue = formatAmount('en-US', resultBn); const tokenValueMaxPrecision = formatAmountMaxPrecision('en-US', valueBN); From ab747cf792929f1cc786e52cb5e1b1cda5247862 Mon Sep 17 00:00:00 2001 From: digiwand <20778143+digiwand@users.noreply.github.com> Date: Thu, 11 Jul 2024 15:20:16 +0100 Subject: [PATCH 13/17] test:fix: update snapshots to support Permit updates --- .../permit-simulation.test.tsx.snap | 8 ++++---- .../row/__snapshots__/dataTree.test.tsx.snap | 20 +++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/ui/pages/confirmations/components/confirm/info/typed-sign/permit-simulation/__snapshots__/permit-simulation.test.tsx.snap b/ui/pages/confirmations/components/confirm/info/typed-sign/permit-simulation/__snapshots__/permit-simulation.test.tsx.snap index 25beacfa0ef5..a671b24d02a7 100644 --- a/ui/pages/confirmations/components/confirm/info/typed-sign/permit-simulation/__snapshots__/permit-simulation.test.tsx.snap +++ b/ui/pages/confirmations/components/confirm/info/typed-sign/permit-simulation/__snapshots__/permit-simulation.test.tsx.snap @@ -34,7 +34,7 @@ exports[`PermitSimulation renders component correctly 1`] = `

30

diff --git a/ui/pages/confirmations/components/confirm/row/__snapshots__/dataTree.test.tsx.snap b/ui/pages/confirmations/components/confirm/row/__snapshots__/dataTree.test.tsx.snap index 841f032ef091..b8d470123220 100644 --- a/ui/pages/confirmations/components/confirm/row/__snapshots__/dataTree.test.tsx.snap +++ b/ui/pages/confirmations/components/confirm/row/__snapshots__/dataTree.test.tsx.snap @@ -19,7 +19,7 @@ exports[`DataTree correctly renders reverse strings 1`] = `

Date: Thu, 11 Jul 2024 15:23:04 +0100 Subject: [PATCH 14/17] test:fix: update TypedSignInfo snapshot --- .../__snapshots__/typed-sign.test.tsx.snap | 33 +++++++++---------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/ui/pages/confirmations/components/confirm/info/typed-sign/__snapshots__/typed-sign.test.tsx.snap b/ui/pages/confirmations/components/confirm/info/typed-sign/__snapshots__/typed-sign.test.tsx.snap index cc4071497ce2..1d52c4c47392 100644 --- a/ui/pages/confirmations/components/confirm/info/typed-sign/__snapshots__/typed-sign.test.tsx.snap +++ b/ui/pages/confirmations/components/confirm/info/typed-sign/__snapshots__/typed-sign.test.tsx.snap @@ -222,7 +222,7 @@ exports[`TypedSignInfo correctly renders permit sign type 1`] = `

3,000

@@ -432,7 +431,7 @@ exports[`TypedSignInfo correctly renders permit sign type 1`] = `

Date: Thu, 11 Jul 2024 15:23:56 +0100 Subject: [PATCH 15/17] test:fix: update typedSignDataV1 info snapshot --- .../__snapshots__/typedSignDataV1.test.tsx.snap | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ui/pages/confirmations/components/confirm/row/typed-sign-data-v1/__snapshots__/typedSignDataV1.test.tsx.snap b/ui/pages/confirmations/components/confirm/row/typed-sign-data-v1/__snapshots__/typedSignDataV1.test.tsx.snap index 760f38e61738..21d11d1453ec 100644 --- a/ui/pages/confirmations/components/confirm/row/typed-sign-data-v1/__snapshots__/typedSignDataV1.test.tsx.snap +++ b/ui/pages/confirmations/components/confirm/row/typed-sign-data-v1/__snapshots__/typedSignDataV1.test.tsx.snap @@ -26,7 +26,7 @@ exports[`ConfirmInfoRowTypedSignData should match snapshot 1`] = `

Date: Thu, 11 Jul 2024 15:36:03 +0100 Subject: [PATCH 16/17] test:fix: snapshots min-width: 0 --- .../info/__snapshots__/info.test.tsx.snap | 10 +++--- .../__snapshots__/personal-sign.test.tsx.snap | 4 +-- .../__snapshots__/siwe-sign.test.tsx.snap | 32 +++++++++---------- .../advanced-details.test.tsx.snap | 6 ++-- .../__snapshots__/typed-sign-v1.test.tsx.snap | 4 +-- .../__snapshots__/typedSignData.test.tsx.snap | 8 ++--- .../__snapshots__/confirm.test.tsx.snap | 10 +++--- 7 files changed, 37 insertions(+), 37 deletions(-) diff --git a/ui/pages/confirmations/components/confirm/info/__snapshots__/info.test.tsx.snap b/ui/pages/confirmations/components/confirm/info/__snapshots__/info.test.tsx.snap index d9f473782e78..76b15cccf95f 100644 --- a/ui/pages/confirmations/components/confirm/info/__snapshots__/info.test.tsx.snap +++ b/ui/pages/confirmations/components/confirm/info/__snapshots__/info.test.tsx.snap @@ -61,7 +61,7 @@ exports[`Info renders info section for personal sign request 1`] = `

does not render component for advanced transaction

renders component for advanced transaction details

renders component for advanced transaction details

Date: Thu, 11 Jul 2024 16:26:56 +0100 Subject: [PATCH 17/17] test:fix: snapshot transaction-data min-width 0 --- .../transaction-data.test.tsx.snap | 56 +++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/ui/pages/confirmations/components/confirm/info/shared/transaction-data/__snapshots__/transaction-data.test.tsx.snap b/ui/pages/confirmations/components/confirm/info/shared/transaction-data/__snapshots__/transaction-data.test.tsx.snap index 507bea3934eb..c5ff593c29cb 100644 --- a/ui/pages/confirmations/components/confirm/info/shared/transaction-data/__snapshots__/transaction-data.test.tsx.snap +++ b/ui/pages/confirmations/components/confirm/info/shared/transaction-data/__snapshots__/transaction-data.test.tsx.snap @@ -39,7 +39,7 @@ exports[`TransactionData renders decoded data with names and descriptions 1`] = class="mm-box mm-box--display-flex" >