From cd9e63b9f43faa19c44244fd55aa44783b44f5b1 Mon Sep 17 00:00:00 2001 From: therealemjy Date: Wed, 3 Jun 2026 16:14:04 +0200 Subject: [PATCH] fix: withdraw flow of Pendle vault --- .changeset/wet-impalas-dance.md | 5 ++ .../PositionTab/WithdrawForm/index.tsx | 5 ++ .../TransactionForm/__tests__/index.spec.tsx | 79 ++++++++++++++++++- .../VaultCard/TransactionForm/index.tsx | 28 +++++-- apps/evm/src/libs/errors/handleError/index.ts | 2 +- 5 files changed, 109 insertions(+), 10 deletions(-) create mode 100644 .changeset/wet-impalas-dance.md diff --git a/.changeset/wet-impalas-dance.md b/.changeset/wet-impalas-dance.md new file mode 100644 index 0000000000..c343b2813d --- /dev/null +++ b/.changeset/wet-impalas-dance.md @@ -0,0 +1,5 @@ +--- +"@venusprotocol/evm": patch +--- + +fix Pendle vault withdraw flow diff --git a/apps/evm/src/containers/VaultCard/PendleVaultModal/PositionTab/WithdrawForm/index.tsx b/apps/evm/src/containers/VaultCard/PendleVaultModal/PositionTab/WithdrawForm/index.tsx index 49514748a4..16632f74d8 100644 --- a/apps/evm/src/containers/VaultCard/PendleVaultModal/PositionTab/WithdrawForm/index.tsx +++ b/apps/evm/src/containers/VaultCard/PendleVaultModal/PositionTab/WithdrawForm/index.tsx @@ -18,6 +18,7 @@ import { formatTokensToReadableValue, } from 'utilities'; +import { useGetContractAddress } from 'hooks/useGetContractAddress'; import { VError } from 'libs/errors'; import { useAccountAddress } from 'libs/wallet'; import type { PendleVaultAction } from '../../types'; @@ -36,6 +37,8 @@ export const WithdrawForm: React.FC = ({ vault, onClose }) => const { t, Trans } = useTranslation(); const now = useNow(); + const { address: pendlePtVaultAddress } = useGetContractAddress({ name: 'PendlePtVault' }); + const hasMatured = !!vault.maturityDate && now.getTime() > vault.maturityDate.getTime(); const actionMode: PendleVaultAction = hasMatured ? 'redeemAtMaturity' : 'withdraw'; @@ -159,6 +162,8 @@ export const WithdrawForm: React.FC = ({ vault, onClose }) => swapFromToken={actionMode !== 'redeemAtMaturity' ? fromToken : undefined} swapToToken={actionMode !== 'redeemAtMaturity' ? toToken : undefined} isLoading={isGetSwapQuoteLoading} + delegateeAddress={pendlePtVaultAddress} + vaultPoolComptrollerContractAddress={vault.poolComptrollerContractAddress} footer={