1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-11-26 20:39:08 +01:00
metamask-extension/ui/app/hooks/useUserPreferencedCurrency.js
Brad Decker 706dc02cb4
Implement new transaction list design (#8564)
Co-authored-by: Whymarrh Whitby <whymarrh.whitby@gmail.com>
Co-authored-by: Mark Stacey <markjstacey@gmail.com>
2020-05-26 15:49:11 -05:00

53 lines
2.3 KiB
JavaScript

import { getPreferences, getShouldShowFiat, getNativeCurrency } from '../selectors'
import { useSelector } from 'react-redux'
import { PRIMARY, SECONDARY, ETH } from '../helpers/constants/common'
/**
* Defines the shape of the options parameter for useUserPreferencedCurrency
* @typedef {Object} UseUserPreferencedCurrencyOptions
* @property {number} [numberOfDecimals] - Number of significant decimals to display
* @property {number} [ethNumberOfDecimals] - Number of significant decimals to display
* when using ETH
* @property {number} [fiatNumberOfDecimals] - Number of significant decimals to display
* when using fiat
*/
/**
* Defines the return shape of useUserPreferencedCurrency
* @typedef {Object} UserPreferredCurrency
* @property {string} currency - the currency type to use (eg: 'ETH', 'usd')
* @property {number} numberOfDecimals - Number of significant decimals to display
*/
/**
* useUserPreferencedCurrency
*
* returns an object that contains what currency to use for displaying values based
* on the user's preference settings, as well as the significant number of decimals
* to display based on the currency
* @param {"PRIMARY" | "SECONDARY"} type - what display type is being rendered
* @param {UseUserPreferencedCurrencyOptions} opts - options to override default values
* @return {UserPreferredCurrency}
*/
export function useUserPreferencedCurrency (type, opts = {}) {
const nativeCurrency = useSelector(getNativeCurrency)
const {
useNativeCurrencyAsPrimaryCurrency,
} = useSelector(getPreferences)
const showFiat = useSelector(getShouldShowFiat)
let currency, numberOfDecimals
if (!showFiat || (type === PRIMARY && useNativeCurrencyAsPrimaryCurrency) ||
(type === SECONDARY && !useNativeCurrencyAsPrimaryCurrency)) {
// Display ETH
currency = nativeCurrency || ETH
numberOfDecimals = opts.numberOfDecimals || opts.ethNumberOfDecimals || 6
} else if ((type === SECONDARY && useNativeCurrencyAsPrimaryCurrency) ||
(type === PRIMARY && !useNativeCurrencyAsPrimaryCurrency)) {
// Display Fiat
numberOfDecimals = opts.numberOfDecimals || opts.fiatNumberOfDecimals || 2
}
return { currency, numberOfDecimals }
}