2021-02-04 19:15:23 +01:00
|
|
|
import { useMemo } from 'react';
|
|
|
|
import { useSelector } from 'react-redux';
|
2021-06-08 18:03:59 +02:00
|
|
|
import { getCurrentCurrency, getShouldShowFiat } from '../selectors';
|
2021-02-04 19:15:23 +01:00
|
|
|
import { decEthToConvertedCurrency } from '../helpers/utils/conversions.util';
|
|
|
|
import { formatCurrency } from '../helpers/utils/confirm-tx.util';
|
2021-06-08 18:03:59 +02:00
|
|
|
import { getConversionRate } from '../ducks/metamask/metamask';
|
2020-10-06 20:28:38 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Get an Eth amount converted to fiat and formatted for display
|
|
|
|
*
|
2022-01-07 16:57:33 +01:00
|
|
|
* @param {string} [ethAmount] - The eth amount to convert
|
2020-11-10 18:30:41 +01:00
|
|
|
* @param {Object} [overrides] - A configuration object that allows the called to explicitly
|
2020-10-06 20:28:38 +02:00
|
|
|
* ensure fiat is shown even if the property is not set in state.
|
|
|
|
* @param {boolean} [overrides.showFiat] - If truthy, ensures the fiat value is shown even if the showFiat value from state is falsey
|
2022-01-07 16:57:33 +01:00
|
|
|
* @param {boolean} hideCurrencySymbol - Indicates whether the returned formatted amount should include the trailing currency symbol
|
|
|
|
* @returns {string} The formatted token amount in the user's chosen fiat currency
|
2020-10-06 20:28:38 +02:00
|
|
|
*/
|
2020-11-03 00:41:28 +01:00
|
|
|
export function useEthFiatAmount(
|
|
|
|
ethAmount,
|
|
|
|
overrides = {},
|
|
|
|
hideCurrencySymbol,
|
|
|
|
) {
|
2021-02-04 19:15:23 +01:00
|
|
|
const conversionRate = useSelector(getConversionRate);
|
|
|
|
const currentCurrency = useSelector(getCurrentCurrency);
|
|
|
|
const userPrefersShownFiat = useSelector(getShouldShowFiat);
|
|
|
|
const showFiat = overrides.showFiat ?? userPrefersShownFiat;
|
2020-10-06 20:28:38 +02:00
|
|
|
const formattedFiat = useMemo(
|
|
|
|
() => decEthToConvertedCurrency(ethAmount, currentCurrency, conversionRate),
|
|
|
|
[conversionRate, currentCurrency, ethAmount],
|
2021-02-04 19:15:23 +01:00
|
|
|
);
|
2020-10-06 20:28:38 +02:00
|
|
|
|
2020-11-03 00:41:28 +01:00
|
|
|
if (
|
|
|
|
!showFiat ||
|
|
|
|
currentCurrency.toUpperCase() === 'ETH' ||
|
|
|
|
conversionRate <= 0 ||
|
|
|
|
ethAmount === undefined
|
|
|
|
) {
|
2021-02-04 19:15:23 +01:00
|
|
|
return undefined;
|
2020-10-06 20:28:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
return hideCurrencySymbol
|
|
|
|
? formatCurrency(formattedFiat, currentCurrency)
|
2020-11-03 00:41:28 +01:00
|
|
|
: `${formatCurrency(
|
|
|
|
formattedFiat,
|
|
|
|
currentCurrency,
|
2021-02-04 19:15:23 +01:00
|
|
|
)} ${currentCurrency.toUpperCase()}`;
|
2020-10-06 20:28:38 +02:00
|
|
|
}
|