From 7045f4e90f055b9a40a9c59d90db80d3e53f53b9 Mon Sep 17 00:00:00 2001 From: Corey Rice Date: Sun, 25 Aug 2024 19:47:41 -0500 Subject: [PATCH] refactor: error messages --- packages/cli/source/commands/convert.tsx | 55 +++++++++--------------- 1 file changed, 21 insertions(+), 34 deletions(-) diff --git a/packages/cli/source/commands/convert.tsx b/packages/cli/source/commands/convert.tsx index b4487b6..7c13b73 100644 --- a/packages/cli/source/commands/convert.tsx +++ b/packages/cli/source/commands/convert.tsx @@ -180,6 +180,7 @@ export default function Convert({ options }: Props) { vTokenAddress, amountOut, ); + if (+underlyingUsdValue > minTradeUsd) { if (+underlyingUsdValue > maxTradeUsd) { amountOut = parseUnits((maxTradeUsd / +underlyingPriceUsd.toString()).toString(), underlyingDecimals); @@ -200,49 +201,35 @@ export default function Convert({ options }: Props) { const maxMinIncome = ((amount * BigInt(10000 + minIncomeBp)) / 10000n - amount) * -1n; - if (trade && ((profitable && minIncome > 0n) || !profitable)) { + const context = { + converter: t.tokenConverter, + tokenToReceiveFromConverter: t.assetOut.address, + tokenToSendToConverter: t.assetIn.address, + amount, + minIncome, + percentage: Number(minIncome) && Number(amount) && Number((minIncome * 10000000n) / amount) / 10000000, + maxMinIncome, + } + if (t.accountBalanceAssetOut < minIncome * -1n && !profitable) { dispatch({ + error: "Insufficient wallet balance to pay min income", type: "ExecuteTrade", - context: { - converter: t.tokenConverter, - tokenToReceiveFromConverter: t.assetOut.address, - tokenToSendToConverter: t.assetIn.address, - amount, - minIncome, - percentage: Number((minIncome * 10000000n) / amount) / 10000000, - maxMinIncome, - }, + context, }); - - await tokenConverter.arbitrage(t.tokenConverter, trade, amount, minIncome); - } else if (t.accountBalanceAssetOut < minIncome * -1n) { + } else if (minIncome < 1 && minIncome * -1n > maxMinIncome * -1n) { dispatch({ type: "ExecuteTrade", - error: "Insufficient wallet balance to pay min income", - context: { - converter: t.tokenConverter, - tokenToReceiveFromConverter: t.assetOut.address, - tokenToSendToConverter: t.assetIn.address, - amount, - minIncome, - percentage: Number((minIncome * 10000000n) / amount) / 10000000, - maxMinIncome, - }, + error: "Min income too high", + context, }); - } else if (minIncome < 1 && minIncome * -1n > maxMinIncome * -1n) { + } else if (profitable && minIncome < 0) { dispatch({ + error: "Conversion is not profitable", type: "ExecuteTrade", - error: "Min income too high", - context: { - converter: t.tokenConverter, - tokenToReceiveFromConverter: t.assetOut.address, - tokenToSendToConverter: t.assetIn.address, - amount, - minIncome, - percentage: Number((minIncome * 10000000n) / amount) / 10000000, - maxMinIncome, - }, + context, }); + } else if (trade) { + await tokenConverter.arbitrage(t.tokenConverter, trade, amount, minIncome); } } }