}
ocean={`${userLiquidity?.ocean}`}
+ oceanSymbol={oceanSymbol}
dt={`${userLiquidity?.datatoken}`}
dtSymbol={dtSymbol}
poolShares={poolTokens}
@@ -438,6 +448,7 @@ export default function Pool(): ReactElement {
}
ocean={`${price?.ocean}`}
+ oceanSymbol={oceanSymbol}
dt={`${price?.datatoken}`}
dtSymbol={dtSymbol}
poolShares={totalPoolTokens}
diff --git a/src/components/organisms/AssetActions/Trade/FormTrade.tsx b/src/components/organisms/AssetActions/Trade/FormTrade.tsx
index 8342d1ae4..b86647fc5 100644
--- a/src/components/organisms/AssetActions/Trade/FormTrade.tsx
+++ b/src/components/organisms/AssetActions/Trade/FormTrade.tsx
@@ -1,5 +1,5 @@
import React, { ReactElement, useState } from 'react'
-import { BestPrice, DDO, Logger } from '@oceanprotocol/lib'
+import { DDO, Logger } from '@oceanprotocol/lib'
import * as Yup from 'yup'
import { Formik } from 'formik'
import Actions from '../Pool/Actions'
@@ -15,6 +15,7 @@ import Decimal from 'decimal.js'
import { useOcean } from '../../../../providers/Ocean'
import { useWeb3 } from '../../../../providers/Web3'
import { useAsset } from '../../../../providers/Asset'
+import { BestPrice } from '../../../../models/BestPrice'
const contentQuery = graphql`
query TradeQuery {
diff --git a/src/components/organisms/AssetActions/Trade/Output.tsx b/src/components/organisms/AssetActions/Trade/Output.tsx
index 61879b753..8c4071954 100644
--- a/src/components/organisms/AssetActions/Trade/Output.tsx
+++ b/src/components/organisms/AssetActions/Trade/Output.tsx
@@ -12,9 +12,11 @@ Decimal.set({ toExpNeg: -18, precision: 18, rounding: 1 })
export default function Output({
dtSymbol,
+ oceanSymbol,
poolAddress
}: {
dtSymbol: string
+ oceanSymbol: string
poolAddress: string
}): ReactElement {
const { ocean } = useOcean()
@@ -78,14 +80,14 @@ export default function Output({
Swap fee
void
setMaximumOcean: (value: string) => void
}): ReactElement {
- const { ocean } = useOcean()
+ const { ocean, config } = useOcean()
const [oceanItem, setOceanItem] = useState({
amount: '0',
- token: 'OCEAN',
+ token: config.oceanTokenSymbol,
maxAmount: '0'
})
const [dtItem, setDtItem] = useState({
@@ -194,7 +194,11 @@ export default function Swap({
handleValueChange={handleValueChange}
/>
-
+
token.tokenId !== null)
- return symbol.tokenId.symbol
+function findTokenByType(tokens: PoolSharePoolIdTokens[], type: string) {
+ const { symbol } = tokens.find((token) =>
+ type === 'datatoken'
+ ? token.isDatatoken === true
+ : token.isDatatoken === false
+ )
+ return symbol
}
function Symbol({ tokens }: { tokens: PoolSharePoolIdTokens[] }) {
- return <>{findValidToken(tokens)}>
+ return <>{findTokenByType(tokens, 'datatoken')}>
}
function Liquidity({ row, type }: { row: Asset; type: string }) {
@@ -104,9 +108,13 @@ function Liquidity({ row, type }: { row: Asset; type: string }) {
className={styles.totalLiquidity}
hideApproximateSymbol
/>
-
+
diff --git a/src/hooks/usePricing.ts b/src/hooks/usePricing.ts
index cc956c279..bf9432936 100644
--- a/src/hooks/usePricing.ts
+++ b/src/hooks/usePricing.ts
@@ -1,4 +1,4 @@
-import { DDO, Logger, BestPrice } from '@oceanprotocol/lib'
+import { DDO, Logger } from '@oceanprotocol/lib'
import { useState } from 'react'
import { TransactionReceipt } from 'web3-core'
import { Decimal } from 'decimal.js'
@@ -13,6 +13,7 @@ import { sleep } from '../utils'
import { useOcean } from '../providers/Ocean'
import { useWeb3 } from '../providers/Web3'
+import { BestPrice } from '../models/BestPrice'
interface PriceOptions {
price: number
diff --git a/src/models/BestPrice.ts b/src/models/BestPrice.ts
new file mode 100644
index 000000000..65ad72e58
--- /dev/null
+++ b/src/models/BestPrice.ts
@@ -0,0 +1,12 @@
+export interface BestPrice {
+ type: 'pool' | 'exchange' | 'free' | ''
+ address: string
+ value: number
+ isConsumable?: 'true' | 'false' | ''
+ ocean?: number
+ oceanSymbol?: string
+ datatoken?: number
+ datatokenSymbol?: string
+ exchangeId?: string
+ pools: string[]
+}
diff --git a/src/providers/Asset.tsx b/src/providers/Asset.tsx
index 5f6659206..ed9800310 100644
--- a/src/providers/Asset.tsx
+++ b/src/providers/Asset.tsx
@@ -7,7 +7,7 @@ import React, {
useCallback,
ReactNode
} from 'react'
-import { Logger, DDO, BestPrice, MetadataMain } from '@oceanprotocol/lib'
+import { Logger, DDO, MetadataMain } from '@oceanprotocol/lib'
import { PurgatoryData } from '@oceanprotocol/lib/dist/node/ddo/interfaces/PurgatoryData'
import getAssetPurgatoryData from '../utils/purgatory'
import axios, { CancelToken } from 'axios'
@@ -16,6 +16,7 @@ import { getPrice } from '../utils/subgraph'
import { MetadataMarket } from '../@types/MetaData'
import { useWeb3 } from './Web3'
import { useSiteMetadata } from '../hooks/useSiteMetadata'
+import { BestPrice } from '../models/BestPrice'
interface AssetProviderValue {
isInPurgatory: boolean
diff --git a/src/utils/ocean.ts b/src/utils/ocean.ts
index 5a4245045..f10174c34 100644
--- a/src/utils/ocean.ts
+++ b/src/utils/ocean.ts
@@ -15,8 +15,7 @@ export function getOceanConfig(network: string | number): ConfigHelperConfig {
network === 2021000
? undefined
: process.env.GATSBY_INFURA_PROJECT_ID
- )
-
+ ) as ConfigHelperConfig
return config as ConfigHelperConfig
}
diff --git a/src/utils/subgraph.ts b/src/utils/subgraph.ts
index 53c7b16aa..6b13e1b1e 100644
--- a/src/utils/subgraph.ts
+++ b/src/utils/subgraph.ts
@@ -1,5 +1,5 @@
import { gql, OperationResult, TypedDocumentNode, OperationContext } from 'urql'
-import { DDO, BestPrice } from '@oceanprotocol/lib'
+import { DDO } from '@oceanprotocol/lib'
import { getUrqlClientInstance } from '../providers/UrqlProvider'
import { getOceanConfig } from './ocean'
import web3 from 'web3'
@@ -24,6 +24,7 @@ import {
PoolShares as PoolSharesList,
PoolShares_poolShares as PoolShare
} from '../@types/apollo/PoolShares'
+import { BestPrice } from '../models/BestPrice'
export interface UserTVL {
price: string
@@ -104,6 +105,10 @@ const PoolQuery = gql`
datatokenAddress
datatokenReserve
oceanReserve
+ tokens(where: { isDatatoken: false }) {
+ isDatatoken
+ symbol
+ }
}
}
`
@@ -117,6 +122,9 @@ const AssetPoolPriceQuerry = gql`
datatokenAddress
datatokenReserve
oceanReserve
+ tokens {
+ symbol
+ }
}
}
`
@@ -281,6 +289,7 @@ function transformPriceToBestPrice(
? poolPrice[0]?.spotPrice
: poolPrice[0]?.consumePrice,
ocean: poolPrice[0]?.oceanReserve,
+ oceanSymbol: poolPrice[0]?.tokens[0]?.symbol,
datatoken: poolPrice[0]?.datatokenReserve,
pools: [poolPrice[0]?.id],
isConsumable: poolPrice[0]?.consumePrice === '-1' ? 'false' : 'true'
@@ -293,7 +302,7 @@ function transformPriceToBestPrice(
type: 'exchange',
value: frePrice[0]?.rate,
address: frePrice[0]?.id,
- exchange_id: frePrice[0]?.id,
+ exchangeId: frePrice[0]?.id,
ocean: 0,
datatoken: 0,
pools: [],
@@ -305,7 +314,7 @@ function transformPriceToBestPrice(
type: 'free',
value: 0,
address: freePrice[0]?.datatoken.id,
- exchange_id: '',
+ exchangeId: '',
ocean: 0,
datatoken: 0,
pools: [],
@@ -317,7 +326,7 @@ function transformPriceToBestPrice(
type: '',
value: 0,
address: '',
- exchange_id: '',
+ exchangeId: '',
ocean: 0,
datatoken: 0,
pools: [],
@@ -563,7 +572,7 @@ export async function getAccountNumberOfOrders(
return numberOfOrders
}
-export function calculateUserLiquidity(poolShare: PoolShare) {
+export function calculateUserLiquidity(poolShare: PoolShare): number {
const ocean =
(poolShare.balance / poolShare.poolId.totalShares) *
poolShare.poolId.oceanReserve