diff --git a/centrifuge-js/src/modules/pools.ts b/centrifuge-js/src/modules/pools.ts index d524de1e30..b1f911f693 100644 --- a/centrifuge-js/src/modules/pools.ts +++ b/centrifuge-js/src/modules/pools.ts @@ -2354,6 +2354,7 @@ export function getPoolsModule(inst: Centrifuge) { api.query.interestAccrual.rates(), api.query.interestAccrual.lastUpdated(), api.query.ormlAssetRegistry.metadata((poolValue.toHuman() as any).currency), + api.call.loansApi.portfolio(poolId), // TODO: remove loans.activeLoans and use values from this runtime call ]).pipe(take(1)) }), map( @@ -2365,6 +2366,7 @@ export function getPoolsModule(inst: Centrifuge) { rateValues, interestLastUpdated, rawCurrency, + rawPortfolio, ]) => { const currency = rawCurrency.toHuman() as AssetCurrencyData const rates = rateValues.toPrimitive() as InterestAccrual[] @@ -2384,6 +2386,20 @@ export function getPoolsModule(inst: Centrifuge) { } }) + const activeLoansPortfolio: Record< + string, + { + presentValue: CurrencyBalance + } + > = {} + + ;(rawPortfolio as any).forEach(([key, value]: [Codec, Codec]) => { + const data = value.toPrimitive() as any + activeLoansPortfolio[String(key.toPrimitive())] = { + presentValue: new CurrencyBalance(data.presentValue, currency.decimals), + } + }) + function getSharedLoanInfo(loan: CreatedLoanData | ActiveLoanData | ClosedLoanData) { const info = 'info' in loan ? loan.info : loan const [collectionId, nftId] = info.collateral @@ -2483,6 +2499,7 @@ export function getPoolsModule(inst: Centrifuge) { new Rate(rate.interestRatePerSec).toApr().toDecimalPlaces(4).toString() === sharedInfo.pricing.interestRate.toDecimal().toString() ) + const portfolio = activeLoansPortfolio[loanId.toString()] const penaltyRate = 'external' in loan.pricing ? loan.pricing.external.interest.penalty @@ -2555,6 +2572,7 @@ export function getPoolsModule(inst: Centrifuge) { normalizedDebt: new CurrencyBalance(normalizedDebt, currency.decimals), outstandingPrincipal, outstandingInterest, + presentValue: portfolio.presentValue, } } )