@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
36 lines • 1.54 kB
JavaScript
import { getGasTracker } from "@ledgerhq/coin-evm/network/gasTracker/index";
import { useEffect, useMemo, useState } from "react";
/**
* React hook to get gas options for a given currency
* Used in the send flow to get the gas options for the currency,
* for example in SelectFeeStrategy.tsx file in the renderer/families/{currency} folder in LLD
*/
export const useGasOptions = ({ currency, transaction,
// interval is the time in milliseconds between each call to the gas tracker
interval = 60 * 1000, }) => {
const shouldUseEip1559 = transaction.type === 2;
const gasTracker = useMemo(() => getGasTracker(currency), [currency]);
const [error, setError] = useState(null);
const [gasOptions, setGasOptions] = useState(undefined);
const [loading, setLoading] = useState(true);
useEffect(() => {
if (!gasTracker) {
setLoading(false);
return;
}
const getGasOptionsCallback = async () => gasTracker
.getGasOptions({ currency, options: { useEIP1559: shouldUseEip1559 } })
.then(setGasOptions)
.catch(setError)
.finally(() => setLoading(false));
getGasOptionsCallback();
if (interval > 0) {
const intervalId = setInterval(() => getGasOptionsCallback(), interval);
return () => {
clearInterval(intervalId);
};
}
}, [gasTracker, interval, currency, shouldUseEip1559]);
return [gasOptions, error, loading];
};
//# sourceMappingURL=react.js.map