diff --git a/src/contexts/Account.tsx b/src/contexts/Account.tsx index c683598..2406e72 100644 --- a/src/contexts/Account.tsx +++ b/src/contexts/Account.tsx @@ -19,19 +19,19 @@ export function AccountProvider ({ children }: { const [ balances, setBalances ] = useState({}) const refresh = useCallback(async () => { - if (!address || indexer.current.url === '') return // indexer url goes off-sync + if (!address || indexer.url === '') return setBalances({}) - const balances = (await indexer.current.getKRC20Balances({ address })).result + const balances = (await indexer.getKRC20Balances({ address })).result setBalances(balances.reduce((acc: { [ticker: string]: Balance }, balance) => { acc[balance.tick] = balance return acc }, {})) - }, [ address ]) + }, [ address, indexer ]) useEffect(() => { refresh() - }, [ refresh, address, tokens ]) + }, [ refresh, address ]) return ( void - indexer: React.MutableRefObject + indexer: Indexer } | undefined>(undefined) export function IndexerProvider ({ children }: { children: ReactNode }) { - const indexer = useRef(new Indexer('')) const [ networkId, setNetworkId ] = useState() const [ tokens, setTokens ] = useState({}) - const refresh = useCallback(async () => { - if (indexer.current.url === '') return + const indexer = useMemo(() => { + const indexer = new Indexer('') + + if (networkId === 'mainnet') { + // indexer.url = 'https://api.kasplex.org' + } else if (networkId === 'testnet-10') { + indexer.url = 'https://tn10api.kasplex.org' + } + + return indexer + }, [ networkId ]) + const refresh = useCallback(async () => { let tokens: Token[] = [] let cursor = undefined while (true) { - const response = await indexer.current.getKRC20TokenList({ next: cursor }) + const response = await indexer.getKRC20TokenList({ next: cursor }) tokens.push(...response.result) @@ -36,17 +45,13 @@ export function IndexerProvider ({ children }: { acc[token.tick] = token return acc }, {})) - }, []) - + }, [ indexer ]) + useEffect(() => { - if (networkId === 'mainnet') { - // indexer.current.url = 'https://api.kasplex.org' - } else if (networkId === 'testnet-10') { - indexer.current.url = 'https://tn10api.kasplex.org' - } + if (indexer.url === '') return setTokens({}) refresh() - }, [ networkId ]) + }, [ indexer, refresh ]) return (