@@ -18,18 +18,59 @@ export default async function getTokens(
1818 provider : ethers . providers . JsonRpcProvider ,
1919 chainId : number ,
2020) : Promise < TokenInfo [ ] > {
21- const response = await fetch ( process . env . T2CR_GRAPH_URL , {
21+ const registryResponse = await fetch ( process . env . T2CR_GRAPH_URL , {
2222 method : 'POST' ,
2323 body : JSON . stringify ( {
2424 query : `
25- query Tokens {
26- tokensA: tokens(first: 1000, where: { status: Registered }) {
27- name
28- ticker
29- address
30- symbolMultihash
25+ {
26+ registries {
27+ numberOfSubmissions
3128 }
32- tokensB: tokens(where: { status: ClearingRequested }) {
29+ }
30+ ` ,
31+ } ) ,
32+ } )
33+
34+ const {
35+ data : { registries } ,
36+ } = ( await registryResponse . json ( ) ) || { }
37+ const registry = registries [ 0 ]
38+ const { numberOfSubmissions } = registry
39+ const rounds = Math . ceil ( numberOfSubmissions / 1000 )
40+
41+ let tokensFromSubgraph : TokenFromSubgraph [ ] = [ ]
42+
43+ for ( let i = 0 ; i < rounds ; i ++ ) {
44+ const registeredResponse = await fetch ( process . env . T2CR_GRAPH_URL , {
45+ method : 'POST' ,
46+ body : JSON . stringify ( {
47+ query : `
48+ {
49+ tokens(skip: ${
50+ i * 1000
51+ } , first: 1000, where: { status: Registered }) {
52+ name
53+ ticker
54+ address
55+ symbolMultihash
56+ }
57+ }
58+ ` ,
59+ } ) ,
60+ } )
61+
62+ const {
63+ data : { tokens : registeredTokens } ,
64+ } = ( await registeredResponse . json ( ) ) || { }
65+ tokensFromSubgraph = tokensFromSubgraph . concat ( registeredTokens )
66+ }
67+
68+ const clearingRequestedResponse = await fetch ( process . env . T2CR_GRAPH_URL , {
69+ method : 'POST' ,
70+ body : JSON . stringify ( {
71+ query : `
72+ {
73+ tokens(where: { status: ClearingRequested }) {
3374 name
3475 ticker
3576 address
@@ -39,15 +80,14 @@ export default async function getTokens(
3980 ` ,
4081 } ) ,
4182 } )
42-
43- const { data } = ( await response . json ( ) ) || { }
44- const { tokensA, tokensB } = data || { }
45- const tokensFromSubgraph : TokenFromSubgraph [ ] = tokensA
46- . concat ( tokensB )
47- . map ( ( t : TokenFromSubgraph ) => ( {
48- ...t ,
49- address : ethers . utils . getAddress ( t . address ) ,
50- } ) )
83+ const {
84+ data : { tokens : clearingRequestedTokens } ,
85+ } = ( await clearingRequestedResponse . json ( ) ) || { }
86+ tokensFromSubgraph = tokensFromSubgraph . concat ( clearingRequestedTokens )
87+ tokensFromSubgraph = tokensFromSubgraph . map ( ( t : TokenFromSubgraph ) => ( {
88+ ...t ,
89+ address : ethers . utils . getAddress ( t . address ) ,
90+ } ) )
5191
5292 // We use a view contract to return token decimals
5393 // efficiently.
0 commit comments