2021-12-01 17:25:09 +01:00
|
|
|
import isEqual from 'lodash/isEqual';
|
2022-12-08 19:37:06 +01:00
|
|
|
import { useSelector } from 'react-redux';
|
2021-07-09 17:23:45 +02:00
|
|
|
import {
|
|
|
|
getGasEstimateType,
|
|
|
|
getGasFeeEstimates,
|
2021-08-06 01:59:58 +02:00
|
|
|
getIsGasEstimatesLoading,
|
2022-01-07 20:18:02 +01:00
|
|
|
getIsNetworkBusy,
|
2021-07-09 17:23:45 +02:00
|
|
|
} from '../ducks/metamask/metamask';
|
2021-07-31 02:45:18 +02:00
|
|
|
import { useSafeGasEstimatePolling } from './useSafeGasEstimatePolling';
|
2021-07-09 17:23:45 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @typedef {object} GasEstimates
|
|
|
|
* @property {import(
|
2022-11-24 20:59:07 +01:00
|
|
|
* '@metamask/gas-fee-controller'
|
2021-07-09 17:23:45 +02:00
|
|
|
* ).GasFeeState['gasFeeEstimates']} gasFeeEstimates - The estimate object
|
2022-12-08 19:37:06 +01:00
|
|
|
* @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.
|
2022-12-08 19:37:06 +01:00
|
|
|
* @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.
|
|
|
|
*
|
2022-12-08 19:37:06 +01:00
|
|
|
* @returns {GasEstimates} GasEstimates object
|
2021-07-09 17:23:45 +02:00
|
|
|
*/
|
|
|
|
export function useGasFeeEstimates() {
|
|
|
|
const gasEstimateType = useSelector(getGasEstimateType);
|
2021-12-01 17:25:09 +01:00
|
|
|
const gasFeeEstimates = useSelector(getGasFeeEstimates, isEqual);
|
2021-08-06 01:59:58 +02:00
|
|
|
const isGasEstimatesLoading = useSelector(getIsGasEstimatesLoading);
|
2022-01-07 20:18:02 +01:00
|
|
|
const isNetworkBusy = useSelector(getIsNetworkBusy);
|
2021-07-31 02:45:18 +02:00
|
|
|
useSafeGasEstimatePolling();
|
2021-07-09 17:23:45 +02:00
|
|
|
|
|
|
|
return {
|
|
|
|
gasFeeEstimates,
|
|
|
|
gasEstimateType,
|
|
|
|
isGasEstimatesLoading,
|
2022-01-07 20:18:02 +01:00
|
|
|
isNetworkBusy,
|
2021-07-09 17:23:45 +02:00
|
|
|
};
|
|
|
|
}
|