diff --git a/centrifuge-js/src/modules/pools.ts b/centrifuge-js/src/modules/pools.ts index bb8a96f689..37a24d79b6 100644 --- a/centrifuge-js/src/modules/pools.ts +++ b/centrifuge-js/src/modules/pools.ts @@ -2361,6 +2361,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( @@ -2372,6 +2373,7 @@ export function getPoolsModule(inst: Centrifuge) { rateValues, interestLastUpdated, rawCurrency, + rawPortfolio, ]) => { const currency = rawCurrency.toHuman() as AssetCurrencyData const rates = rateValues.toPrimitive() as InterestAccrual[] @@ -2391,6 +2393,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 @@ -2490,6 +2506,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 @@ -2562,6 +2579,7 @@ export function getPoolsModule(inst: Centrifuge) { normalizedDebt: new CurrencyBalance(normalizedDebt, currency.decimals), outstandingPrincipal, outstandingInterest, + presentValue: portfolio.presentValue, } } )