/ src / components / transactions / UnStake / UnStakeActions.tsx
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  };