1
0
mirror of https://github.com/oceanprotocol/market.git synced 2024-12-02 05:57:29 +01:00

getQueryContext abstraction

This commit is contained in:
Matthias Kretschmann 2021-07-22 14:01:30 +02:00
parent ae988f083b
commit c25d1e9224
Signed by: m
GPG Key ID: 606EEEF3C479A91F
3 changed files with 21 additions and 35 deletions

View File

@ -8,7 +8,6 @@ import {
ChartTooltipItem, ChartTooltipItem,
ChartTooltipOptions ChartTooltipOptions
} from 'chart.js' } from 'chart.js'
import styles from './Graph.module.css'
import Loader from '../../../atoms/Loader' import Loader from '../../../atoms/Loader'
import { formatPrice } from '../../../atoms/Price/PriceUnit' import { formatPrice } from '../../../atoms/Price/PriceUnit'
import { useUserPreferences } from '../../../../providers/UserPreferences' import { useUserPreferences } from '../../../../providers/UserPreferences'
@ -17,9 +16,10 @@ import { darkModeConfig } from '../../../../../app.config'
import Button from '../../../atoms/Button' import Button from '../../../atoms/Button'
import { Logger } from '@oceanprotocol/lib' import { Logger } from '@oceanprotocol/lib'
import { useAsset } from '../../../../providers/Asset' import { useAsset } from '../../../../providers/Asset'
import { gql, OperationContext, OperationResult } from 'urql' import { gql, OperationResult } from 'urql'
import { PoolHistory } from '../../../../@types/apollo/PoolHistory' import { PoolHistory } from '../../../../@types/apollo/PoolHistory'
import { getSubgrahUri, fetchData } from '../../../../utils/subgraph' import { fetchData, getQueryContext } from '../../../../utils/subgraph'
import styles from './Graph.module.css'
declare type GraphType = 'liquidity' | 'price' declare type GraphType = 'liquidity' | 'price'
@ -138,12 +138,7 @@ export default function Graph(): ReactElement {
async function getPoolHistory() { async function getPoolHistory() {
try { try {
const queryContext: OperationContext = { const queryContext = getQueryContext(ddo.chainId)
url: `${getSubgrahUri(
Number(ddo.chainId)
)}/subgraphs/name/oceanprotocol/ocean-subgraph`,
requestPolicy: 'network-only'
}
const queryVariables = { const queryVariables = {
id: price.address.toLowerCase(), id: price.address.toLowerCase(),
block: lastBlock block: lastBlock

View File

@ -15,11 +15,11 @@ import { PoolBalance } from '../../../../@types/TokenBalance'
import Transactions from './Transactions' import Transactions from './Transactions'
import Graph from './Graph' import Graph from './Graph'
import { useAsset } from '../../../../providers/Asset' import { useAsset } from '../../../../providers/Asset'
import { gql, OperationResult, OperationContext } from 'urql' import { gql, OperationResult } from 'urql'
import { PoolLiquidity } from '../../../../@types/apollo/PoolLiquidity' import { PoolLiquidity } from '../../../../@types/apollo/PoolLiquidity'
import { useOcean } from '../../../../providers/Ocean' import { useOcean } from '../../../../providers/Ocean'
import { useWeb3 } from '../../../../providers/Web3' import { useWeb3 } from '../../../../providers/Web3'
import { getSubgrahUri, fetchData } from '../../../../utils/subgraph' import { fetchData, getQueryContext } from '../../../../utils/subgraph'
const REFETCH_INTERVAL = 5000 const REFETCH_INTERVAL = 5000
@ -100,12 +100,7 @@ export default function Pool(): ReactElement {
const [refreshPool, setRefreshPool] = useState(false) const [refreshPool, setRefreshPool] = useState(false)
async function getPoolLiquidity() { async function getPoolLiquidity() {
const queryContext: OperationContext = { const queryContext = getQueryContext(ddo.chainId)
url: `${getSubgrahUri(
Number(ddo.chainId)
)}/subgraphs/name/oceanprotocol/ocean-subgraph`,
requestPolicy: 'network-only'
}
const queryVariables = { const queryVariables = {
id: price.address.toLowerCase(), id: price.address.toLowerCase(),
shareId: `${price.address.toLowerCase()}-${ddo.publicKey[0].owner.toLowerCase()}` shareId: `${price.address.toLowerCase()}-${ddo.publicKey[0].owner.toLowerCase()}`

View File

@ -146,6 +146,17 @@ export function getSubgrahUri(chainId: number): string {
return config.subgraphUri return config.subgraphUri
} }
export function getQueryContext(chainId: number): OperationContext {
const queryContext: OperationContext = {
url: `${getSubgrahUri(
Number(chainId)
)}/subgraphs/name/oceanprotocol/ocean-subgraph`,
requestPolicy: 'network-only'
}
return queryContext
}
export async function fetchData( export async function fetchData(
query: TypedDocumentNode, query: TypedDocumentNode,
variables: any, variables: any,
@ -285,12 +296,7 @@ async function getAssetsPoolsExchangesAndDatatokenMap(
datatoken_in: chainAssetLists[chainKey] datatoken_in: chainAssetLists[chainKey]
} }
const queryContext: OperationContext = { const queryContext = getQueryContext(Number(chainKey))
url: `${getSubgrahUri(
Number(chainKey)
)}/subgraphs/name/oceanprotocol/ocean-subgraph`,
requestPolicy: 'network-only'
}
const chainPoolPriceResponse: OperationResult<AssetsPoolPrice> = const chainPoolPriceResponse: OperationResult<AssetsPoolPrice> =
await fetchData(PoolQuery, poolVariables, queryContext) await fetchData(PoolQuery, poolVariables, queryContext)
@ -354,13 +360,8 @@ export async function getPrice(asset: DDO): Promise<BestPrice> {
const poolVariables = { const poolVariables = {
datatokenAddress: asset?.dataToken.toLowerCase() datatokenAddress: asset?.dataToken.toLowerCase()
} }
const queryContext = getQueryContext(Number(asset.chainId))
const queryContext: OperationContext = {
url: `${getSubgrahUri(
asset.chainId
)}/subgraphs/name/oceanprotocol/ocean-subgraph`,
requestPolicy: 'network-only'
}
const poolPriceResponse: OperationResult<AssetsPoolPrice> = await fetchData( const poolPriceResponse: OperationResult<AssetsPoolPrice> = await fetchData(
AssetPoolPriceQuerry, AssetPoolPriceQuerry,
poolVariables, poolVariables,
@ -434,12 +435,7 @@ export async function getHighestLiquidityDIDs(
const didList: string[] = [] const didList: string[] = []
let highestLiquidiyAssets: HighestLiquidityAssetsPools[] = [] let highestLiquidiyAssets: HighestLiquidityAssetsPools[] = []
for (const chain of chainIds) { for (const chain of chainIds) {
const queryContext: OperationContext = { const queryContext = getQueryContext(Number(chain))
url: `${getSubgrahUri(
Number(chain)
)}/subgraphs/name/oceanprotocol/ocean-subgraph`,
requestPolicy: 'network-only'
}
const fetchedPools: OperationResult<HighestLiquidityGraphAssets, any> = const fetchedPools: OperationResult<HighestLiquidityGraphAssets, any> =
await fetchData(HighestLiquidityAssets, null, queryContext) await fetchData(HighestLiquidityAssets, null, queryContext)
highestLiquidiyAssets = highestLiquidiyAssets.concat( highestLiquidiyAssets = highestLiquidiyAssets.concat(