From fc7709838637b8916f8242c06b66c9635198c6ae Mon Sep 17 00:00:00 2001 From: Martin Grabina Date: Thu, 4 Dec 2025 00:26:19 -0300 Subject: [PATCH 1/2] fix: check correct reserve for flashloan enabled on debt and repay --- .../errors/shared/FlashLoanDisabledBlockingGuard.tsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/components/transactions/Swap/errors/shared/FlashLoanDisabledBlockingGuard.tsx b/src/components/transactions/Swap/errors/shared/FlashLoanDisabledBlockingGuard.tsx index 551da80720..7de6b63ba7 100644 --- a/src/components/transactions/Swap/errors/shared/FlashLoanDisabledBlockingGuard.tsx +++ b/src/components/transactions/Swap/errors/shared/FlashLoanDisabledBlockingGuard.tsx @@ -10,11 +10,11 @@ export const hasFlashLoanDisabled = (state: SwapState): boolean => { return false; } - if ( - state.useFlashloan === true && - state.sourceReserve?.reserve && - !state.sourceReserve.reserve.flashLoanEnabled - ) { + const reserve = !state.isInvertedSwap + ? state.sourceReserve?.reserve + : state.destinationReserve?.reserve; + + if (state.useFlashloan === true && reserve && !reserve.flashLoanEnabled) { return true; } From c310ac4b0cf4e1a9d0665117658e9065b7354fb4 Mon Sep 17 00:00:00 2001 From: Martin Grabina Date: Thu, 4 Dec 2025 01:03:31 -0300 Subject: [PATCH 2/2] fix: do not allow permit for sc wallets --- .../Swap/actions/approval/useSwapTokenApproval.ts | 5 ++++- .../Swap/errors/shared/FlashLoanDisabledBlockingGuard.tsx | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/components/transactions/Swap/actions/approval/useSwapTokenApproval.ts b/src/components/transactions/Swap/actions/approval/useSwapTokenApproval.ts index f982fef3af..ee21f3172e 100644 --- a/src/components/transactions/Swap/actions/approval/useSwapTokenApproval.ts +++ b/src/components/transactions/Swap/actions/approval/useSwapTokenApproval.ts @@ -5,6 +5,7 @@ import { defaultAbiCoder, splitSignature } from 'ethers/lib/utils'; import { Dispatch, useEffect, useMemo, useRef, useState } from 'react'; import { MOCK_SIGNED_HASH } from 'src/helpers/useTransactionHandler'; import { calculateSignedAmount } from 'src/hooks/paraswap/common'; +import { useGetConnectedWalletType } from 'src/hooks/useGetConnectedWalletType'; import { useModalContext } from 'src/hooks/useModal'; import { useWeb3Context } from 'src/libs/hooks/useWeb3Context'; import { useRootStore } from 'src/store/root'; @@ -104,6 +105,8 @@ export const useSwapTokenApproval = ({ const { sendTx, signTxData } = useWeb3Context(); const [loadingPermitData, setLoadingPermitData] = useState(true); + const { isSmartContractWallet } = useGetConnectedWalletType(); + const [ user, generateApproval, @@ -256,7 +259,7 @@ export const useSwapTokenApproval = ({ }; }, [chainId, token]); - const tryPermit = allowPermit && permitSupported === true; + const tryPermit = allowPermit && permitSupported === true && !isSmartContractWallet; const usePermit = tryPermit && walletApprovalMethodPreference === ApprovalMethod.PERMIT; const approval = async () => { diff --git a/src/components/transactions/Swap/errors/shared/FlashLoanDisabledBlockingGuard.tsx b/src/components/transactions/Swap/errors/shared/FlashLoanDisabledBlockingGuard.tsx index 7de6b63ba7..b9d9283f44 100644 --- a/src/components/transactions/Swap/errors/shared/FlashLoanDisabledBlockingGuard.tsx +++ b/src/components/transactions/Swap/errors/shared/FlashLoanDisabledBlockingGuard.tsx @@ -70,6 +70,7 @@ export const FlashLoanDisabledBlockingGuard = ({ state.provider, state.useFlashloan, state.sourceReserve?.reserve?.flashLoanEnabled, + state.destinationReserve?.reserve?.flashLoanEnabled, state.error, ]);