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 551da80720..b9d9283f44 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; } @@ -70,6 +70,7 @@ export const FlashLoanDisabledBlockingGuard = ({ state.provider, state.useFlashloan, state.sourceReserve?.reserve?.flashLoanEnabled, + state.destinationReserve?.reserve?.flashLoanEnabled, state.error, ]);