UnStakeActions.tsx
1 import { ProtocolAction } from '@aave/contract-helpers'; 2 import { Trans } from '@lingui/macro'; 3 import { BoxProps } from '@mui/material'; 4 import { useRootStore } from 'src/store/root'; 5 6 import { useTransactionHandler } from '../../../helpers/useTransactionHandler'; 7 import { TxActionsWrapper } from '../TxActionsWrapper'; 8 9 export interface UnStakeActionProps extends BoxProps { 10 amountToUnStake: string; 11 isWrongNetwork: boolean; 12 customGasPrice?: string; 13 symbol: string; 14 blocked: boolean; 15 selectedToken: string; 16 } 17 18 export const UnStakeActions = ({ 19 amountToUnStake, 20 isWrongNetwork, 21 sx, 22 symbol, 23 blocked, 24 selectedToken, 25 ...props 26 }: UnStakeActionProps) => { 27 const redeem = useRootStore((state) => state.redeem); 28 29 const { action, loadingTxns, mainTxState, requiresApproval } = useTransactionHandler({ 30 tryPermit: false, 31 handleGetTxns: async () => { 32 return redeem(selectedToken)(amountToUnStake.toString()); 33 }, 34 skip: !amountToUnStake || parseFloat(amountToUnStake) === 0 || blocked, 35 deps: [amountToUnStake], 36 protocolAction: ProtocolAction.unstake, 37 eventTxInfo: { 38 amount: amountToUnStake, 39 assetName: selectedToken, 40 }, 41 }); 42 43 return ( 44 <TxActionsWrapper 45 requiresApproval={requiresApproval} 46 blocked={blocked} 47 preparingTransactions={loadingTxns} 48 handleAction={action} 49 requiresAmount 50 amount={amountToUnStake} 51 actionText={<Trans>Unstake {symbol}</Trans>} 52 actionInProgressText={<Trans>Unstaking {symbol}</Trans>} 53 mainTxState={mainTxState} 54 isWrongNetwork={isWrongNetwork} 55 sx={sx} 56 {...props} 57 /> 58 ); 59 };