Commit 7feba045 authored by Ian Lapham's avatar Ian Lapham Committed by GitHub

fix: add formatting to USDC values (#3478)

* add formatting to USDC values

* update formatting of USDC amounts to en

* apply same formatting to summary
parent 04cee0a0
...@@ -122,7 +122,9 @@ export default function Input({ disabled, focused }: InputProps) { ...@@ -122,7 +122,9 @@ export default function Input({ disabled, focused }: InputProps) {
> >
<ThemedText.Body2 color="secondary" userSelect> <ThemedText.Body2 color="secondary" userSelect>
<Row> <Row>
<USDC isLoading={isRouteLoading}>{inputUSDC ? `$${inputUSDC.toFixed(2)}` : '-'}</USDC> <USDC isLoading={isRouteLoading}>
{inputUSDC ? `$${formatCurrencyAmount(inputUSDC, 6, 'en', 2)}` : '-'}
</USDC>
{balance && ( {balance && (
<Balance color={balanceColor} focused={focused}> <Balance color={balanceColor} focused={focused}>
Balance: <span>{formatCurrencyAmount(balance, 4, i18n.locale)}</span> Balance: <span>{formatCurrencyAmount(balance, 4, i18n.locale)}</span>
......
...@@ -87,7 +87,7 @@ export default function Output({ disabled, focused, children }: PropsWithChildre ...@@ -87,7 +87,7 @@ export default function Output({ disabled, focused, children }: PropsWithChildre
<ThemedText.Body2 color="secondary" userSelect> <ThemedText.Body2 color="secondary" userSelect>
<Row> <Row>
<USDC gap={0.5} isLoading={isRouteLoading}> <USDC gap={0.5} isLoading={isRouteLoading}>
{outputUSDC ? `$${outputUSDC.toFixed(2)}` : '-'}{' '} {outputUSDC ? `$${formatCurrencyAmount(outputUSDC, 6, 'en', 2)}` : '-'}{' '}
{priceImpact && ( {priceImpact && (
<ThemedText.Body2 color={priceImpactWarning}> <ThemedText.Body2 color={priceImpactWarning}>
({toHumanReadablePriceImpact(priceImpact)}) ({toHumanReadablePriceImpact(priceImpact)})
......
...@@ -31,7 +31,7 @@ function TokenValue({ input, usdc, priceImpact }: TokenValueProps) { ...@@ -31,7 +31,7 @@ function TokenValue({ input, usdc, priceImpact }: TokenValueProps) {
{usdc && ( {usdc && (
<ThemedText.Caption color="secondary" userSelect> <ThemedText.Caption color="secondary" userSelect>
<Row justify="flex-start" gap={0.25}> <Row justify="flex-start" gap={0.25}>
${formatCurrencyAmount(usdc, 2, i18n.locale)} ${formatCurrencyAmount(usdc, 6, 'en', 2)}
{priceImpact && ( {priceImpact && (
<ThemedText.Caption color={priceImpactWarning}> <ThemedText.Caption color={priceImpactWarning}>
({toHumanReadablePriceImpact(priceImpact)}) ({toHumanReadablePriceImpact(priceImpact)})
......
...@@ -10,6 +10,7 @@ import { AlertTriangle, Icon, Info, InlineSpinner } from 'lib/icons' ...@@ -10,6 +10,7 @@ import { AlertTriangle, Icon, Info, InlineSpinner } from 'lib/icons'
import styled, { ThemedText } from 'lib/theme' import styled, { ThemedText } from 'lib/theme'
import { ReactNode, useCallback, useMemo, useState } from 'react' import { ReactNode, useCallback, useMemo, useState } from 'react'
import { InterfaceTrade } from 'state/routing/types' import { InterfaceTrade } from 'state/routing/types'
import { formatCurrencyAmount } from 'utils/formatCurrencyAmount'
import { getPriceImpactWarning } from 'utils/prices' import { getPriceImpactWarning } from 'utils/prices'
import { TextButton } from '../../Button' import { TextButton } from '../../Button'
...@@ -92,10 +93,10 @@ export function Trade({ trade }: { trade: InterfaceTrade<Currency, Currency, Tra ...@@ -92,10 +93,10 @@ export function Trade({ trade }: { trade: InterfaceTrade<Currency, Currency, Tra
const ratio = `1 ${a.currency.symbol} = ${priceString} ${b.currency.symbol}` const ratio = `1 ${a.currency.symbol} = ${priceString} ${b.currency.symbol}`
const usdc = !flip const usdc = !flip
? inputUSDC ? inputUSDC
? ` ($${inputUSDC.toSignificant(6)})` ? ` ($${formatCurrencyAmount(inputUSDC, 6, 'en', 2)})`
: null : null
: outputUSDC : outputUSDC
? ` ($${outputUSDC.toSignificant(6)})` ? ` ($${formatCurrencyAmount(outputUSDC, 6, 'en', 2)})`
: null : null
return ( return (
...@@ -106,7 +107,7 @@ export function Trade({ trade }: { trade: InterfaceTrade<Currency, Currency, Tra ...@@ -106,7 +107,7 @@ export function Trade({ trade }: { trade: InterfaceTrade<Currency, Currency, Tra
</Row> </Row>
</ThemedText.Caption> </ThemedText.Caption>
) )
}, [executionPrice, inputUSDC, outputUSDC, flip, input, output]) }, [flip, output, input, executionPrice, inputUSDC, outputUSDC])
return ( return (
<> <>
......
...@@ -6,9 +6,16 @@ interface FormatLocaleNumberArgs { ...@@ -6,9 +6,16 @@ interface FormatLocaleNumberArgs {
locale: string | null | undefined locale: string | null | undefined
options?: Intl.NumberFormatOptions options?: Intl.NumberFormatOptions
sigFigs?: number sigFigs?: number
fixedDecimals?: number
} }
export default function formatLocaleNumber({ number, locale, sigFigs, options = {} }: FormatLocaleNumberArgs): string { export default function formatLocaleNumber({
number,
locale,
sigFigs,
fixedDecimals,
options = {},
}: FormatLocaleNumberArgs): string {
let localeArg: string | string[] let localeArg: string | string[]
if (!locale || (locale && !SUPPORTED_LOCALES.includes(locale))) { if (!locale || (locale && !SUPPORTED_LOCALES.includes(locale))) {
localeArg = DEFAULT_LOCALE localeArg = DEFAULT_LOCALE
...@@ -16,9 +23,14 @@ export default function formatLocaleNumber({ number, locale, sigFigs, options = ...@@ -16,9 +23,14 @@ export default function formatLocaleNumber({ number, locale, sigFigs, options =
localeArg = [locale, DEFAULT_LOCALE] localeArg = [locale, DEFAULT_LOCALE]
} }
options.maximumSignificantDigits = options.maximumSignificantDigits || sigFigs options.maximumSignificantDigits = options.maximumSignificantDigits || sigFigs
let numberString: number
if (typeof number === 'number') { if (typeof number === 'number') {
return number.toLocaleString(localeArg, options) numberString = fixedDecimals ? parseFloat(number.toFixed(fixedDecimals)) : number
} else { } else {
return parseFloat(number.toSignificant(sigFigs)).toLocaleString(localeArg, options) const baseString = parseFloat(number.toSignificant(sigFigs))
numberString = fixedDecimals ? parseFloat(baseString.toFixed(fixedDecimals)) : baseString
} }
return numberString.toLocaleString(localeArg, options)
} }
...@@ -6,7 +6,8 @@ import formatLocaleNumber from 'lib/utils/formatLocaleNumber' ...@@ -6,7 +6,8 @@ import formatLocaleNumber from 'lib/utils/formatLocaleNumber'
export function formatCurrencyAmount( export function formatCurrencyAmount(
amount: CurrencyAmount<Currency> | undefined, amount: CurrencyAmount<Currency> | undefined,
sigFigs: number, sigFigs: number,
locale: SupportedLocale = DEFAULT_LOCALE locale: SupportedLocale = DEFAULT_LOCALE,
fixedDecimals?: number
): string { ): string {
if (!amount) { if (!amount) {
return '-' return '-'
...@@ -20,7 +21,7 @@ export function formatCurrencyAmount( ...@@ -20,7 +21,7 @@ export function formatCurrencyAmount(
return `<${formatLocaleNumber({ number: 0.00001, locale })}` return `<${formatLocaleNumber({ number: 0.00001, locale })}`
} }
return formatLocaleNumber({ number: amount, locale, sigFigs }) return formatLocaleNumber({ number: amount, locale, sigFigs, fixedDecimals })
} }
export function formatPrice( export function formatPrice(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment