1
0
mirror of https://github.com/oceanprotocol/ocean.js.git synced 2024-11-26 20:39:05 +01:00

Fix provider fee approval in order helper (#1795)

* fix provider fee approval in order helper

* fix lint

* undo hardcode
This commit is contained in:
Bogdan Fazakas 2023-12-15 13:39:39 +02:00 committed by GitHub
parent da262f7498
commit a0964d5096
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -10,7 +10,9 @@ import {
approve,
FixedRateExchange,
ConsumeMarketFee,
ProviderFees
ProviderFees,
ZERO_ADDRESS,
approveWei
} from '../index'
import Decimal from 'decimal.js'
@ -88,13 +90,32 @@ export async function orderAsset(
)
).providerFee
if (
fees &&
fees.providerFeeAddress !== ZERO_ADDRESS &&
fees.providerFeeAmount &&
parseInt(fees.providerFeeAmount) > 0
) {
try {
await approveWei(
consumerAccount,
config,
await consumerAccount.getAddress(),
fees.providerFeeToken,
asset.services[0].datatokenAddress,
fees.providerFeeAmount
)
} catch (error) {
throw new Error(`Failed to approve provider fee token ${fees.providerFeeToken}`)
}
}
const orderParams = {
consumer: consumerAddress || (await consumerAccount.getAddress()),
serviceIndex,
_providerFee: fees,
_consumeMarketFee: consumeMarketOrderFee
} as OrderParams
switch (pricingType) {
case 'free': {
if (templateIndex === 1) {
@ -105,8 +126,9 @@ export async function orderAsset(
await consumerAccount.getAddress()
)
if (!dispenserTx) {
return
throw new Error(`Failed to dispense !`)
}
await dispenserTx.wait()
return await datatoken.startOrder(
asset.datatokens[datatokenIndex].address,
orderParams.consumer,
@ -133,6 +155,7 @@ export async function orderAsset(
)
const fees = await fre.getFeesInfo(fixedRates[fixedRateIndex].id)
const exchange = await fre.getExchange(fixedRates[fixedRateIndex].id)
const { baseTokenAmount } = await fre.calcBaseInGivenDatatokensOut(
fees.exchangeId,
'1',
@ -166,7 +189,7 @@ export async function orderAsset(
)
const txApprove = typeof tx !== 'number' ? await tx.wait() : tx
if (!txApprove) {
return
throw new Error(`Failed to appove ${exchange.baseToken} !`)
}
const freTx = await fre.buyDatatokens(
exchange.exchangeId,
@ -177,7 +200,7 @@ export async function orderAsset(
)
const buyDtTx = await freTx.wait()
if (!buyDtTx) {
return
throw new Error(`Failed to buy datatoken from fixed rate!`)
}
return await datatoken.startOrder(
asset.datatokens[datatokenIndex].address,
@ -202,11 +225,12 @@ export async function orderAsset(
if (!txApprove) {
return
}
return await datatoken.buyFromFreAndOrder(
const txBuy = await datatoken.buyFromFreAndOrder(
asset.datatokens[datatokenIndex].address,
orderParams,
freParams
)
return txBuy
}
break
}