From 20e6f451dd23cc028a44271d7a1e9297101455d4 Mon Sep 17 00:00:00 2001 From: Gareth Fuller Date: Wed, 29 Nov 2023 22:22:01 +0000 Subject: [PATCH] chore: Update price query (#247) * chore: Update price query * chore: Cleanup --- src/config/arbitrum.json | 1 + src/config/avalanche.json | 1 + src/config/base.json | 1 + src/config/gnosis-chain.json | 1 + src/config/goerli.json | 1 + src/config/index.ts | 1 + src/config/mainnet.json | 1 + src/config/optimism.json | 1 + src/config/polygon.json | 1 + src/config/sepolia.json | 1 + src/config/zkevm.json | 1 + src/modules/prices/beets-price-fetcher.ts | 16 ++++++++++++---- 12 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/config/arbitrum.json b/src/config/arbitrum.json index 685f7b8e..f026fbb4 100644 --- a/src/config/arbitrum.json +++ b/src/config/arbitrum.json @@ -1,6 +1,7 @@ { "networkId": 42161, "network": "arbitrum", + "GqlChain": "ARBITRUM", "rpc": "https://arbitrum-mainnet.infura.io/v3/{{INFURA_PROJECT_ID}}", "subgraph": "https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-arbitrum-v2-beta", "addresses": { diff --git a/src/config/avalanche.json b/src/config/avalanche.json index 6996c71f..a650dc1d 100644 --- a/src/config/avalanche.json +++ b/src/config/avalanche.json @@ -1,6 +1,7 @@ { "networkId": 43114, "network": "avalanche", + "GqlChain": "AVALANCHE", "rpc": "https://avalanche-mainnet.infura.io/v3/{{INFURA_PROJECT_ID}}", "subgraph": "https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-avalanche-v2", "addresses": { diff --git a/src/config/base.json b/src/config/base.json index 6c4c9813..180dbb29 100644 --- a/src/config/base.json +++ b/src/config/base.json @@ -1,6 +1,7 @@ { "networkId": 8453, "network": "base", + "GqlChain": "BASE", "rpc": "https://developer-access-mainnet.base.org", "subgraph": "https://api.studio.thegraph.com/query/24660/balancer-base-v2/version/latest", "addresses": { diff --git a/src/config/gnosis-chain.json b/src/config/gnosis-chain.json index a9a9e000..2d8896b8 100644 --- a/src/config/gnosis-chain.json +++ b/src/config/gnosis-chain.json @@ -1,6 +1,7 @@ { "networkId": 100, "network": "gnosis-chain", + "GqlChain": "GNOSIS", "rpc": "https://poa-xdai.gateway.pokt.network/v1/lb/91bc0e12a76e7a84dd76189d", "subgraph": "https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-gnosis-chain-v2", "addresses": { diff --git a/src/config/goerli.json b/src/config/goerli.json index b4e23529..7bff7e11 100644 --- a/src/config/goerli.json +++ b/src/config/goerli.json @@ -1,6 +1,7 @@ { "networkId": 5, "network": "goerli", + "GqlChain": "GOERLI", "rpc": "https://goerli.infura.io/v3/{{INFURA_KEY}}", "subgraph": "https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-goerli-v2", "addresses": { diff --git a/src/config/index.ts b/src/config/index.ts index d3cab474..10459c23 100644 --- a/src/config/index.ts +++ b/src/config/index.ts @@ -14,6 +14,7 @@ export interface Config { network: string; rpc: string; subgraph: string; + GqlChain: string; addresses: { nativeAsset: string; wrappedNativeAsset: string; diff --git a/src/config/mainnet.json b/src/config/mainnet.json index 13b96553..74dd526f 100644 --- a/src/config/mainnet.json +++ b/src/config/mainnet.json @@ -1,6 +1,7 @@ { "networkId": 1, "network": "mainnet", + "GqlChain": "MAINNET", "rpc": "https://mainnet.infura.io/v3/{{INFURA_PROJECT_ID}}", "subgraph": "https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-v2", "addresses": { diff --git a/src/config/optimism.json b/src/config/optimism.json index 3bee84c4..5d6a5a61 100644 --- a/src/config/optimism.json +++ b/src/config/optimism.json @@ -1,6 +1,7 @@ { "networkId": 10, "network": "optimism", + "GqlChain": "OPTIMISM", "rpc": "https://optimism-mainnet.infura.io/v3/{{INFURA_PROJECT_ID}}", "subgraph": "https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-optimism-v2", "addresses": { diff --git a/src/config/polygon.json b/src/config/polygon.json index db85e4f5..07ceab96 100644 --- a/src/config/polygon.json +++ b/src/config/polygon.json @@ -1,6 +1,7 @@ { "networkId": 137, "network": "polygon", + "GqlChain": "POLYGON", "rpc": "https://polygon-mainnet.infura.io/v3/{{INFURA_PROJECT_ID}}", "subgraph": "https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-polygon-v2", "addresses": { diff --git a/src/config/sepolia.json b/src/config/sepolia.json index 91889dba..da76fcf8 100644 --- a/src/config/sepolia.json +++ b/src/config/sepolia.json @@ -1,6 +1,7 @@ { "networkId": 11155111, "network": "sepolia", + "GqlChain": "SEPOLIA", "rpc": "https://sepolia.infura.io/v3/{{INFURA_KEY}}", "subgraph": "https://api.studio.thegraph.com/query/24660/balancer-sepolia-v2/version/latest", "addresses": { diff --git a/src/config/zkevm.json b/src/config/zkevm.json index ca184cf8..8209e322 100644 --- a/src/config/zkevm.json +++ b/src/config/zkevm.json @@ -1,6 +1,7 @@ { "networkId": 1101, "network": "zkevm", + "GqlChain": "ZKEVM", "rpc": "https://polygonzkevm-mainnet.g.alchemy.com/v2/{{ALCHEMY_KEY}}", "subgraph": "https://api.studio.thegraph.com/query/24660/balancer-polygon-zk-v2/version/latest", "addresses": { diff --git a/src/modules/prices/beets-price-fetcher.ts b/src/modules/prices/beets-price-fetcher.ts index c969f80e..b38d37d5 100644 --- a/src/modules/prices/beets-price-fetcher.ts +++ b/src/modules/prices/beets-price-fetcher.ts @@ -3,6 +3,7 @@ */ import { Token } from '@/modules/tokens'; +import configs from '@/config'; import axios from 'axios'; const BEETS_API_URL = @@ -22,18 +23,25 @@ class BeetsPriceFetcher { const tokensWithPrices: Token[] = tokens.map(token => { if (tokenPricesByChain[token.chainId][token.address]) { - token.price = token.price || {} - token.price.usd = tokenPricesByChain[token.chainId][token.address].toString() + token.price = token.price || {}; + token.price.usd = + tokenPricesByChain[token.chainId][token.address].toString(); } return token; }); - return tokensWithPrices; } async fetchFromBeetsAPI(chainId: number): Promise> { - const payload = JSON.stringify({query: 'query { tokenGetCurrentPrices { address price }}'}); + const unspupportedChains = [5, 11155111]; + if (unspupportedChains.includes(chainId)) { + return {}; + } + const gqlChain = configs[chainId].GqlChain || 'MAINNET'; + const payload = JSON.stringify({ + query: `query { tokenGetCurrentPrices(chains: [${gqlChain}]) { address price }}`, + }); const result = await axios.post(BEETS_API_URL, payload, { headers: { 'Content-Type': 'application/json',