mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-27 12:56:01 +01:00
3732c5f71e
ESLint rules have been added to enforce our JSDoc conventions. These rules were introduced by updating `@metamask/eslint-config` to v9. Some of the rules have been disabled because the effort to fix all lint errors was too high. It might be easiest to enable these rules one directory at a time, or one rule at a time. Most of the changes in this PR were a result of running `yarn lint:fix`. There were a handful of manual changes that seemed obvious and simple to make. Anything beyond that and the rule was left disabled.
70 lines
2.5 KiB
JavaScript
70 lines
2.5 KiB
JavaScript
import { shallowEqual, useSelector } from 'react-redux';
|
|
import {
|
|
getPreferences,
|
|
getShouldShowFiat,
|
|
getCurrentCurrency,
|
|
} from '../selectors';
|
|
import { getNativeCurrency } from '../ducks/metamask/metamask';
|
|
|
|
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
|
|
* @returns {UserPreferredCurrency}
|
|
*/
|
|
export function useUserPreferencedCurrency(type, opts = {}) {
|
|
const nativeCurrency = useSelector(getNativeCurrency);
|
|
const { useNativeCurrencyAsPrimaryCurrency } = useSelector(
|
|
getPreferences,
|
|
shallowEqual,
|
|
);
|
|
const showFiat = useSelector(getShouldShowFiat);
|
|
const currentCurrency = useSelector(getCurrentCurrency);
|
|
|
|
let currency, numberOfDecimals;
|
|
if (
|
|
!showFiat ||
|
|
(type === PRIMARY && useNativeCurrencyAsPrimaryCurrency) ||
|
|
(type === SECONDARY && !useNativeCurrencyAsPrimaryCurrency)
|
|
) {
|
|
// Display ETH
|
|
currency = nativeCurrency || ETH;
|
|
numberOfDecimals = opts.numberOfDecimals || opts.ethNumberOfDecimals || 8;
|
|
} else if (
|
|
(type === SECONDARY && useNativeCurrencyAsPrimaryCurrency) ||
|
|
(type === PRIMARY && !useNativeCurrencyAsPrimaryCurrency)
|
|
) {
|
|
// Display Fiat
|
|
currency = currentCurrency;
|
|
numberOfDecimals = opts.numberOfDecimals || opts.fiatNumberOfDecimals || 2;
|
|
}
|
|
|
|
return { currency, numberOfDecimals };
|
|
}
|