|
1 | 1 | import {
|
2 | 2 | TokenInfo,
|
3 | 3 | TokenList,
|
4 |
| - mainnetTokensMetadata, |
5 |
| - testnetTokensMetadata, |
| 4 | + getTokensURL, |
| 5 | + mainnet, |
| 6 | + testnet, |
6 | 7 | } from '@alephium/token-list'
|
7 | 8 | import { ExplorerProvider, NetworkId, NodeProvider, web3 } from '@alephium/web3'
|
8 | 9 | import { useWalletConfig } from '@alephium/web3-react'
|
9 |
| -import { useEffect, useMemo } from 'react' |
| 10 | +import { useEffect, useMemo, useState } from 'react' |
10 | 11 |
|
11 | 12 | const mainnet_node_url = 'https://wallet-v20.mainnet.alephium.org'
|
12 | 13 | const testnet_node_url = 'https://wallet-v20.testnet.alephium.org'
|
@@ -95,15 +96,30 @@ export function useExplorerFE(): string {
|
95 | 96 |
|
96 | 97 | export function useTokenList(): TokenInfo[] {
|
97 | 98 | const [network] = useNetworkId()
|
98 |
| - return network === 'mainnet' |
99 |
| - ? mainnetTokensMetadata.tokens |
100 |
| - : network === 'testnet' |
101 |
| - ? testnetTokensMetadata.tokens |
102 |
| - : [] |
| 99 | + const [tokens, setTokens] = useState<TokenInfo[]>(network === 'mainnet' ? mainnet.tokens : network === 'testnet' ? testnet.tokens : []) |
| 100 | + |
| 101 | + useEffect(() => { |
| 102 | + const updateTokens = async () => { |
| 103 | + if (network === 'mainnet' || network === 'testnet') { |
| 104 | + const tokenURL = getTokensURL(network) |
| 105 | + const response = await fetch(tokenURL) |
| 106 | + if (!response.ok) { |
| 107 | + console.error('Failed to update token list') |
| 108 | + return |
| 109 | + } |
| 110 | + const data = await response.json() as TokenList |
| 111 | + setTokens(data.tokens) |
| 112 | + } |
| 113 | + } |
| 114 | + |
| 115 | + void updateTokens() |
| 116 | + }, [network]) |
| 117 | + |
| 118 | + return tokens |
103 | 119 | }
|
104 | 120 |
|
105 | 121 | export function getTokenMetadata(network: 'mainnet' | 'testnet'): TokenList {
|
106 |
| - return network === 'mainnet' ? mainnetTokensMetadata : testnetTokensMetadata |
| 122 | + return network === 'mainnet' ? mainnet : testnet |
107 | 123 | }
|
108 | 124 |
|
109 | 125 | function isObject(object: any): boolean {
|
|
0 commit comments