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

update price value for pool assets using consumePrice and added isConsumable logic

This commit is contained in:
Bogdan Fazakas 2021-04-22 14:03:58 +03:00
parent d73b921a48
commit 0cef2cccd5
3 changed files with 23 additions and 13 deletions

2
package-lock.json generated
View File

@ -18101,7 +18101,7 @@
} }
}, },
"ethereumjs-abi": { "ethereumjs-abi": {
"version": "git+https://github.com/ethereumjs/ethereumjs-abi.git#1a27c59c15ab1e95ee8e5c4ed6ad814c49cc439e", "version": "git+https://github.com/ethereumjs/ethereumjs-abi.git#1ce6a1d64235fabe2aaf827fd606def55693508f",
"from": "git+https://github.com/ethereumjs/ethereumjs-abi.git", "from": "git+https://github.com/ethereumjs/ethereumjs-abi.git",
"requires": { "requires": {
"bn.js": "^4.11.8", "bn.js": "^4.11.8",

View File

@ -117,13 +117,8 @@ function AssetProvider({
const initMetadata = useCallback(async (ddo: DDO): Promise<void> => { const initMetadata = useCallback(async (ddo: DDO): Promise<void> => {
if (!ddo) return if (!ddo) return
// Set price & metadata from DDO first
// TODO Hacky hack, temporary™: set isConsumable to true by default since Aquarius can't be trusted.
// setPrice({ ...ddo.price, isConsumable: 'true' })
const returnedPrice = await getPrice(ddo) const returnedPrice = await getPrice(ddo)
console.log('returnedPrice', returnedPrice) setPrice({ ...returnedPrice })
setPrice({ ...returnedPrice, isConsumable: 'true' })
// Get metadata from DDO // Get metadata from DDO
const { attributes } = ddo.findServiceByType('metadata') const { attributes } = ddo.findServiceByType('metadata')

View File

@ -32,8 +32,9 @@ const AssetFreQuery = gql`
const PoolQuery = gql` const PoolQuery = gql`
query AssetsPoolPrice($datatokenAddress_in: [String!]) { query AssetsPoolPrice($datatokenAddress_in: [String!]) {
pools(where: { datatokenAddress_in: $datatokenAddress_in }) { pools(where: { datatokenAddress_in: $datatokenAddress_in }) {
spotPrice
id id
spotPrice
consumePrice
datatokenAddress datatokenAddress
} }
} }
@ -44,9 +45,10 @@ const AssetPoolPriceQuerry = gql`
pools(where: { datatokenAddress: $datatokenAddress }) { pools(where: { datatokenAddress: $datatokenAddress }) {
id id
spotPrice spotPrice
consumePrice
datatokenAddress
datatokenReserve datatokenReserve
oceanReserve oceanReserve
datatokenAddress
} }
} }
` `
@ -127,7 +129,10 @@ export async function getAssetPrices(assets: DDO[]): Promise<PriceList> {
} }
const poolPriceResponse: any = await fetchData(PoolQuery, poolVariables) const poolPriceResponse: any = await fetchData(PoolQuery, poolVariables)
for (const poolPrice of poolPriceResponse.data?.pools) { for (const poolPrice of poolPriceResponse.data?.pools) {
priceList[didDTMap[poolPrice.datatokenAddress]] = poolPrice.spotPrice priceList[didDTMap[poolPrice.datatokenAddress]] =
poolPrice.consumePrice === '-1'
? poolPrice.spotPrice
: poolPrice.consumePrice
} }
const frePriceResponse: any = await fetchData(FreQuery, freVariables) const frePriceResponse: any = await fetchData(FreQuery, freVariables)
for (const frePrice of frePriceResponse.data?.fixedRateExchanges) { for (const frePrice of frePriceResponse.data?.fixedRateExchanges) {
@ -154,13 +159,22 @@ export async function getPrice(asset: DDO): Promise<BestPrice> {
const price: BestPrice = { const price: BestPrice = {
type: 'pool', type: 'pool',
address: poolPriceResponse.data?.pools[0]?.id, address: poolPriceResponse.data?.pools[0]?.id,
value: poolPriceResponse.data?.pools[0]?.spotPrice, value:
poolPriceResponse.data?.pools[0]?.consumePrice === '-1'
? poolPriceResponse.data?.pools[0]?.spotPrice
: poolPriceResponse.data?.pools[0]?.consumePrice,
ocean: poolPriceResponse.data?.pools[0]?.oceanReserve, ocean: poolPriceResponse.data?.pools[0]?.oceanReserve,
datatoken: poolPriceResponse.data?.pools[0]?.datatokenReserve, datatoken: poolPriceResponse.data?.pools[0]?.datatokenReserve,
pools: [poolPriceResponse.data?.pools[0]?.id] pools: [poolPriceResponse.data?.pools[0]?.id],
isConsumable:
poolPriceResponse.data?.pools[0]?.consumePrice === '-1'
? 'false'
: 'true'
} }
return price return price
} else if (frePriceResponse.data?.fixedRateExchanges.length > 0) { } else if (frePriceResponse.data?.fixedRateExchanges.length > 0) {
// TODO Hacky hack, temporary™: set isConsumable to true for fre assets.
// isConsumable: 'true'
const price: BestPrice = { const price: BestPrice = {
type: 'exchange', type: 'exchange',
value: frePriceResponse.data?.fixedRateExchanges[0]?.rate, value: frePriceResponse.data?.fixedRateExchanges[0]?.rate,
@ -168,7 +182,8 @@ export async function getPrice(asset: DDO): Promise<BestPrice> {
exchange_id: frePriceResponse.data?.fixedRateExchanges[0]?.id, exchange_id: frePriceResponse.data?.fixedRateExchanges[0]?.id,
ocean: 0, ocean: 0,
datatoken: 0, datatoken: 0,
pools: [] pools: [],
isConsumable: 'true'
} }
return price return price
} else { } else {