0xweb
Version:
Contract package manager and other web3 tools
40 lines (32 loc) • 1.28 kB
text/typescript
import { JsonArrayStore } from '@dequanto/json/JsonArrayStore';
import { ITokenGlob } from '@dequanto/models/ITokenGlob';
import { ATokenProvider } from '@dequanto/tokens/TokenProviders/ATokenProvider';
import { ITokenProvider } from '@dequanto/tokens/TokenProviders/ITokenProvider';
import { $path } from '@dequanto/utils/$path';
export class ArbTokenProvider extends ATokenProvider implements ITokenProvider {
store = new JsonArrayStore<ITokenGlob> ({
path: $path.resolve('/data/tokens/arbitrum.json'),
key: x => x.symbol
});
getTokens(): Promise<ITokenGlob[]> {
return this.store.getAll();
}
async redownloadTokens(): Promise<any> {
let resp = await fetch(`https://bridge.arbitrum.io/token-list-42161.json`);
let json = await resp.json();
let tokens = json.tokens.map(token => {
return <ITokenGlob> {
symbol: token.symbol,
name: token.name,
logo: token.logoURI,
platforms: [{
platform: 'arbitrum',
address: token.address,
decimals: token.decimals
}]
};
});
await this.store.saveAll(tokens);
return tokens;
}
}