utils APIs
- calculateSlippageAmount
- calculateGasMargin
- getRouterContract
- getBscScanLink
- isAddress
- shortenAddress
- getEtherscanLink
- basisPointsToPercent
- getTokenAddress
- copyToClipboard
- deepMergeByKey
- decrypt
- encrypt
- emailErrorMsg
- reqErrorMsg
- debouncePromise
- callbackify
- isValidURL
- hasUserApiEditAccess
- loadThirdPartyScript
- getCurrentWindow
- hashVote
- toEthSignedMessageHash
- MAINNET_ID
- usePrevious
- bnum
- normalizeBalance
- isWalletScheme
- WalletSchemeProposalState
- VotingMachineProposalState
- calculateStakes
- formatBalance
- denormalizeBalance
- PendingAction
- isVoteNo
- isVoteYes
- parseSignedVoteMessage
- toPercentage
- verifySignedVote
- NETWORK_ASSET_SYMBOL
- ZERO_ADDRESS
- enumKeys
- DEFAULT_CHAIN_ID
- useInterval
- getBlockchainLink
- getERC20Token
- getDxVoteContract
- toAddressStub
- getNetworkById
- formatNumberValue
- encodeDxdVestingCreate
- encodeErc20Approval
- encodeErc20Transfer
- encodeRepMint
- TXEvents
- BigNumber
- ZERO_HASH
- ANY_ADDRESS
- ERC20_APPROVE_SIGNATURE
- ERC20_TRANSFER_SIGNATURE
- QUEUED_PRIORITY_THRESHOLD
- NETWORKS
- toCamelCaseString
- ALCHEMY_NETWORK_URLS
- DEFAULT_RPC_URLS
- appendEthAPIKey
- NETWORK_APIS
- INFURA_NETWORK_NAMES
- POKT_NETWORK_URLS
- constants
- session
- displayFromWei
- getBigNumber
- getSupplyCap
- getAllowance
- approve
- fromWei
- getFullDisplayBalance
- getLibrary
- maxAmountSpend
- addMaticToMetamask
- returnTokenFromKey
- isSupportedNetwork
- formatTokenAmount
- formatCompact
- formatNumber
- isTokensOnList
- getAPYWithFee
- getRewardRate
- getStakedAmountStakingInfo
- getTVLStaking
- getEarnedUSDLPFarm
- getEarnedUSDDualFarm
- formatAPY
- getUSDString
- formatMulDivTokenAmount
- getExactTokenAmount
- escapeRegExp
- currencyId
- getOneYearFee
- returnStakingInfo
- getAllTokensOnUniswap
- getAllPairsOnUniswap
- getSecondsOneDay
- getValueTokenDecimals
- getPartialTokenAmount
- confirmPriceImpactWithoutFee
- halfAmountSpend
- getTokenInfo
- getEthPrice
- getIntervalTokenData
- getTokenAPRSyrup
- getEarnedUSDSyrup
- getFormattedPrice
- getPriceColor
- getTopTokens
- shortenTx
- getContract
- isZero
- getChartData
- getChartDates
- getChartStartTime
- getLimitedData
- getTopPairs
- getGlobalData
- getBulkPairData
- formatDateFromTimeStamp
- getPairChartData
- getYAXISValuesAnalytics
- getPairTransactions
- getTokenChartData
- getTokenPairs2
- useLairDQUICKAPY
- getPageItemsToLoad
- returnFullWidthMobile
- returnDualStakingInfo
- getDaysCurrentYear
- getTokenPairs
- getBlockFromTimestamp
- getFarmLPToken
- getSyrupLPToken
- initTokenAmountFromCallResult
- returnSyrupInfo
- getCallStateResult
- notEmpty
- DEFAULT_TO_CHAIN_ID
- CHAINS
- UnsupportedChainIdError
- switchChain
- showMigrationBanner
- isValidAddress
- ChainId
- COLORS
- QUERIES
- onboard
- disableSendForm
- max
- parseUnits
- formatUnits
- ParsingError
- TOKENS_LIST
- Token
- blockLiquidity
- migrationPoolV2Warning
- formatEtherRaw
- numberFormatter
- estimateGasForAddEthLiquidity
- DEFAULT_ADD_LIQUIDITY_ETH_GAS_ESTIMATE
- UPDATE_GAS_INTERVAL_MS
- toWeiSafe
- addEtherscan
- receiveAmount
- getEstimatedDepositTime
- DEFAULT_FROM_CHAIN_ID
- formatEther
- PROVIDERS
- getRelayFees
- getLpFee
- isSupportedChainId
- getAddress
- getDepositBox
- TransactionError
- MAX_APPROVAL_AMOUNT
- optimismErc20Pairs
- bobaErc20Pairs
- tagAddress
- validateContractAndChain
- multicallTwoAddress
- IChainSelection
- CHAINS_SELECTION
- onboardBaseConfig
- getConfirmationDepositTime
- shortenAddressLong
- timeAgo
- textareaAutoResize
- initOAuthWindow
- parseURL
- scrollToBottom
- isUrl
- get_url_extension
- wait
- b64_to_utf8
- utf8_to_b64
- callDelayer
- useKeyboardDidShow
- capitalizedCase
- getCoinSymbol
- getCountryName
- getTransactionStatusColor
- useAlert
- scaleSpacing
- getActiveCase
- changeBodyTheme
- getPercentage
- metaGenerator
- useFetch
- visualize
- worldLegends
- dateFormat
- getPerDayStats
- API_BASEURL
- API_INDONESIA
- indonesiaLegends
- getActiveCaseID
- isWsAddress
- constructApiDescriptionObject
- encodeURI
- NOOP
- isLoggedIn
- getBalance
- getAccount
- isTokenOnList
- formatAddressShort
- requiresTypeSlug
- getNextOffchainPollEndingTime
- slugify
- slugifyPreserveDashes
- setupSwagger
- isBlindMode
- getExplorerLink
- isCountdown
- showVvsPrice
- getCookies
- iconFromMIME
- makeRangeArray
- exitIfMaintenance
- sanitizeHtmlString
- parseDate
- retryWrapper
- batchPromises
- arrayPartitions
- sleep
- checkKeyboardTrigger
- clampValue
- debounce
- normalize
- strToInt
- getFromLocalStorage
- saveToLocalStorage
- generateTagColors
- formatNumberWithCommas
- memoize
- calculateTotalInvestment
- throttle
- urlParametersState
- mmddyyyy2ddmmyyy
- sortStringDates
- gtag
- compactNumberFormatter
- getNumberSign
- getLastArrayElement
- fillArrayUntil
- capitalizeFirstLetter
- buildUrl
- XmlWrapper
- XmlTemplate
- setCookie
Other Related APIs
utils#useInterval TypeScript Examples
The following examples show how to use
utils#useInterval.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: index.tsx From dxvote with GNU Affero General Public License v3.0 | 4 votes |
Web3ReactManager = ({ children }) => {
const { context } = useContext();
const { providerStore, blockchainStore } = context;
const location = useLocation();
const history = useHistory();
const rpcUrls = useRpcUrls();
// Overriding default fetch to check for RPC url and setting correct headers if matched
const originalFetch = window.fetch;
window.fetch = (url, opts): Promise<Response> => {
if (rpcUrls && Object.values(rpcUrls).includes(url.toString()) && opts) {
opts.headers = opts.headers || {
'Content-Type': 'application/json',
};
}
return originalFetch(url, opts);
};
const web3Context = useWeb3React();
const {
active: networkActive,
error: networkError,
chainId,
account,
connector,
activate,
} = web3Context;
console.debug('[Web3ReactManager] Start of render', {
web3Context,
});
// Make sure providerStore is synchronized with web3-react
useEffect(() => {
providerStore.setWeb3Context(web3Context);
}, [web3Context]);
// try to eagerly connect to a provider if possible
const { triedEager, tryConnecting } = useEagerConnect();
// If eager-connect failed, try to connect to network in the URL
// If no chain in the URL, fallback to default chain
useEffect(() => {
if (triedEager && !networkActive && rpcUrls) {
const chains = getChains(rpcUrls);
const urlNetworkName = location.pathname.split('/')[1];
const chainId =
chains.find(chain => chain.name == urlNetworkName)?.id ||
DEFAULT_CHAIN_ID;
const networkConnector = getNetworkConnector(rpcUrls, chainId);
activate(networkConnector, undefined, true).catch(e => {
console.error(
'[Web3ReactManager] Unable to activate network connector.',
e
);
});
}
}, [triedEager, networkActive, activate, rpcUrls, location]);
const prevChainId = usePrevious(chainId);
const prevAccount = usePrevious(account);
useEffect(() => {
// Listen to chain / account changes and reset the app
if (prevChainId !== chainId || prevAccount !== account) {
try {
providerStore.setWeb3Context(web3Context);
context.reset();
if (location.pathname !== '/cache') {
blockchainStore.fetchData(web3Context, true);
}
} catch (e) {
// Fallback if something goes wrong
window.location.reload();
}
}
}, [chainId, prevChainId, account, prevAccount]);
// Setup listener to handle injected wallet events
useEffect(() => {
if (!window.ethereum) return () => {};
const handleChainChange = (chainId: string) => {
const chains = getChains();
const chain = chains.find(
chain => `0x${chain.id.toString(16)}` == chainId
);
// If currently connected to an injected wallet, keep synced with it
if (connector instanceof InjectedConnector) {
history.push(`/${chain.name}/proposals`);
} else if (connector instanceof NetworkConnector) {
const urlNetworkName = location.pathname.split('/')[1];
if (urlNetworkName == chain.name) {
tryConnecting();
}
}
};
window.ethereum.on('chainChanged', handleChainChange);
return () => {
window.ethereum?.removeListener('accountsChanged', handleChainChange);
};
}, [location, connector]);
const urlNetworkName = useMemo(
() => location.pathname.split('/')[1],
[location]
);
const prevUrlNetworkName = usePrevious(urlNetworkName);
if (
urlNetworkName &&
prevUrlNetworkName &&
urlNetworkName !== prevUrlNetworkName
) {
tryConnecting();
}
// Fetch user blockchain data on an interval using current params
useInterval(
async () => {
if (networkActive) {
if (location.pathname !== '/cache') {
blockchainStore.fetchData(providerStore.getActiveWeb3React(), false);
}
}
},
networkActive ? BLOKCHAIN_FETCH_INTERVAL : 10
);
const Content = styled.div`
margin: auto;
height: 100%;
display: flex;
flex-direction: column;
justify-content: flex-start;
width: 85%;
`;
// on page load, do nothing until we've tried to connect to the injected connector
if (!triedEager) {
console.debug('[Web3ReactManager] Render: Eager load not tried');
return (
<ThemeProvider>
<GlobalStyle />
<Content>
<LoadingNetworkHeader />
<LoadingBox>
<div className="loader">
<PulsingIcon size={80} inactive={false} />
</div>
</LoadingBox>
</Content>
</ThemeProvider>
);
} else if (networkError) {
console.debug(
'[Web3ReactManager] Render: Network error, showing modal error.'
);
return null;
} else {
console.debug('[Web3ReactManager] Render: Render children', {
networkActive,
});
return children;
}
}