diff --git a/projects/ui/src/components/Barn/Actions/Buy.tsx b/projects/ui/src/components/Barn/Actions/Buy.tsx index 6e7de4761e..25ae49f99f 100644 --- a/projects/ui/src/components/Barn/Actions/Buy.tsx +++ b/projects/ui/src/components/Barn/Actions/Buy.tsx @@ -159,6 +159,11 @@ const BuyForm: FC< return _params; }, [values.balanceFrom]); + /// Approval Checks + const shouldApprove = + values.balanceFrom === BalanceFrom.EXTERNAL || + values.balanceFrom === BalanceFrom.TOTAL && values.tokens[0].amount?.gt(balances[tokenIn.address].internal); + return ( @@ -257,7 +262,7 @@ const BuyForm: FC< disabled={!isValid} // Smart props contract={sdk.contracts.beanstalk} - tokens={values.tokens} + tokens={shouldApprove ? values.tokens : []} > Buy diff --git a/projects/ui/src/components/Field/Actions/Sow.tsx b/projects/ui/src/components/Field/Actions/Sow.tsx index 38e39ac534..7878303aff 100644 --- a/projects/ui/src/components/Field/Actions/Sow.tsx +++ b/projects/ui/src/components/Field/Actions/Sow.tsx @@ -149,6 +149,11 @@ const SowForm: FC< claimBeansState: values.claimableBeans, }); + /// Approval Checks + const shouldApprove = + values.balanceFrom === BalanceFrom.EXTERNAL || + values.balanceFrom === BalanceFrom.TOTAL && values.tokens[0].amount?.gt(balances[tokenIn.address].internal); + const handleSetBalanceFrom = useCallback( (_balanceFrom: BalanceFrom) => { setFieldValue('balanceFrom', _balanceFrom); @@ -354,7 +359,7 @@ const SowForm: FC< size="large" disabled={!isSubmittable || isSubmitting} contract={sdk.contracts.beanstalk} - tokens={values.tokens} + tokens={shouldApprove ? values.tokens : []} mode="auto" > Sow diff --git a/projects/ui/src/components/Silo/Actions/Deposit.tsx b/projects/ui/src/components/Silo/Actions/Deposit.tsx index 09663ea9b6..a997bfa68b 100644 --- a/projects/ui/src/components/Silo/Actions/Deposit.tsx +++ b/projects/ui/src/components/Silo/Actions/Deposit.tsx @@ -179,6 +179,11 @@ const DepositForm: FC< values.tokens[0].amount === undefined && values.claimableBeans.amount?.eq(0); + /// Approval Checks + const shouldApprove = + values.balanceFrom === BalanceFrom.EXTERNAL || + values.balanceFrom === BalanceFrom.TOTAL && values.tokens[0].amount?.gt(balances[tokenIn.address].internal); + return ( Deposit diff --git a/projects/ui/src/components/Swap/Actions/Transfer.tsx b/projects/ui/src/components/Swap/Actions/Transfer.tsx index 824d666b67..88cb7e8596 100644 --- a/projects/ui/src/components/Swap/Actions/Transfer.tsx +++ b/projects/ui/src/components/Swap/Actions/Transfer.tsx @@ -236,10 +236,10 @@ const TransferForm: FC< // eslint-disable-next-line react-hooks/exhaustive-deps }, [handleSetBalanceFrom, account, toMode]); - /// Checks + /// Approval Checks const shouldApprove = fromMode === FarmFromMode.EXTERNAL || - fromMode === FarmFromMode.INTERNAL_EXTERNAL; + fromMode === FarmFromMode.INTERNAL_EXTERNAL && amount?.gt(balances[tokenIn.address]?.internal); const amountsCheck = amount?.gt(0); const enoughBalanceCheck = amount