1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-10-22 11:22:43 +02:00
metamask-extension/ui/hooks/useGasFeeEstimates.js

44 lines
1.5 KiB
JavaScript
Raw Normal View History

import isEqual from 'lodash/isEqual';
import { useSelector } from 'react-redux';
2021-07-09 17:23:45 +02:00
import {
getGasEstimateType,
getGasFeeEstimates,
getIsGasEstimatesLoading,
getIsNetworkBusy,
2021-07-09 17:23:45 +02:00
} from '../ducks/metamask/metamask';
import { useSafeGasEstimatePolling } from './useSafeGasEstimatePolling';
2021-07-09 17:23:45 +02:00
/**
* @typedef {object} GasEstimates
* @property {import(
* '@metamask/gas-fee-controller'
2021-07-09 17:23:45 +02:00
* ).GasFeeState['gasFeeEstimates']} gasFeeEstimates - The estimate object
* @property {object} gasEstimateType - The type of estimate provided
2021-07-09 17:23:45 +02:00
* @property {boolean} isGasEstimateLoading - indicates whether the gas
* estimates are currently loading.
* @property {boolean} isNetworkBusy - indicates whether the network is busy.
2021-07-09 17:23:45 +02:00
*/
/**
* Gets the current gasFeeEstimates from state and begins polling for new
* estimates. When this hook is removed from the tree it will signal to the
* GasFeeController that it is done requiring new gas estimates. Also checks
* the returned gas estimate for validity on the current network.
*
* @returns {GasEstimates} GasEstimates object
2021-07-09 17:23:45 +02:00
*/
export function useGasFeeEstimates() {
const gasEstimateType = useSelector(getGasEstimateType);
const gasFeeEstimates = useSelector(getGasFeeEstimates, isEqual);
const isGasEstimatesLoading = useSelector(getIsGasEstimatesLoading);
const isNetworkBusy = useSelector(getIsNetworkBusy);
useSafeGasEstimatePolling();
2021-07-09 17:23:45 +02:00
return {
gasFeeEstimates,
gasEstimateType,
isGasEstimatesLoading,
isNetworkBusy,
2021-07-09 17:23:45 +02:00
};
}