From 1fe963e513f270164374c63c7ec778b150d4cbec Mon Sep 17 00:00:00 2001 From: marshall <99344331+marshall2112@users.noreply.github.com> Date: Fri, 15 Nov 2024 13:06:45 -0500 Subject: [PATCH] Fix the trv calculation --- .../Core/DappPages/Borrow/TLC/Borrow.tsx | 24 +++++++++++++------ .../Pages/Core/DappPages/Borrow/index.tsx | 10 ++++++-- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/apps/dapp/src/components/Pages/Core/DappPages/Borrow/TLC/Borrow.tsx b/apps/dapp/src/components/Pages/Core/DappPages/Borrow/TLC/Borrow.tsx index 0f5f6f756..d7c9b109f 100644 --- a/apps/dapp/src/components/Pages/Core/DappPages/Borrow/TLC/Borrow.tsx +++ b/apps/dapp/src/components/Pages/Core/DappPages/Borrow/TLC/Borrow.tsx @@ -20,7 +20,7 @@ import { TlcInfo, Warning, } from '../index'; -import { fromAtto, toAtto } from 'utils/bigNumber'; +import { fromAtto, toAtto, ZERO } from 'utils/bigNumber'; import styled from 'styled-components'; import { ReactNode, useEffect, useMemo, useState } from 'react'; @@ -67,18 +67,28 @@ export const Borrow: React.FC = ({ const userMaxBorrowBigNumber = toAtto(userMaxBorrow); - if (!tlcInfo) { - return { value: userMaxBorrow, isCircuitBreakerActive: false }; - } + let returnValue = { value: userMaxBorrow, isCircuitBreakerActive: false }; - if (tlcInfo.daiCircuitBreakerRemaining.lt(userMaxBorrowBigNumber)) { - return { + // Check if the dai circuit breaker is active + if ( + tlcInfo && + tlcInfo.daiCircuitBreakerRemaining.lt(userMaxBorrowBigNumber) + ) { + returnValue = { value: fromAtto(tlcInfo.daiCircuitBreakerRemaining), isCircuitBreakerActive: true, }; } - return { value: userMaxBorrow, isCircuitBreakerActive: false }; + // Check if trvAvailable from the contract is less than the user max borrow + if (tlcInfo && tlcInfo.trvAvailable.lt(userMaxBorrowBigNumber)) { + returnValue = { + value: fromAtto(tlcInfo.trvAvailable || ZERO), + isCircuitBreakerActive: true, + }; + } + + return returnValue; }, [tlcInfo, accountPosition, prices.tpi]); return ( diff --git a/apps/dapp/src/components/Pages/Core/DappPages/Borrow/index.tsx b/apps/dapp/src/components/Pages/Core/DappPages/Borrow/index.tsx index 0fbd34bee..50f7abfe1 100644 --- a/apps/dapp/src/components/Pages/Core/DappPages/Borrow/index.tsx +++ b/apps/dapp/src/components/Pages/Core/DappPages/Borrow/index.tsx @@ -49,6 +49,7 @@ export type TlcInfo = { daiCircuitBreakerRemaining: BigNumber; templeCircuitBreakerRemaining: BigNumber; outstandingUserDebt: number; + trvAvailable: BigNumber; }; export const MAX_LTV = 85; @@ -161,6 +162,9 @@ export const BorrowPage = () => { const trvContract = new TreasuryReservesVault__factory(signer).attach( env.contracts.treasuryReservesVault ); + + const trvAvailable = await trvContract.totalAvailable(env.contracts.dai); + const strategyAvailalableToBorrowFromTrv = await trvContract.availableForStrategyToBorrow( env.contracts.strategies.tlcStrategy, @@ -192,6 +196,7 @@ export const BorrowPage = () => { borrowRate: currentBorrowInterestRate, liquidationLtv: fromAtto(maxLtv), outstandingUserDebt: fromAtto(outstandingUserDebt), + trvAvailable: trvAvailable, daiCircuitBreakerRemaining: circuitBreakers?.daiCircuitBreakerRemaining, templeCircuitBreakerRemaining: circuitBreakers?.templeCircuitBreakerRemaining, @@ -243,6 +248,7 @@ export const BorrowPage = () => { templeCircuitBreakerRemaining: tlcInfoFromContracts?.templeCircuitBreakerRemaining || ZERO, outstandingUserDebt: tlcInfoFromContracts?.outstandingUserDebt || 0, + trvAvailable: tlcInfoFromContracts?.trvAvailable || ZERO, }); } catch (e) { setMetricsLoading(false); @@ -492,12 +498,12 @@ export const BorrowPage = () => { borrowableAmount = fromAtto(tlcInfo.daiCircuitBreakerRemaining); } - const trvAvailable = tlcInfo.outstandingUserDebt; + const trvAvailable = fromAtto(tlcInfo.trvAvailable); if (trvAvailable < borrowableAmount) { borrowableAmount = trvAvailable; } - return `$${Number(borrowableAmount).toLocaleString()}`; + return `$${Number(borrowableAmount).toFixed(2)}`; }, [tlcInfo]); return (