From b613f2e68004525cb6dc0e337f87f019a285cb26 Mon Sep 17 00:00:00 2001 From: Pierre Bertet Date: Tue, 21 Jan 2025 20:11:14 +0000 Subject: [PATCH] Loan update tweaks (#737) * Loan update: require sufficient balance to submit * Loan update: show negative deposit in red * Loan update: show negative LTV as N/A * Loan update: show liquidation prices with a $ prefix + show N/A when absent --- .../LoanScreen/PanelUpdateBorrowPosition.tsx | 57 +++++++++++++------ 1 file changed, 41 insertions(+), 16 deletions(-) diff --git a/frontend/app/src/screens/LoanScreen/PanelUpdateBorrowPosition.tsx b/frontend/app/src/screens/LoanScreen/PanelUpdateBorrowPosition.tsx index 9de00ec96..4bd03facf 100644 --- a/frontend/app/src/screens/LoanScreen/PanelUpdateBorrowPosition.tsx +++ b/frontend/app/src/screens/LoanScreen/PanelUpdateBorrowPosition.tsx @@ -121,14 +121,24 @@ export function PanelUpdateBorrowPosition({ const isBelowMinDebt = debtChange.parsed && !debtChange.isEmpty && newDebt && dn.lt(newDebt, MIN_DEBT); - const allowSubmit = ( - account.isConnected - ) && ( - !dn.eq(loanDetails.deposit ?? dnum18(0), newLoanDetails.deposit ?? dnum18(0)) - || !dn.eq(loanDetails.debt ?? dnum18(0), newLoanDetails.debt ?? dnum18(0)) - ) && ( - !isBelowMinDebt - ); + const insufficientBold = debtMode === "remove" + && debtChange.parsed + && !debtChange.isEmpty + && boldBalance.data + && dn.gt(debtChange.parsed, boldBalance.data); + + const allowSubmit = account.isConnected + // above min. debt + && !isBelowMinDebt + // the new deposit must be positive + && dn.gt(newLoanDetails.deposit ?? dnum18(0), 0) + // the account must have enough BOLD + && !insufficientBold + // there should be a change in the deposit or debt + && ( + !dn.eq(loanDetails.deposit ?? dnum18(0), newLoanDetails.deposit ?? dnum18(0)) + || !dn.eq(loanDetails.debt ?? dnum18(0), newLoanDetails.debt ?? dnum18(0)) + ); return ( <> @@ -204,11 +214,20 @@ export function PanelUpdateBorrowPosition({ } value={ - +
+ +
Before:{" "} @@ -262,6 +281,8 @@ export function PanelUpdateBorrowPosition({ } drawer={!debtChange.isFocused && isBelowMinDebt ? { mode: "error", message: `You must borrow at least ${fmtnum(MIN_DEBT, 2)} BOLD.` } + : insufficientBold + ? { mode: "error", message: "Insufficient BOLD balance." } : null} label={{ start: debtMode === "remove" @@ -368,12 +389,16 @@ export function PanelUpdateBorrowPosition({ { label: LTV, before: , - after: , + after: newLoanDetails.ltv && dn.gt(newLoanDetails.ltv, 0) + ? + : "N/A", }, { label: "Liquidation price", - before: , - after: , + before: , + after: newLoanDetails.liquidationPrice + ? + : "N/A", }, ]} />